@alphanova/builder
Version:
A fully fledged facade that facilitates object manipulation
53 lines (52 loc) • 1.92 kB
JavaScript
import { createSyncStoragePersister } from "@tanstack/query-sync-storage-persister";
import { stateSorter } from "./Redux";
import { QueryClient } from "@tanstack/react-query";
export const queryClientSettings = {
defaultOptions: {
queries: {
staleTime: 10 * 60 * 60 * 1000,
cacheTime: 1000 * 60 * 60 * 24, // 24 hours
}
}
};
export const persistSettings = {
queryClient: new QueryClient(queryClientSettings),
persister: createSyncStoragePersister({
storage: window.localStorage,
serialize: data => {
return JSON.stringify({
...data, clientState: {
...data.clientState, queries: data.clientState.queries.map(query => ({
...query,
state: {
...query.state,
data: query.state.data.map(data => ({
key: data.id,
value: data.extract,
}))
}
}))
}
});
},
deserialize: data => {
const parsedData = JSON.parse(data);
return {
...parsedData,
clientState: {
...parsedData.clientState,
queries: parsedData.clientState.queries.map(query => ({
...query,
state: {
...query.state,
data: query.state.data.map(data => {
return stateSorter(query.queryKey.at(0) ?? 'ERROR SORTING STATE IN PERSIST QUERY').builder.instantiate(data.key, data.value);
})
}
}))
}
};
}
}),
maxAge: Infinity,
};