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/shared/redux/slices/user.ts

34 lines
873 B
TypeScript

import { createSlice, PayloadAction } from '@reduxjs/toolkit';
import type {
FriendRequest,
UserBaseInfo,
UserLoginInfo,
} from '../../model/user';
interface UserState {
info: UserLoginInfo | null;
friends: UserBaseInfo[];
friendRequests: FriendRequest[];
}
const initialState: UserState = { info: null, friends: [], friendRequests: [] };
const userSlice = createSlice({
name: 'user',
initialState,
reducers: {
setUserInfo(state, action: PayloadAction<UserLoginInfo>) {
state.info = action.payload;
},
setFriendList(state, action: PayloadAction<UserBaseInfo[]>) {
state.friends = action.payload;
},
setFriendRequests(state, action: PayloadAction<FriendRequest[]>) {
state.friendRequests = action.payload;
},
},
});
export const userActions = userSlice.actions;
export const userReducer = userSlice.reducer;