mirror of https://github.com/portainer/portainer
38 lines
968 B
TypeScript
38 lines
968 B
TypeScript
|
import create from 'zustand';
|
||
|
import { persist } from 'zustand/middleware';
|
||
|
|
||
|
import { keyBuilder } from '@/react/hooks/useLocalStorage';
|
||
|
|
||
|
interface UIState {
|
||
|
dismissedInfoPanels: Record<string, boolean>;
|
||
|
dismissInfoPanel(id: string): void;
|
||
|
|
||
|
dismissedInfoHash: string;
|
||
|
dismissMotd(hash: string): void;
|
||
|
|
||
|
dismissedUpdateVersion: string;
|
||
|
dismissUpdateVersion(version: string): void;
|
||
|
}
|
||
|
|
||
|
export const useUIState = create<UIState>()(
|
||
|
persist(
|
||
|
(set) => ({
|
||
|
dismissedInfoPanels: {},
|
||
|
dismissInfoPanel(id: string) {
|
||
|
set((state) => ({
|
||
|
dismissedInfoPanels: { ...state.dismissedInfoPanels, [id]: true },
|
||
|
}));
|
||
|
},
|
||
|
dismissedInfoHash: '',
|
||
|
dismissMotd(hash: string) {
|
||
|
set({ dismissedInfoHash: hash });
|
||
|
},
|
||
|
dismissedUpdateVersion: '',
|
||
|
dismissUpdateVersion(version: string) {
|
||
|
set({ dismissedUpdateVersion: version });
|
||
|
},
|
||
|
}),
|
||
|
{ name: keyBuilder('NEW_UI_STATE') }
|
||
|
)
|
||
|
);
|