blob: 61cacb8fb37fb4bdcf85d85e08d2482bc2e9d49b [file] [log] [blame]
import { createSlice } from '@reduxjs/toolkit';
interface UserState {
userId: string;
userName: string;
role: string;
isLogin: boolean;
uploadTraffic: number;
downloadTraffic: number;
downloadPoints: number;
avatar: string;
}
const initialState: UserState = {
userId: '',
userName: '',
role: '',
isLogin: false,
uploadTraffic: 0,
downloadTraffic: 0,
downloadPoints: 0,
avatar: '',
};
export const userSlice = createSlice({
name: 'user',
initialState,
reducers: {
login: (state, action) => {
localStorage.setItem('token', action.payload.token);
state.isLogin = true;
},
getUserInfo: (state, action) => {
state.userId = action.payload.userId;
state.userName = action.payload.userName;
state.role = action.payload.role;
state.uploadTraffic = action.payload.uploadTraffic;
state.downloadTraffic = action.payload.downloadTraffic;
state.downloadPoints = action.payload.downloadPoints;
state.avatar = action.payload.avatar;
},
logout: (state) => {
state.userId = '';
state.userName = '';
state.role = '';
state.isLogin = false;
state.uploadTraffic = 0;
state.downloadTraffic = 0;
state.downloadPoints = 0;
state.avatar = '';
},
updateTraffic: (state, action) => {
state.uploadTraffic = action.payload.uploadTraffic;
state.downloadTraffic = action.payload.downloadTraffic;
state.downloadPoints = action.payload.downloadPoints;
},
updateAvatar: (state, action) => {
state.avatar = action.payload.avatar;
}
},
});
export const { login, logout, updateTraffic } = userSlice.actions;
export default userSlice.reducer;