You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/client/shared/redux/slices/global.ts

45 lines
1.0 KiB
TypeScript

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import type { GlobalConfig } from '../../model/config';
export const defaultGlobalConfig: GlobalConfig = {
uploadFileLimit: 1 * 1024 * 1024,
emailVerification: false,
};
export interface GlobalState {
/**
* 网络状态
*/
networkStatus: 'initial' | 'connected' | 'reconnecting' | 'disconnected';
reconnectNum: number;
config: GlobalConfig;
}
const initialState: GlobalState = {
networkStatus: 'initial',
reconnectNum: 0,
config: defaultGlobalConfig,
};
const globalSlice = createSlice({
name: 'global',
initialState,
reducers: {
setNetworkStatus(
state,
action: PayloadAction<GlobalState['networkStatus']>
) {
state.networkStatus = action.payload;
},
incReconnectNum(state) {
state.reconnectNum += 1;
},
setGlobalConfig(state, action: PayloadAction<GlobalConfig>) {
state.config = action.payload;
},
},
});
export const globalActions = globalSlice.actions;
export const globalReducer = globalSlice.reducer;