first commit
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { PayloadAction, createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
export interface IDataLoginStorage {
|
||||
usernameStorage: string;
|
||||
passwordStorage: string;
|
||||
}
|
||||
|
||||
export interface AuthState {
|
||||
token: string | null;
|
||||
isLogin: boolean;
|
||||
dataLoginStorage: IDataLoginStorage | null;
|
||||
}
|
||||
|
||||
const initialState: AuthState = {
|
||||
token: null,
|
||||
isLogin: false,
|
||||
dataLoginStorage: null,
|
||||
};
|
||||
|
||||
export const authSlice = createSlice({
|
||||
name: "auth",
|
||||
initialState,
|
||||
reducers: {
|
||||
setToken: (state, action: PayloadAction<string | null>) => {
|
||||
state.token = action?.payload;
|
||||
},
|
||||
setStateLogin: (state, action: { payload: boolean }) => {
|
||||
state.isLogin = action?.payload;
|
||||
},
|
||||
logout: (state) => {
|
||||
state.isLogin = false;
|
||||
state.token = null;
|
||||
},
|
||||
setDataLoginStorage: (
|
||||
state,
|
||||
action: PayloadAction<IDataLoginStorage | null>,
|
||||
) => {
|
||||
state.dataLoginStorage = action?.payload;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const { setToken, setStateLogin, logout, setDataLoginStorage } =
|
||||
authSlice.actions;
|
||||
export default authSlice.reducer;
|
||||
@@ -0,0 +1,28 @@
|
||||
import { PayloadAction, createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
export interface SiteState {
|
||||
loading: boolean;
|
||||
isRememberPassword: boolean;
|
||||
}
|
||||
|
||||
const initialState: SiteState = {
|
||||
loading: true,
|
||||
isRememberPassword: false,
|
||||
};
|
||||
|
||||
export const siteSlice = createSlice({
|
||||
name: "site",
|
||||
initialState,
|
||||
reducers: {
|
||||
setLoading: (state, action: PayloadAction<boolean>) => {
|
||||
state.loading = action?.payload;
|
||||
},
|
||||
setRememberPassword: (state, action: PayloadAction<boolean>) => {
|
||||
state.isRememberPassword = action.payload;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const { setLoading, setRememberPassword } = siteSlice.actions;
|
||||
// Action creators are generated for each case reducer function
|
||||
export default siteSlice.reducer;
|
||||
@@ -0,0 +1,31 @@
|
||||
import { PayloadAction, createSlice } from "@reduxjs/toolkit";
|
||||
|
||||
interface IUser {
|
||||
accessToken: string;
|
||||
refreshToken: string;
|
||||
accessExpiresAt: string;
|
||||
refreshExpiresAt: string;
|
||||
avatar: string;
|
||||
fullname: string;
|
||||
}
|
||||
|
||||
export interface UserState {
|
||||
infoUser: IUser | null;
|
||||
}
|
||||
|
||||
const initialState: UserState = {
|
||||
infoUser: null,
|
||||
};
|
||||
|
||||
export const userSlice = createSlice({
|
||||
name: "user",
|
||||
initialState,
|
||||
reducers: {
|
||||
setInfoUser: (state, action: PayloadAction<IUser | null>) => {
|
||||
state.infoUser = action?.payload;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const { setInfoUser } = userSlice.actions;
|
||||
export default userSlice.reducer;
|
||||
@@ -0,0 +1,21 @@
|
||||
import { combineReducers } from "redux";
|
||||
import { configureStore } from "@reduxjs/toolkit";
|
||||
|
||||
import siteReducer from "./reducer/site";
|
||||
import authReducer from "./reducer/auth";
|
||||
import userReducer from "./reducer/user";
|
||||
|
||||
const reducers = combineReducers({
|
||||
site: siteReducer,
|
||||
auth: authReducer,
|
||||
user: userReducer,
|
||||
});
|
||||
|
||||
export const store = configureStore({
|
||||
reducer: reducers,
|
||||
devTools: process.env.NODE_ENV !== "production",
|
||||
middleware: (getDefaultMiddleware) => getDefaultMiddleware(),
|
||||
});
|
||||
|
||||
export type RootState = ReturnType<typeof store.getState>;
|
||||
export type AppDispatch = typeof store.dispatch;
|
||||
Reference in New Issue
Block a user