blob: 433447551d5b134cb5ad57ab042b783fbd9a2106 [file] [log] [blame]
San3yuan4d0e8032025-04-04 17:21:40 +08001import { createSlice } from '@reduxjs/toolkit';
San3yuana2ee30b2025-06-05 21:20:17 +08002import { isTokenExpired } from '@/utils/jwt';
阳菜,放晴!ce4a6412025-06-08 14:35:23 +08003import { getUserInfo } from '@/api/user';
San3yuan4d0e8032025-04-04 17:21:40 +08004
5interface UserState {
San3yuan6f2ed692025-04-16 20:24:49 +08006 userId: string;
San3yuan4d0e8032025-04-04 17:21:40 +08007 userName: string;
8 role: string;
9 isLogin: boolean;
10 uploadTraffic: number;
11 downloadTraffic: number;
12 downloadPoints: number;
13 avatar: string;
14}
15
16const initialState: UserState = {
San3yuan6f2ed692025-04-16 20:24:49 +080017 userId: '',
San3yuan4d0e8032025-04-04 17:21:40 +080018 userName: '',
19 role: '',
San3yuana2ee30b2025-06-05 21:20:17 +080020 isLogin: localStorage.getItem('token')&& isTokenExpired(localStorage.getItem('token') as string) ==='0' ? true : false,
San3yuan4d0e8032025-04-04 17:21:40 +080021 uploadTraffic: 0,
22 downloadTraffic: 0,
23 downloadPoints: 0,
24 avatar: '',
25};
26
27
28export const userSlice = createSlice({
29 name: 'user',
30 initialState,
31 reducers: {
32 login: (state, action) => {
San3yuanff75c542025-06-06 20:30:52 +080033 console.log(action.payload)
San3yuan6f2ed692025-04-16 20:24:49 +080034 localStorage.setItem('token', action.payload.token);
35 state.isLogin = true;
36 },
37 getUserInfo: (state, action) => {
阳菜,放晴!ce4a6412025-06-08 14:35:23 +080038 console.log(action);
San3yuan4d0e8032025-04-04 17:21:40 +080039 state.userId = action.payload.userId;
40 state.userName = action.payload.userName;
41 state.role = action.payload.role;
San3yuan4d0e8032025-04-04 17:21:40 +080042 state.uploadTraffic = action.payload.uploadTraffic;
43 state.downloadTraffic = action.payload.downloadTraffic;
44 state.downloadPoints = action.payload.downloadPoints;
45 state.avatar = action.payload.avatar;
San3yuan4d0e8032025-04-04 17:21:40 +080046 },
47 logout: (state) => {
San3yuan6f2ed692025-04-16 20:24:49 +080048 state.userId = '';
San3yuan4d0e8032025-04-04 17:21:40 +080049 state.userName = '';
50 state.role = '';
51 state.isLogin = false;
52 state.uploadTraffic = 0;
53 state.downloadTraffic = 0;
54 state.downloadPoints = 0;
55 state.avatar = '';
56 },
57 updateTraffic: (state, action) => {
58 state.uploadTraffic = action.payload.uploadTraffic;
59 state.downloadTraffic = action.payload.downloadTraffic;
60 state.downloadPoints = action.payload.downloadPoints;
61 },
62 updateAvatar: (state, action) => {
63 state.avatar = action.payload.avatar;
64 }
65 },
66
67});
68
69export const { login, logout, updateTraffic } = userSlice.actions;
70export default userSlice.reducer;