Client: Save/load state cleanup, sync with rest
This commit is contained in:
28
client/src/utils/saveload.ts
Normal file
28
client/src/utils/saveload.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import React from "react";
|
||||
import { CrudFilter, CrudSort } from "@refinedev/core";
|
||||
|
||||
interface TableState {
|
||||
sorters: CrudSort[];
|
||||
filters: CrudFilter[];
|
||||
}
|
||||
|
||||
export function useInitialTableState(tableId: string): TableState {
|
||||
const [initialState] = React.useState(() => {
|
||||
const savedSorters = localStorage.getItem(`${tableId}-sorters`);
|
||||
const savedFilters = localStorage.getItem(`${tableId}-filters`);
|
||||
const sorters = savedSorters ? JSON.parse(savedSorters) : [{ field: "id", order: "asc" }];
|
||||
const filters = savedFilters ? JSON.parse(savedFilters) : [];
|
||||
return { sorters, filters };
|
||||
});
|
||||
return initialState;
|
||||
}
|
||||
|
||||
export function useStoreInitialState(tableId: string, state: TableState) {
|
||||
React.useEffect(() => {
|
||||
localStorage.setItem(`${tableId}-sorters`, JSON.stringify(state.sorters));
|
||||
}, [tableId, state.sorters]);
|
||||
|
||||
React.useEffect(() => {
|
||||
localStorage.setItem(`${tableId}-filters`, JSON.stringify(state.filters));
|
||||
}, [tableId, state.filters]);
|
||||
}
|
||||
Reference in New Issue
Block a user