mirror of https://github.com/msgbyte/tailchat
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.
34 lines
873 B
TypeScript
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;
|