blob: bbed95ee90e244df321d9150d51b1f1207d5107e [file] [log] [blame]
San3yuan4d0e8032025-04-04 17:21:40 +08001import { createSlice } from '@reduxjs/toolkit';
2
3interface UserState {
San3yuan6f2ed692025-04-16 20:24:49 +08004 userId: string;
San3yuan4d0e8032025-04-04 17:21:40 +08005 userName: string;
6 role: string;
7 isLogin: boolean;
8 uploadTraffic: number;
9 downloadTraffic: number;
10 downloadPoints: number;
11 avatar: string;
12}
13
14const initialState: UserState = {
San3yuan6f2ed692025-04-16 20:24:49 +080015 userId: '',
San3yuan4d0e8032025-04-04 17:21:40 +080016 userName: '',
17 role: '',
18 isLogin: false,
19 uploadTraffic: 0,
20 downloadTraffic: 0,
21 downloadPoints: 0,
22 avatar: '',
23};
24
25
26export const userSlice = createSlice({
27 name: 'user',
28 initialState,
29 reducers: {
30 login: (state, action) => {
San3yuan6f2ed692025-04-16 20:24:49 +080031 localStorage.setItem('token', action.payload.token);
32 state.isLogin = true;
33 },
34 getUserInfo: (state, action) => {
San3yuan4d0e8032025-04-04 17:21:40 +080035 state.userId = action.payload.userId;
36 state.userName = action.payload.userName;
37 state.role = action.payload.role;
San3yuan4d0e8032025-04-04 17:21:40 +080038 state.uploadTraffic = action.payload.uploadTraffic;
39 state.downloadTraffic = action.payload.downloadTraffic;
40 state.downloadPoints = action.payload.downloadPoints;
41 state.avatar = action.payload.avatar;
San3yuan03ab0642025-04-29 18:00:25 +080042 console.log(state);
San3yuan4d0e8032025-04-04 17:21:40 +080043 },
44 logout: (state) => {
San3yuan6f2ed692025-04-16 20:24:49 +080045 state.userId = '';
San3yuan4d0e8032025-04-04 17:21:40 +080046 state.userName = '';
47 state.role = '';
48 state.isLogin = false;
49 state.uploadTraffic = 0;
50 state.downloadTraffic = 0;
51 state.downloadPoints = 0;
52 state.avatar = '';
53 },
54 updateTraffic: (state, action) => {
55 state.uploadTraffic = action.payload.uploadTraffic;
56 state.downloadTraffic = action.payload.downloadTraffic;
57 state.downloadPoints = action.payload.downloadPoints;
58 },
59 updateAvatar: (state, action) => {
60 state.avatar = action.payload.avatar;
61 }
62 },
63
64});
65
66export const { login, logout, updateTraffic } = userSlice.actions;
67export default userSlice.reducer;