feat: 增加网络状态的全局管理

pull/81/head
moonrailgun 3 years ago
parent 61aefad27a
commit d55993ca13

@ -169,7 +169,12 @@ export {
useUserId, useUserId,
useUserInfoList, useUserInfoList,
} from './redux/hooks/useUserInfo'; } from './redux/hooks/useUserInfo';
export { userActions, groupActions, uiActions } from './redux/slices'; export {
userActions,
groupActions,
uiActions,
globalActions,
} from './redux/slices';
export type { ChatConverseState } from './redux/slices/chat'; export type { ChatConverseState } from './redux/slices/chat';
export { setupRedux } from './redux/setup'; export { setupRedux } from './redux/setup';
export { createStore, ReduxProvider } from './redux/store'; export { createStore, ReduxProvider } from './redux/store';

@ -1,6 +1,11 @@
import type { AppStore } from './store'; import type { AppStore } from './store';
import type { AppSocket } from '../api/socket'; import type { AppSocket } from '../api/socket';
import { chatActions, groupActions, userActions } from './slices'; import {
chatActions,
globalActions,
groupActions,
userActions,
} from './slices';
import type { FriendRequest } from '../model/friend'; import type { FriendRequest } from '../model/friend';
import { getCachedConverseInfo } from '../cache/cache'; import { getCachedConverseInfo } from '../cache/cache';
import type { GroupInfo } from '../model/group'; import type { GroupInfo } from '../model/group';
@ -18,12 +23,14 @@ import {
fetchUserAck, fetchUserAck,
} from '../model/converse'; } from '../model/converse';
import { appendUserDMConverse } from '../model/user'; import { appendUserDMConverse } from '../model/user';
import { sharedEvent } from '../event';
/** /**
* Redux * Redux
* Redux * Redux
*/ */
export function setupRedux(socket: AppSocket, store: AppStore) { export function setupRedux(socket: AppSocket, store: AppStore) {
store.dispatch(globalActions.setNetworkStatus('initial'));
initial(socket, store); initial(socket, store);
listenNotify(socket, store); listenNotify(socket, store);
@ -32,6 +39,10 @@ export function setupRedux(socket: AppSocket, store: AppStore) {
console.warn('因为断线重连触发重新同步远程数据'); console.warn('因为断线重连触发重新同步远程数据');
initial(socket, store); initial(socket, store);
}); });
sharedEvent.on('updateNetworkStatus', (status) => {
store.dispatch(globalActions.setNetworkStatus(status));
});
} }
/** /**

@ -0,0 +1,28 @@
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
export interface GlobalState {
/**
*
*/
networkStatus: 'initial' | 'connected' | 'reconnecting' | 'disconnected';
}
const initialState: GlobalState = {
networkStatus: 'initial',
};
const globalSlice = createSlice({
name: 'global',
initialState,
reducers: {
setNetworkStatus(
state,
action: PayloadAction<GlobalState['networkStatus']>
) {
state.networkStatus = action.payload;
},
},
});
export const globalActions = globalSlice.actions;
export const globalReducer = globalSlice.reducer;

@ -3,8 +3,10 @@ import { userReducer } from './user';
import { chatReducer } from './chat'; import { chatReducer } from './chat';
import { groupReducer } from './group'; import { groupReducer } from './group';
import { uiReducer } from './ui'; import { uiReducer } from './ui';
import { globalReducer } from './global';
export const appReducer = combineReducers({ export const appReducer = combineReducers({
global: globalReducer,
user: userReducer, user: userReducer,
chat: chatReducer, chat: chatReducer,
group: groupReducer, group: groupReducer,
@ -13,6 +15,7 @@ export const appReducer = combineReducers({
export type AppState = ReturnType<typeof appReducer>; export type AppState = ReturnType<typeof appReducer>;
export { globalActions } from './global';
export { userActions } from './user'; export { userActions } from './user';
export { chatActions } from './chat'; export { chatActions } from './chat';
export { groupActions } from './group'; export { groupActions } from './group';

@ -38,7 +38,6 @@ export const GlobalTemporaryTip: React.FC = React.memo(() => {
</Button> </Button>
</Trans> </Trans>
{t('')}
</div> </div>
) : null; ) : null;
}); });

Loading…
Cancel
Save