Save perPage selection in localstorage

This commit is contained in:
Deluan 2020-05-14 23:05:14 -04:00
parent a340b62fdf
commit 9490374faa
2 changed files with 44 additions and 1 deletions

View File

@ -1,10 +1,11 @@
import { applyMiddleware, combineReducers, compose, createStore } from 'redux'
import { routerMiddleware, connectRouter } from 'connected-react-router'
import { connectRouter, routerMiddleware } from 'connected-react-router'
import createSagaMiddleware from 'redux-saga'
import { all, fork } from 'redux-saga/effects'
import { adminReducer, adminSaga, USER_LOGOUT } from 'react-admin'
import throttle from 'lodash.throttle'
import { loadState, saveState } from './persistState'
import { pruneResources } from './pruneResources'
export default ({
authProvider,
@ -50,6 +51,9 @@ export default ({
throttle(() => {
const state = store.getState()
saveState({
admin: {
resources: pruneResources(state),
},
theme: state.theme,
queue: state.queue,
albumView: state.albumView,

View File

@ -0,0 +1,39 @@
function getParts(object, fragments) {
if (!object) {
return object
}
const [part, ...rest] = fragments.split('.')
return Object.assign(
{},
...Object.entries(object)
.filter(([key]) => key.toLowerCase().includes(part))
.map(([k, v]) => {
if (!rest.length) return { [k]: v }
const parts = v && typeof v === 'object' && getParts(v, rest.join('.'))
if (parts) return { [k]: parts }
return undefined
})
)
}
const pruneResource = (resource) => ({
props: {},
list: {
param: {
perPage: getParts(resource.list.param, 'perPage'),
filter: {},
},
selectedIds: [],
},
})
export const pruneResources = (state) => {
return Object.keys(state.admin.resources).reduce(
(acc, cur) => ({
...acc,
[cur]: pruneResource(state.admin.resources[cur]),
}),
{}
)
}