import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
|
|
|
import { RootState } from "app/store";
|
|
|
|
export enum LoginStatus {
|
|
Unknown,
|
|
Fetching,
|
|
Pending,
|
|
Success,
|
|
Failure,
|
|
}
|
|
|
|
export interface LoginSliceState {
|
|
status: LoginStatus;
|
|
username?: string;
|
|
motd?: string;
|
|
reason?: string;
|
|
}
|
|
|
|
const initialState: LoginSliceState = {
|
|
status: LoginStatus.Unknown,
|
|
};
|
|
|
|
export const loginSlice = createSlice({
|
|
name: "login",
|
|
initialState,
|
|
reducers: {
|
|
loginFetchStatus: (state: LoginSliceState) => {
|
|
state.status = LoginStatus.Fetching;
|
|
},
|
|
loginSetState: (
|
|
state: LoginSliceState,
|
|
action: PayloadAction<LoginSliceState>
|
|
) => {
|
|
state = action.payload;
|
|
},
|
|
},
|
|
});
|
|
|
|
export const { loginFetchStatus, loginSetState } = loginSlice.actions;
|
|
|
|
export const selectLogin = (state: RootState) => state.login;
|
|
|
|
export default loginSlice.reducer;
|