SurfSense/surfsense_web/atoms/editor/ui.atoms.ts

28 lines
787 B
TypeScript
Raw Normal View History

import { atom } from "jotai";
interface EditorUIState {
hasUnsavedChanges: boolean;
pendingNavigation: string | null; // URL to navigate to after user confirms
}
export const editorUIAtom = atom<EditorUIState>({
hasUnsavedChanges: false,
pendingNavigation: null,
});
// Derived atom for just the unsaved changes state
export const hasUnsavedEditorChangesAtom = atom(
(get) => get(editorUIAtom).hasUnsavedChanges,
(get, set, value: boolean) => {
set(editorUIAtom, { ...get(editorUIAtom), hasUnsavedChanges: value });
}
);
// Derived atom for pending navigation
export const pendingEditorNavigationAtom = atom(
(get) => get(editorUIAtom).pendingNavigation,
(get, set, value: string | null) => {
set(editorUIAtom, { ...get(editorUIAtom), pendingNavigation: value });
}
);