fix(android): only dismiss unpinned sidebar and notebook with back key, closes #2920 (#2939)

This commit is contained in:
Huang Xin
2026-01-13 15:42:03 +01:00
committed by GitHub
parent 434a44e62c
commit ed77b0bc7f
@@ -61,8 +61,10 @@ const Reader: React.FC<{ ids?: string }> = ({ ids }) => {
const { showSystemUI, dismissSystemUI } = useThemeStore();
const { getScreenBrightness, setScreenBrightness } = useDeviceControlStore();
const { acquireBackKeyInterception, releaseBackKeyInterception } = useDeviceControlStore();
const { isSideBarVisible, getIsSideBarVisible, setSideBarVisible } = useSidebarStore();
const { isNotebookVisible, getIsNotebookVisible, setNotebookVisible } = useNotebookStore();
const { isSideBarVisible, isSideBarPinned } = useSidebarStore();
const { getIsSideBarVisible, setSideBarVisible } = useSidebarStore();
const { isNotebookVisible, isNotebookPinned } = useNotebookStore();
const { getIsNotebookVisible, setNotebookVisible } = useNotebookStore();
const { isDarkMode, systemUIAlwaysHidden, isRoundedWindow } = useThemeStore();
useTheme({ systemUIVisible: settings.alwaysShowStatusBar, appThemeColor: 'base-100' });
@@ -101,9 +103,9 @@ const Reader: React.FC<{ ids?: string }> = ({ ids }) => {
const handleKeyDown = (event: CustomEvent) => {
if (event.detail.keyName === 'Back') {
if (getIsSideBarVisible()) {
if (getIsSideBarVisible() && !isSideBarPinned) {
setSideBarVisible(false);
} else if (getIsNotebookVisible()) {
} else if (getIsNotebookVisible() && !isNotebookPinned) {
setNotebookVisible(false);
} else {
eventDispatcher.dispatch('close-reader');
@@ -133,7 +135,14 @@ const Reader: React.FC<{ ids?: string }> = ({ ids }) => {
}
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [appService?.isAndroidApp, sideBarBookKey, isSideBarVisible, isNotebookVisible]);
}, [
appService?.isAndroidApp,
sideBarBookKey,
isSideBarPinned,
isSideBarVisible,
isNotebookPinned,
isNotebookVisible,
]);
useEffect(() => {
if (!appService?.isMobileApp) return;