mirror of
https://github.com/prometheus/prometheus.git
synced 2025-08-06 14:17:12 +02:00
Fixes https://github.com/prometheus/prometheus/issues/16888 Signed-off-by: Julius Volz <julius.volz@gmail.com>
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
import { createListenerMiddleware } from "@reduxjs/toolkit";
|
|
import { AppDispatch, RootState } from "./store";
|
|
import {
|
|
localStorageKeyCollapsedPools as localStorageKeyTargetsPageCollapsedPools,
|
|
setCollapsedPools as targetsPageSetCollapsedPools,
|
|
} from "./targetsPageSlice";
|
|
import {
|
|
localStorageKeyCollapsedPools as localStorageKeyServiceDiscoveryPageCollapsedPools,
|
|
setCollapsedPools as serviceDiscoveryPageSetCollapsedPools,
|
|
} from "./serviceDiscoveryPageSlice";
|
|
import { updateSettings } from "./settingsSlice";
|
|
import {
|
|
addQueryToHistory,
|
|
localStorageKeyQueryHistory,
|
|
} from "./queryPageSlice";
|
|
|
|
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: targetsPageSetCollapsedPools,
|
|
effect: ({ payload }) => {
|
|
persistToLocalStorage(localStorageKeyTargetsPageCollapsedPools, payload);
|
|
},
|
|
});
|
|
|
|
startAppListening({
|
|
actionCreator: serviceDiscoveryPageSetCollapsedPools,
|
|
effect: ({ payload }) => {
|
|
persistToLocalStorage(
|
|
localStorageKeyServiceDiscoveryPageCollapsedPools,
|
|
payload
|
|
);
|
|
},
|
|
});
|
|
|
|
startAppListening({
|
|
actionCreator: addQueryToHistory,
|
|
effect: (_, { getState }) => {
|
|
persistToLocalStorage(
|
|
localStorageKeyQueryHistory,
|
|
getState().queryPage.queryHistory
|
|
);
|
|
},
|
|
});
|
|
|
|
startAppListening({
|
|
actionCreator: updateSettings,
|
|
effect: ({ payload }) => {
|
|
Object.entries(payload).forEach(([key, value]) => {
|
|
switch (key) {
|
|
case "useLocalTime":
|
|
case "enableQueryHistory":
|
|
case "enableAutocomplete":
|
|
case "enableSyntaxHighlighting":
|
|
case "enableLinter":
|
|
case "showAnnotations":
|
|
case "showQueryWarnings":
|
|
case "showQueryInfoNotices":
|
|
case "alertGroupsPerPage":
|
|
case "ruleGroupsPerPage":
|
|
return persistToLocalStorage(`settings.${key}`, value);
|
|
}
|
|
});
|
|
},
|
|
});
|