From 01ad18ca5708d56d69ec673f2ebe38bbc8c5c9ad Mon Sep 17 00:00:00 2001 From: Huang Xin Date: Sat, 29 Mar 2025 14:45:41 +0800 Subject: [PATCH] feat: global fulltext search shortcut with ctrl/cmd+f (#750) --- apps/readest-app/src/app/library/page.tsx | 2 ++ apps/readest-app/src/app/reader/hooks/useBookShortcuts.ts | 6 ++++++ apps/readest-app/src/hooks/useSync.ts | 2 ++ 3 files changed, 10 insertions(+) diff --git a/apps/readest-app/src/app/library/page.tsx b/apps/readest-app/src/app/library/page.tsx index 89858bc5..dce61c47 100644 --- a/apps/readest-app/src/app/library/page.tsx +++ b/apps/readest-app/src/app/library/page.tsx @@ -366,6 +366,8 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP } catch (err) { if (err instanceof Error) { if (err.message.includes('Not authenticated') && settings.keepLogin) { + settings.keepLogin = false; + setSettings(settings); navigateToLogin(router); return false; } else if (err.message.includes('Insufficient storage quota')) { diff --git a/apps/readest-app/src/app/reader/hooks/useBookShortcuts.ts b/apps/readest-app/src/app/reader/hooks/useBookShortcuts.ts index 0668362a..aa0db947 100644 --- a/apps/readest-app/src/app/reader/hooks/useBookShortcuts.ts +++ b/apps/readest-app/src/app/reader/hooks/useBookShortcuts.ts @@ -7,6 +7,7 @@ import { useSidebarStore } from '@/store/sidebarStore'; import { useSettingsStore } from '@/store/settingsStore'; import { getStyles } from '@/utils/style'; import { tauriQuitApp } from '@/utils/window'; +import { eventDispatcher } from '@/utils/event'; import { MAX_ZOOM_LEVEL, MIN_ZOOM_LEVEL, ZOOM_STEP } from '@/services/constants'; interface UseBookShortcutsProps { @@ -90,6 +91,10 @@ const useBookShortcuts = ({ sideBarBookKey, bookKeys }: UseBookShortcutsProps) = } }; + const showSearchBar = () => { + eventDispatcher.dispatch('search', { term: '' }); + }; + const zoomIn = () => { if (!sideBarBookKey) return; const view = getView(sideBarBookKey); @@ -129,6 +134,7 @@ const useBookShortcuts = ({ sideBarBookKey, bookKeys }: UseBookShortcutsProps) = onToggleNotebook: toggleNotebook, onToggleScrollMode: toggleScrollMode, onOpenFontLayoutSettings: () => setFontLayoutSettingsDialogOpen(true), + onToggleSearchBar: showSearchBar, onReloadPage: reloadPage, onQuitApp: quitApp, onGoLeft: goLeft, diff --git a/apps/readest-app/src/hooks/useSync.ts b/apps/readest-app/src/hooks/useSync.ts index 6a45e5fd..4be607df 100644 --- a/apps/readest-app/src/hooks/useSync.ts +++ b/apps/readest-app/src/hooks/useSync.ts @@ -126,6 +126,8 @@ export function useSync(bookKey?: string) { console.error(err); if (err instanceof Error) { if (err.message.includes('Not authenticated') && settings.keepLogin) { + settings.keepLogin = false; + setSettings(settings); navigateToLogin(router); } setSyncError(err.message || `Error pulling ${type}`);