diff --git a/apps/client/src/widgets/buttons/right_pane_toggle.tsx b/apps/client/src/widgets/buttons/right_pane_toggle.tsx index 53bf67ae20..6a31d633c9 100644 --- a/apps/client/src/widgets/buttons/right_pane_toggle.tsx +++ b/apps/client/src/widgets/buttons/right_pane_toggle.tsx @@ -1,11 +1,17 @@ import clsx from "clsx"; import { t } from "../../services/i18n"; +import options from "../../services/options"; import ActionButton from "../react/ActionButton"; -import { useTriliumOptionBool } from "../react/hooks"; +import { useState, useCallback } from "preact/hooks"; +import { useTriliumEvent } from "../react/hooks"; export default function RightPaneToggle() { - const [ rightPaneVisible, setRightPaneVisible ] = useTriliumOptionBool("rightPaneVisible"); + const [ rightPaneVisible, setRightPaneVisible ] = useState(options.is("rightPaneVisible")); + + useTriliumEvent("toggleRightPane", useCallback(() => { + setRightPaneVisible(current => !current); + }, [])); return ( setRightPaneVisible(!rightPaneVisible)} + triggerCommand="toggleRightPane" /> ); } diff --git a/apps/client/src/widgets/sidebar/RightPanelContainer.tsx b/apps/client/src/widgets/sidebar/RightPanelContainer.tsx index 8356e0bd7f..d28887b9f4 100644 --- a/apps/client/src/widgets/sidebar/RightPanelContainer.tsx +++ b/apps/client/src/widgets/sidebar/RightPanelContainer.tsx @@ -3,7 +3,7 @@ import "./RightPanelContainer.css"; import Split from "@triliumnext/split.js"; import { VNode } from "preact"; -import { useEffect, useRef } from "preact/hooks"; +import { useState, useEffect, useRef, useCallback } from "preact/hooks"; import appContext from "../../components/app_context"; import { WidgetsByParent } from "../../services/bundle"; @@ -11,7 +11,7 @@ import { t } from "../../services/i18n"; import options from "../../services/options"; import { DEFAULT_GUTTER_SIZE } from "../../services/resizer"; import Button from "../react/Button"; -import { useActiveNoteContext, useLegacyWidget, useNoteProperty, useTriliumEvent, useTriliumOptionBool, useTriliumOptionJson } from "../react/hooks"; +import { useActiveNoteContext, useLegacyWidget, useNoteProperty, useTriliumEvent, useTriliumOptionJson } from "../react/hooks"; import Icon from "../react/Icon"; import LegacyRightPanelWidget from "../right_panel_widget"; import HighlightsList from "./HighlightsList"; @@ -30,12 +30,16 @@ interface RightPanelWidgetDefinition { } export default function RightPanelContainer({ widgetsByParent }: { widgetsByParent: WidgetsByParent }) { - const [ rightPaneVisible, setRightPaneVisible ] = useTriliumOptionBool("rightPaneVisible"); + const [ rightPaneVisible, setRightPaneVisible ] = useState(options.is("rightPaneVisible")); const items = useItems(rightPaneVisible, widgetsByParent); useSplit(rightPaneVisible); - useTriliumEvent("toggleRightPane", () => { - setRightPaneVisible(!rightPaneVisible); - }); + useTriliumEvent("toggleRightPane", useCallback(() => { + setRightPaneVisible(current => { + const newValue = !current; + options.save("rightPaneVisible", newValue.toString()); + return newValue; + }); + }, [])); return (
@@ -48,7 +52,7 @@ export default function RightPanelContainer({ widgetsByParent }: { widgetsByPare {t("right_pane.empty_message")}
)