From 17c7fa8f41ce82d0ce9c8bad2d0f1871f62fd7a7 Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Tue, 16 Dec 2025 23:16:21 +0800 Subject: [PATCH] fix: make sidebar and notebook pin states persist after refresh (#2730) --- .../src/app/reader/components/notebook/Notebook.tsx | 5 ++++- apps/readest-app/src/app/reader/hooks/useSidebar.ts | 9 +++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/readest-app/src/app/reader/components/notebook/Notebook.tsx b/apps/readest-app/src/app/reader/components/notebook/Notebook.tsx index f65d2a59..cddf0e99 100644 --- a/apps/readest-app/src/app/reader/components/notebook/Notebook.tsx +++ b/apps/readest-app/src/app/reader/components/notebook/Notebook.tsx @@ -16,6 +16,7 @@ import { uniqueId } from '@/utils/misc'; import { eventDispatcher } from '@/utils/event'; import { getBookDirFromLanguage } from '@/utils/book'; import { Overlay } from '@/components/Overlay'; +import { saveSysSettings } from '@/helpers/settings'; import useShortcuts from '@/hooks/useShortcuts'; import BooknoteItem from '../sidebar/BooknoteItem'; import NotebookHeader from './Header'; @@ -88,7 +89,9 @@ const Notebook: React.FC = ({}) => { const handleTogglePin = () => { toggleNotebookPin(); - settings.globalReadSettings.isNotebookPinned = !isNotebookPinned; + const globalReadSettings = settings.globalReadSettings; + const newGlobalReadSettings = { ...globalReadSettings, isNotebookPinned: !isNotebookPinned }; + saveSysSettings(envConfig, 'globalReadSettings', newGlobalReadSettings); }; const handleClickOverlay = () => { diff --git a/apps/readest-app/src/app/reader/hooks/useSidebar.ts b/apps/readest-app/src/app/reader/hooks/useSidebar.ts index e45b20da..ee38e379 100644 --- a/apps/readest-app/src/app/reader/hooks/useSidebar.ts +++ b/apps/readest-app/src/app/reader/hooks/useSidebar.ts @@ -1,8 +1,11 @@ +import { useEffect } from 'react'; +import { useEnv } from '@/context/EnvContext'; import { useSettingsStore } from '@/store/settingsStore'; import { useSidebarStore } from '@/store/sidebarStore'; -import { useEffect } from 'react'; +import { saveSysSettings } from '@/helpers/settings'; const useSidebar = (initialWidth: string, isPinned: boolean) => { + const { envConfig } = useEnv(); const { settings } = useSettingsStore(); const { sideBarWidth, @@ -30,8 +33,10 @@ const useSidebar = (initialWidth: string, isPinned: boolean) => { const handleSideBarTogglePin = () => { toggleSideBarPin(); - settings.globalReadSettings.isSideBarPinned = !isSideBarPinned; if (isSideBarPinned && isSideBarVisible) setSideBarVisible(false); + const globalReadSettings = settings.globalReadSettings; + const newGlobalReadSettings = { ...globalReadSettings, isSideBarPinned: !isSideBarPinned }; + saveSysSettings(envConfig, 'globalReadSettings', newGlobalReadSettings); }; return {