diff options
Diffstat (limited to 'extension/react-app/src/redux')
| -rw-r--r-- | extension/react-app/src/redux/selectors/uiStateSelectors.ts | 5 | ||||
| -rw-r--r-- | extension/react-app/src/redux/slices/uiStateSlice.ts | 24 | ||||
| -rw-r--r-- | extension/react-app/src/redux/store.ts | 6 | 
3 files changed, 35 insertions, 0 deletions
| diff --git a/extension/react-app/src/redux/selectors/uiStateSelectors.ts b/extension/react-app/src/redux/selectors/uiStateSelectors.ts new file mode 100644 index 00000000..7ebc9338 --- /dev/null +++ b/extension/react-app/src/redux/selectors/uiStateSelectors.ts @@ -0,0 +1,5 @@ +import { RootStore } from "../store"; + +const selectBottomMessage = (state: RootStore) => state.uiState.bottomMessage; + +export { selectBottomMessage }; diff --git a/extension/react-app/src/redux/slices/uiStateSlice.ts b/extension/react-app/src/redux/slices/uiStateSlice.ts new file mode 100644 index 00000000..837d19e9 --- /dev/null +++ b/extension/react-app/src/redux/slices/uiStateSlice.ts @@ -0,0 +1,24 @@ +import { createSlice } from "@reduxjs/toolkit"; + +export const uiStateSlice = createSlice({ +  name: "uiState", +  initialState: { +    bottomMessage: undefined, +    bottomMessageCloseTimeout: undefined, +  }, +  reducers: { +    setBottomMessage: (state, action) => { +      state.bottomMessage = action.payload; +    }, +    setBottomMessageCloseTimeout: (state, action) => { +      if (state.bottomMessageCloseTimeout) { +        clearTimeout(state.bottomMessageCloseTimeout); +      } +      state.bottomMessageCloseTimeout = action.payload; +    }, +  }, +}); + +export const { setBottomMessage, setBottomMessageCloseTimeout } = +  uiStateSlice.actions; +export default uiStateSlice.reducer; diff --git a/extension/react-app/src/redux/store.ts b/extension/react-app/src/redux/store.ts index b6eb55b3..d49513e5 100644 --- a/extension/react-app/src/redux/store.ts +++ b/extension/react-app/src/redux/store.ts @@ -3,6 +3,7 @@ import debugStateReducer from "./slices/debugContexSlice";  import chatReducer from "./slices/chatSlice";  import configReducer from "./slices/configSlice";  import miscReducer from "./slices/miscSlice"; +import uiStateReducer from "./slices/uiStateSlice";  import { RangeInFile, SerializedDebugContext } from "../../../src/client";  export interface ChatMessage { @@ -31,6 +32,10 @@ export interface RootStore {    misc: {      highlightedCode: RangeInFile | undefined;    }; +  uiState: { +    bottomMessage: JSX.Element | undefined; +    bottomMessageCloseTimeout: NodeJS.Timeout | undefined; +  };  }  const store = configureStore({ @@ -39,6 +44,7 @@ const store = configureStore({      chat: chatReducer,      config: configReducer,      misc: miscReducer, +    uiState: uiStateReducer,    },  }); | 
