diff --git a/apps/readest-app/src/app/reader/components/Reader.tsx b/apps/readest-app/src/app/reader/components/Reader.tsx index bc788841..ed6a79cd 100644 --- a/apps/readest-app/src/app/reader/components/Reader.tsx +++ b/apps/readest-app/src/app/reader/components/Reader.tsx @@ -15,6 +15,7 @@ import { useSettingsStore } from '@/store/settingsStore'; import { useDeviceControlStore } from '@/store/deviceStore'; import { useScreenWakeLock } from '@/hooks/useScreenWakeLock'; import { eventDispatcher } from '@/utils/event'; +import { interceptGlobalOpen } from '@/utils/open'; import { mountAdditionalFonts } from '@/utils/style'; import { setSystemUIVisibility } from '@/utils/bridge'; import { AboutWindow } from '@/components/AboutWindow'; @@ -39,6 +40,7 @@ const Reader: React.FC<{ ids?: string }> = ({ ids }) => { useEffect(() => { mountAdditionalFonts(document); + interceptGlobalOpen(); }, []); useEffect(() => { diff --git a/apps/readest-app/src/utils/open.ts b/apps/readest-app/src/utils/open.ts new file mode 100644 index 00000000..1fc2186a --- /dev/null +++ b/apps/readest-app/src/utils/open.ts @@ -0,0 +1,18 @@ +import { openUrl } from '@tauri-apps/plugin-opener'; +import { isTauriAppPlatform } from '@/services/environment'; + +export const interceptGlobalOpen = () => { + const windowOpen = window.open; + globalThis.open = function ( + url?: string | URL, + target?: string, + features?: string, + ): Window | null { + if (isTauriAppPlatform()) { + openUrl(url?.toString() || ''); + return null; + } else { + return windowOpen(url, target, features); + } + }; +};