mirror of
https://github.com/PlayEdu/frontend.git
synced 2025-07-19 20:01:55 +08:00
59 lines
1.4 KiB
TypeScript
59 lines
1.4 KiB
TypeScript
import { createSlice } from "@reduxjs/toolkit";
|
|
import {
|
|
getDepKey,
|
|
clearDepKey,
|
|
clearDepName,
|
|
setDepName,
|
|
clearToken,
|
|
} from "../../utils/index";
|
|
|
|
type UserStoreInterface = {
|
|
user: null;
|
|
departments: string[];
|
|
currentDepId: number;
|
|
isLogin: boolean;
|
|
};
|
|
|
|
let defaultValue: UserStoreInterface = {
|
|
user: null,
|
|
departments: [],
|
|
currentDepId: Number(getDepKey()) || 0,
|
|
isLogin: false,
|
|
};
|
|
|
|
const loginUserSlice = createSlice({
|
|
name: "loginUser",
|
|
initialState: {
|
|
value: defaultValue,
|
|
},
|
|
reducers: {
|
|
loginAction(stage, e) {
|
|
stage.value.user = e.payload.user;
|
|
stage.value.departments = e.payload.departments;
|
|
stage.value.isLogin = true;
|
|
if (e.payload.departments.length > 0 && stage.value.currentDepId === 0) {
|
|
stage.value.currentDepId = e.payload.departments[0].id;
|
|
setDepName(e.payload.departments[0].name);
|
|
}
|
|
},
|
|
logoutAction(stage) {
|
|
stage.value.user = null;
|
|
stage.value.departments = [];
|
|
stage.value.isLogin = false;
|
|
stage.value.currentDepId = 0;
|
|
clearToken();
|
|
clearDepKey();
|
|
clearDepName();
|
|
},
|
|
saveCurrentDepId(stage, e) {
|
|
stage.value.currentDepId = e.payload;
|
|
},
|
|
},
|
|
});
|
|
|
|
export default loginUserSlice.reducer;
|
|
export const { loginAction, logoutAction, saveCurrentDepId } =
|
|
loginUserSlice.actions;
|
|
|
|
export type { UserStoreInterface };
|