김장현
8 months ago
13 changed files with 129 additions and 133 deletions
@ -0,0 +1,41 @@ |
|||||||
|
import { createSlice } from '@reduxjs/toolkit'; |
||||||
|
import { initMenuModel } from './layoutState'; |
||||||
|
|
||||||
|
const layoutSlice = createSlice({ |
||||||
|
name: 'layoutSlice', |
||||||
|
initialState: initMenuModel, |
||||||
|
reducers: { |
||||||
|
dispatchTopMenu: (state, action) => { |
||||||
|
const topMenuCd = action.payload; |
||||||
|
state.topMenuCd = topMenuCd; |
||||||
|
}, |
||||||
|
handlerContentWidth: (state, action) => { |
||||||
|
const value = action.payload; |
||||||
|
state.contentWidth = value; |
||||||
|
}, |
||||||
|
handlerMunuCollapsed: (state, action) => { |
||||||
|
const value = action.payload; |
||||||
|
localStorage.setItem('menuCollapsed', value); |
||||||
|
state.menuCollapsed = value; |
||||||
|
}, |
||||||
|
handlerMenuHidden: (state, action) => { |
||||||
|
const value = action.payload; |
||||||
|
state.menuHidden = value; |
||||||
|
}, |
||||||
|
handlerRTL: (state, action) => { |
||||||
|
const value = action.payload; |
||||||
|
state.isRTL = value; |
||||||
|
} |
||||||
|
}, |
||||||
|
extraReducers: {} |
||||||
|
}); |
||||||
|
|
||||||
|
export const { |
||||||
|
dispatchTopMenu, |
||||||
|
handlerContentWidth, |
||||||
|
handlerMenuHidden, |
||||||
|
handlerMunuCollapsed, |
||||||
|
handlerRTL |
||||||
|
} = layoutSlice.actions; |
||||||
|
|
||||||
|
export const layoutReducer = layoutSlice.reducer; |
@ -0,0 +1,23 @@ |
|||||||
|
import themeConfig from '@src/configs/themeConfig'; |
||||||
|
|
||||||
|
const initialMenuCollapsed = () => { |
||||||
|
const item = window.localStorage.getItem('menuCollapsed'); |
||||||
|
//** Parse stored json or if none return initialValue
|
||||||
|
return item ? JSON.parse(item) : themeConfig.layout.menu.isCollapsed; |
||||||
|
}; |
||||||
|
|
||||||
|
export const initMenuModel: MenuModelState = { |
||||||
|
topMenuCd: localStorage.getItem('topMenuCd') || 'basis', |
||||||
|
isRTL: themeConfig.layout.isRTL, |
||||||
|
menuCollapsed: initialMenuCollapsed(), |
||||||
|
menuHidden: themeConfig.layout.menu.isHidden, |
||||||
|
contentWidth: themeConfig.layout.contentWidth |
||||||
|
}; |
||||||
|
|
||||||
|
export interface MenuModelState { |
||||||
|
topMenuCd: string; |
||||||
|
isRTL: boolean; |
||||||
|
menuCollapsed: string; |
||||||
|
menuHidden: boolean; |
||||||
|
contentWidth: string; |
||||||
|
} |
@ -1,34 +0,0 @@ |
|||||||
// ** UseJWT import to get config
|
|
||||||
import useJwt from '@src/auth/jwt/useJwt' |
|
||||||
|
|
||||||
const config = useJwt.jwtConfig |
|
||||||
|
|
||||||
// ** Handle User Login
|
|
||||||
export const handleLogin = data => { |
|
||||||
return dispatch => { |
|
||||||
dispatch({ |
|
||||||
type: 'LOGIN', |
|
||||||
data, |
|
||||||
config, |
|
||||||
[config.storageTokenKeyName]: data[config.storageTokenKeyName], |
|
||||||
[config.storageRefreshTokenKeyName]: data[config.storageRefreshTokenKeyName] |
|
||||||
}) |
|
||||||
|
|
||||||
// ** Add to user, accessToken & refreshToken to localStorage
|
|
||||||
localStorage.setItem('userData', JSON.stringify(data)) |
|
||||||
localStorage.setItem(config.storageTokenKeyName, JSON.stringify(data.accessToken)) |
|
||||||
localStorage.setItem(config.storageRefreshTokenKeyName, JSON.stringify(data.refreshToken)) |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
// ** Handle User Logout
|
|
||||||
export const handleLogout = () => { |
|
||||||
return dispatch => { |
|
||||||
dispatch({ type: 'LOGOUT', [config.storageTokenKeyName]: null, [config.storageRefreshTokenKeyName]: null }) |
|
||||||
|
|
||||||
// ** Remove user, accessToken & refreshToken from localStorage
|
|
||||||
localStorage.removeItem('userData') |
|
||||||
localStorage.removeItem(config.storageTokenKeyName) |
|
||||||
localStorage.removeItem(config.storageRefreshTokenKeyName) |
|
||||||
} |
|
||||||
} |
|
@ -1,11 +0,0 @@ |
|||||||
// ** Handles Layout Content Width (full / boxed)
|
|
||||||
export const handleContentWidth = value => dispatch => dispatch({ type: 'HANDLE_CONTENT_WIDTH', value }) |
|
||||||
|
|
||||||
// ** Handles Menu Collapsed State (Bool)
|
|
||||||
export const handleMenuCollapsed = value => dispatch => dispatch({ type: 'HANDLE_MENU_COLLAPSED', value }) |
|
||||||
|
|
||||||
// ** Handles Menu Hidden State (Bool)
|
|
||||||
export const handleMenuHidden = value => dispatch => dispatch({ type: 'HANDLE_MENU_HIDDEN', value }) |
|
||||||
|
|
||||||
// ** Handles RTL (Bool)
|
|
||||||
export const handleRTL = value => dispatch => dispatch({ type: 'HANDLE_RTL', value }) |
|
@ -1,26 +0,0 @@ |
|||||||
// ** Initial State
|
|
||||||
const initialState = { |
|
||||||
userData: {} |
|
||||||
}; |
|
||||||
|
|
||||||
const authReducer = (state = initialState, action) => { |
|
||||||
switch (action.type) { |
|
||||||
case 'LOGIN': |
|
||||||
return { |
|
||||||
...state, |
|
||||||
userData: action.data, |
|
||||||
[action.config.storageTokenKeyName]: |
|
||||||
action[action.config.storageTokenKeyName], |
|
||||||
[action.config.storageRefreshTokenKeyName]: |
|
||||||
action[action.config.storageRefreshTokenKeyName] |
|
||||||
}; |
|
||||||
case 'LOGOUT': |
|
||||||
const obj = { ...action }; |
|
||||||
delete obj.type; |
|
||||||
return { ...state, userData: {}, ...obj }; |
|
||||||
default: |
|
||||||
return state; |
|
||||||
} |
|
||||||
}; |
|
||||||
|
|
||||||
export default authReducer; |
|
@ -1,35 +0,0 @@ |
|||||||
// ** ThemeConfig Import
|
|
||||||
import themeConfig from '@configs/themeConfig' |
|
||||||
|
|
||||||
// ** Returns Initial Menu Collapsed State
|
|
||||||
const initialMenuCollapsed = () => { |
|
||||||
const item = window.localStorage.getItem('menuCollapsed') |
|
||||||
//** Parse stored json or if none return initialValue
|
|
||||||
return item ? JSON.parse(item) : themeConfig.layout.menu.isCollapsed |
|
||||||
} |
|
||||||
|
|
||||||
// ** Initial State
|
|
||||||
const initialState = { |
|
||||||
isRTL: themeConfig.layout.isRTL, |
|
||||||
menuCollapsed: initialMenuCollapsed(), |
|
||||||
menuHidden: themeConfig.layout.menu.isHidden, |
|
||||||
contentWidth: themeConfig.layout.contentWidth |
|
||||||
} |
|
||||||
|
|
||||||
const layoutReducer = (state = initialState, action) => { |
|
||||||
switch (action.type) { |
|
||||||
case 'HANDLE_CONTENT_WIDTH': |
|
||||||
return { ...state, contentWidth: action.value } |
|
||||||
case 'HANDLE_MENU_COLLAPSED': |
|
||||||
window.localStorage.setItem('menuCollapsed', action.value) |
|
||||||
return { ...state, menuCollapsed: action.value } |
|
||||||
case 'HANDLE_MENU_HIDDEN': |
|
||||||
return { ...state, menuHidden: action.value } |
|
||||||
case 'HANDLE_RTL': |
|
||||||
return { ...state, isRTL: action.value } |
|
||||||
default: |
|
||||||
return state |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
export default layoutReducer |
|
Loading…
Reference in new issue