prometheus/web/ui/mantine-ui/src/state/localStorageMiddleware.ts
Julius Volz 70221fc4a0 Build initial targets page
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-04-03 14:43:03 +02:00

34 lines
876 B
TypeScript

import { createListenerMiddleware } from "@reduxjs/toolkit";
import { AppDispatch, RootState } from "./store";
import {
localStorageKeyCollapsedPools,
localStorageKeyTargetFilters,
setCollapsedPools,
updateTargetFilters,
} from "./targetsPageSlice";
const persistToLocalStorage = <T>(key: string, value: T) => {
localStorage.setItem(key, JSON.stringify(value));
};
export const localStorageMiddleware = createListenerMiddleware();
const startAppListening = localStorageMiddleware.startListening.withTypes<
RootState,
AppDispatch
>();
startAppListening({
actionCreator: setCollapsedPools,
effect: ({ payload }) => {
persistToLocalStorage(localStorageKeyCollapsedPools, payload);
},
});
startAppListening({
actionCreator: updateTargetFilters,
effect: ({ payload }) => {
persistToLocalStorage(localStorageKeyTargetFilters, payload);
},
});