PlayEdu-frontend/src/store/user/loginUserSlice.ts
2023-04-25 09:57:47 +08:00

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 };