From 98ee3d46c86006670238f13de152349da2e0502a Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Thu, 16 Jul 2026 11:37:18 +0200 Subject: [PATCH] Cleanup wake lock --- CHANGELOG.md | 2 +- .../hooks/useWakeLock.ts} | 18 ++++++++++-------- src/features/reader/screens/Reader.tsx | 4 ++-- 3 files changed, 13 insertions(+), 11 deletions(-) rename src/{features/reader/wake-lock/useReaderWakeLock.ts => base/hooks/useWakeLock.ts} (86%) diff --git a/CHANGELOG.md b/CHANGELOG.md index f22eba0c..87449782 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - (**Migration**) Add "in library" indicator - (**Settings/WebView**) Add setting to enable/disable WebView - (**Settings/Sync**) Add sync settings -- (**Reader**) Add Wake lock screen while reading +- (**Reader**) Add setting to keep the screen on while reading - (**Extension**) Support installing external JARs - (**Reader**) Add auto background color setting diff --git a/src/features/reader/wake-lock/useReaderWakeLock.ts b/src/base/hooks/useWakeLock.ts similarity index 86% rename from src/features/reader/wake-lock/useReaderWakeLock.ts rename to src/base/hooks/useWakeLock.ts index 3e5882b9..f13c506c 100644 --- a/src/features/reader/wake-lock/useReaderWakeLock.ts +++ b/src/base/hooks/useWakeLock.ts @@ -8,12 +8,18 @@ import { useEffect, useRef } from 'react'; -export function useReaderWakeLock(shouldLock: boolean) { +export const useWakeLock = (shouldLock: boolean) => { const wakeLockSentinelRef = useRef(null); + useEffect(() => { if (!('wakeLock' in navigator)) { return; } + + if (!shouldLock) { + return; + } + const requestWakeLock = async () => { try { if (wakeLockSentinelRef.current) { @@ -41,16 +47,12 @@ export function useReaderWakeLock(shouldLock: boolean) { } }; - if (shouldLock) { - requestWakeLock(); - document.addEventListener('visibilitychange', handleVisibilityChange); - } else { - releaseWakeLock(); - } + requestWakeLock(); + document.addEventListener('visibilitychange', handleVisibilityChange); return () => { document.removeEventListener('visibilitychange', handleVisibilityChange); releaseWakeLock(); }; }, [shouldLock]); -} +}; diff --git a/src/features/reader/screens/Reader.tsx b/src/features/reader/screens/Reader.tsx index 891b74e4..2f299f39 100644 --- a/src/features/reader/screens/Reader.tsx +++ b/src/features/reader/screens/Reader.tsx @@ -28,7 +28,7 @@ import { getErrorMessage } from '@/lib/HelperFunctions.ts'; import type { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts'; import { withPropsFrom } from '@/base/hoc/withPropsFrom.tsx'; import { useReaderResetStates } from '@/features/reader/hooks/useReaderResetStates.ts'; -import { useReaderWakeLock } from '@/features/reader/wake-lock/useReaderWakeLock.ts'; +import { useWakeLock } from '@/base/hooks/useWakeLock.ts'; import { useReaderSetSettingsState } from '@/features/reader/hooks/useReaderSetSettingsState.ts'; import { useReaderShowSettingPreviewOnChange } from '@/features/reader/hooks/useReaderShowSettingPreviewOnChange.ts'; import { useReaderSetChaptersState } from '@/features/reader/hooks/useReaderSetChaptersState.ts'; @@ -160,7 +160,7 @@ const BaseReader = ({ }, [mangaResponse.data?.manga]); useReaderResetStates(); - useReaderWakeLock(shouldWakeLockScreen); + useWakeLock(shouldWakeLockScreen); useReaderSetSettingsState( mangaResponse, defaultSettingsResponse,