Client: Save/load state cleanup, sync with rest

This commit is contained in:
Donkie
2023-07-06 19:49:04 +02:00
parent f36eb86fc7
commit 30934842ff
4 changed files with 155 additions and 115 deletions

View 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]);
}