Redux -> add localstorage backup & state loader functionality
parent
08102edbd0
commit
f5747c51b0
|
|
@ -0,0 +1,38 @@
|
||||||
|
export const loadState = () => {
|
||||||
|
try {
|
||||||
|
const stateName = localStorage.getItem('user_key')
|
||||||
|
const serializedState = localStorage.getItem(stateName)
|
||||||
|
|
||||||
|
if (stateName === null) {
|
||||||
|
return {}
|
||||||
|
} else if (serializedState === null) {
|
||||||
|
return {}
|
||||||
|
} else {
|
||||||
|
return JSON.parse(serializedState)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const saveState = (state) => {
|
||||||
|
try {
|
||||||
|
|
||||||
|
const stateName = localStorage.getItem('user_key')
|
||||||
|
const serializedState = JSON.stringify(state)
|
||||||
|
|
||||||
|
if (stateName === null) {
|
||||||
|
return undefined
|
||||||
|
} else if (serializedState === null) {
|
||||||
|
return undefined
|
||||||
|
} else {
|
||||||
|
localStorage.setItem(stateName, serializedState)
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log('save in local storage error')
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
|
|
||||||
|
import { loadState, saveState } from './stateLoader'
|
||||||
|
import lodash from 'lodash'
|
||||||
|
|
||||||
|
import { modelCrudReducer } from './slices/modelCrudSlice'
|
||||||
|
import { renderCrudReducer } from './slices/renderCrudSlice'
|
||||||
|
import { renderWebsocketReducer } from './slices/renderWebsocketSlice'
|
||||||
|
import { userAuthReducer } from './slices/userAuthSlice'
|
||||||
|
import { userCrudReducer } from './slices/userCrudSlice'
|
||||||
|
|
||||||
|
|
||||||
|
let persistedState = loadState()
|
||||||
|
|
||||||
|
export const store = configureStore({
|
||||||
|
reducer: {
|
||||||
|
modelCrudReducer,
|
||||||
|
renderCrudReducer,
|
||||||
|
renderWebsocketReducer,
|
||||||
|
userAuthReducer,
|
||||||
|
userCrudReducer
|
||||||
|
},
|
||||||
|
preloadedState: persistedState
|
||||||
|
})
|
||||||
|
|
||||||
|
store.subscribe(() => {
|
||||||
|
saveState(store.getState());
|
||||||
|
});
|
||||||
|
|
||||||
|
store.subscribe(lodash.throttle(() => {
|
||||||
|
saveState(store.getState())
|
||||||
|
}, 100))
|
||||||
Loading…
Reference in New Issue