quikfrontend
Version:
A CLI tool for generating React-Vite frontend projects with pre-configured setups
68 lines (63 loc) • 2.29 kB
JavaScript
import { createSlice } from '@reduxjs/toolkit';
const localData = JSON.parse(localStorage.getItem('account'));
const Dstate = JSON.parse(localStorage.getItem('dState'));
const initialState = {
dashboardMenuState: true,
dashboardFeature: Dstate ? Dstate : 'Home',
account: localData ? localData : [],
isLoggedIn: localData ? localData.isLoggedIn : false,
profileData: [],
};
const DashboardSlice = createSlice({
initialState,
name: 'dashboard',
reducers: {
setOpenDMenu: (state, action) => {
state.dashboardMenuState = action.payload.dashboardMenuState;
},
setCloseDMenu: (state, action) => {
state.dashboardMenuState = action.payload.dashboardMenuState;
},
setDFeature: (state, action) => {
state.dashboardFeature = action.payload.dashboardFeature;
localStorage.setItem(
'dState',
JSON.stringify(action.payload.dashboardFeature),
);
},
setAccount: (state, action) => {
state.account = action.payload;
state.isLoggedIn = true;
const temp = { ...state.account, isLoggedIn: state.isLoggedIn };
localStorage.setItem('account', JSON.stringify(temp));
},
LogOut: (state, action) => {
state.account = [];
state.profileData = [];
state.isLoggedIn = false;
state.dashboardMenuState = false;
state.dashboardFeature = 'dashboard';
localStorage.clear();
},
setAccountAfterRegister: (state, action) => {
state.account = action.payload;
state.isLoggedIn = false;
const temp1 = { ...state.account, isLoggedIn: state.isLoggedIn };
localStorage.setItem('account', JSON.stringify(temp1));
},
},
});
export const {
setOpenDMenu,
setCloseDMenu,
setDFeature,
setAccount,
setAccountAfterRegister,
LogOut,
} = DashboardSlice.actions;
export const dashboardMenuState = (state) => state.dashboard.dashboardMenuState;
export const dashboardFeature = (state) => state.dashboard.dashboardFeature;
export const isUserLoggedIn = (state) => state.dashboard.isLoggedIn;
export const selectAccount = (state) => state.dashboard.account;
export const selectProfileData = (state) => state.dashboard.profileData;
export default DashboardSlice.reducer;