Files
dydx-v4-web/src/state/app.ts
T
Jared Vu ab454d5928 eslint (#26)
* eslint - hooks

* eslint - icons

* eslint - styles

* eslint - state
2023-09-12 09:42:38 -07:00

52 lines
1.3 KiB
TypeScript

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import { AbacusApiState } from '@/constants/abacus';
import { LocalStorageKey } from '@/constants/localStorage';
import {
DEFAULT_APP_ENVIRONMENT,
isValidDydxNetwork,
type DydxNetwork,
} from '@/constants/networks';
import { getLocalStorage } from '@/lib/localStorage';
export interface AppState {
apiState: AbacusApiState | undefined;
pageLoaded: boolean;
selectedNetwork: DydxNetwork;
}
const initialState: AppState = {
apiState: undefined,
pageLoaded: false,
selectedNetwork: getLocalStorage({
key: LocalStorageKey.SelectedNetwork,
defaultValue: DEFAULT_APP_ENVIRONMENT,
validateFn: isValidDydxNetwork,
}),
};
export const appSlice = createSlice({
name: 'App',
initialState,
reducers: {
initializeLocalization: (state: AppState) => ({
...state,
pageLoaded: true,
}),
initializeWebsocket: (state: AppState) => state,
setApiState: (state: AppState, action: PayloadAction<AbacusApiState>) => ({
...state,
apiState: action.payload,
}),
setSelectedNetwork: (state: AppState, action: PayloadAction<DydxNetwork>) => ({
...state,
selectedNetwork: action.payload,
}),
},
});
export const { initializeLocalization, initializeWebsocket, setApiState, setSelectedNetwork } =
appSlice.actions;