Solstice web interface.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

44 lines
895 B

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;