forked from akai/readest
feat: add option to keep screen awake when reading (#403)
This commit is contained in:
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Notizbuch",
|
||||
"Notes": "Notizen",
|
||||
"Open": "Öffnen",
|
||||
"Open Book": "Buch öffnen",
|
||||
"Original Text": "Originaltext",
|
||||
"Page": "Seite",
|
||||
"Paging Animation": "Blätter-Animation",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Unbenannte Gruppe",
|
||||
"Group Books": "Bücher gruppieren",
|
||||
"Remove From Group": "Aus Gruppe entfernen",
|
||||
"Create New Group": "Neue Gruppe erstellen"
|
||||
"Create New Group": "Neue Gruppe erstellen",
|
||||
"Deselect Book": "Buch abwählen",
|
||||
"Download Book": "Buch herunterladen",
|
||||
"Deselect Group": "Gruppe abwählen",
|
||||
"Select Group": "Gruppe auswählen",
|
||||
"Keep Screen Awake": "Bildschirm aktiv halten"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Σημειωματάριο",
|
||||
"Notes": "Σημειώσεις",
|
||||
"Open": "Άνοιγμα",
|
||||
"Open Book": "Άνοιγμα βιβλίου",
|
||||
"Original Text": "Αρχικό κείμενο",
|
||||
"Page": "Σελίδα",
|
||||
"Paging Animation": "Κινούμενα σχέδια σελιδοποίησης",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Ομάδα χωρίς τίτλο",
|
||||
"Group Books": "Ομαδοποίηση βιβλίων",
|
||||
"Remove From Group": "Αφαίρεση από την ομάδα",
|
||||
"Create New Group": "Δημιουργία νέας ομάδας"
|
||||
"Create New Group": "Δημιουργία νέας ομάδας",
|
||||
"Deselect Book": "Αποεπιλογή βιβλίου",
|
||||
"Download Book": "Λήψη βιβλίου",
|
||||
"Deselect Group": "Αποεπιλογή ομάδας",
|
||||
"Select Group": "Επιλογή ομάδας",
|
||||
"Keep Screen Awake": "Διατήρηση ενεργού οθόνης"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Cuaderno",
|
||||
"Notes": "Notas",
|
||||
"Open": "Abrir",
|
||||
"Open Book": "Abrir libro",
|
||||
"Original Text": "Texto original",
|
||||
"Page": "Página",
|
||||
"Paging Animation": "Animación de paginación",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Grupo sin título",
|
||||
"Group Books": "Agrupar libros",
|
||||
"Remove From Group": "Eliminar del grupo",
|
||||
"Create New Group": "Crear nuevo grupo"
|
||||
"Create New Group": "Crear nuevo grupo",
|
||||
"Deselect Book": "Deseleccionar libro",
|
||||
"Download Book": "Descargar libro",
|
||||
"Deselect Group": "Deseleccionar grupo",
|
||||
"Select Group": "Seleccionar grupo",
|
||||
"Keep Screen Awake": "Mantener pantalla activa"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Carnet de notes",
|
||||
"Notes": "Notes",
|
||||
"Open": "Ouvrir",
|
||||
"Open Book": "Ouvrir le livre",
|
||||
"Original Text": "Texte original",
|
||||
"Page": "Page",
|
||||
"Paging Animation": "Animation de page",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Groupe sans titre",
|
||||
"Group Books": "Regrouper les livres",
|
||||
"Remove From Group": "Retirer du groupe",
|
||||
"Create New Group": "Créer un nouveau groupe"
|
||||
"Create New Group": "Créer un nouveau groupe",
|
||||
"Deselect Book": "Désélectionner le livre",
|
||||
"Download Book": "Télécharger le livre",
|
||||
"Deselect Group": "Désélectionner le groupe",
|
||||
"Select Group": "Sélectionner le groupe",
|
||||
"Keep Screen Awake": "Maintenir l'écran allumé"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "नोटबुक",
|
||||
"Notes": "नोट्स",
|
||||
"Open": "खोलें",
|
||||
"Open Book": "पुस्तक खोलें",
|
||||
"Original Text": "मूल पाठ",
|
||||
"Page": "पृष्ठ",
|
||||
"Paging Animation": "पेजिंग एनीमेशन",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "अभिनामित समूह",
|
||||
"Group Books": "समूह पुस्तकें",
|
||||
"Remove From Group": "समूह से हटाएं",
|
||||
"Create New Group": "नया समूह बनाएं"
|
||||
"Create New Group": "नया समूह बनाएं",
|
||||
"Deselect Book": "पुस्तक का चयन रद्द करें",
|
||||
"Download Book": "पुस्तक डाउनलोड करें",
|
||||
"Deselect Group": "समूह का चयन रद्द करें",
|
||||
"Select Group": "समूह चुनें",
|
||||
"Keep Screen Awake": "स्क्रीन जागरूक रखें"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Buku Catatan",
|
||||
"Notes": "Catatan",
|
||||
"Open": "Buka",
|
||||
"Open Book": "Buka Buku",
|
||||
"Original Text": "Teks Asli",
|
||||
"Page": "Halaman",
|
||||
"Paging Animation": "Animasi Halaman",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Grup Tanpa Judul",
|
||||
"Group Books": "Grupkan Buku",
|
||||
"Remove From Group": "Hapus dari Grup",
|
||||
"Create New Group": "Buat Grup Baru"
|
||||
"Create New Group": "Buat Grup Baru",
|
||||
"Deselect Book": "Batalkan Pilihan Buku",
|
||||
"Download Book": "Unduh Buku",
|
||||
"Deselect Group": "Batalkan Pilihan Grup",
|
||||
"Select Group": "Pilih Grup",
|
||||
"Keep Screen Awake": "Biarkan Layar Tetap Hidup"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Quaderno",
|
||||
"Notes": "Note",
|
||||
"Open": "Apri",
|
||||
"Open Book": "Apri libro",
|
||||
"Original Text": "Testo originale",
|
||||
"Page": "Pagina",
|
||||
"Paging Animation": "Animazione cambio pagina",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Gruppo senza titolo",
|
||||
"Group Books": "Raggruppa libri",
|
||||
"Remove From Group": "Rimuovi dal",
|
||||
"Create New Group": "Crea nuovo gruppo"
|
||||
"Create New Group": "Crea nuovo gruppo",
|
||||
"Deselect Book": "Deseleziona libro",
|
||||
"Download Book": "Scarica libro",
|
||||
"Deselect Group": "Deseleziona gruppo",
|
||||
"Select Group": "Seleziona gruppo",
|
||||
"Keep Screen Awake": "Mantieni schermo attivo"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "ノート",
|
||||
"Notes": "メモ",
|
||||
"Open": "開く",
|
||||
"Open Book": "書籍を開く",
|
||||
"Original Text": "原文",
|
||||
"Page": "ページ",
|
||||
"Paging Animation": "ページめくりアニメーション",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "無題のグループ",
|
||||
"Group Books": "書籍をグループ化",
|
||||
"Remove From Group": "グループから削除",
|
||||
"Create New Group": "新しいグループを作成"
|
||||
"Create New Group": "新しいグループを作成",
|
||||
"Deselect Book": "書籍の選択を解除",
|
||||
"Download Book": "書籍をダウンロード",
|
||||
"Deselect Group": "グループの選択を解除",
|
||||
"Select Group": "グループを選択",
|
||||
"Keep Screen Awake": "画面をオンのままにする"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "노트북",
|
||||
"Notes": "메모",
|
||||
"Open": "열기",
|
||||
"Open Book": "책 열기",
|
||||
"Original Text": "원본 텍스트",
|
||||
"Page": "페이지",
|
||||
"Paging Animation": "페이지 넘김 애니메이션",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "제목 없는 그룹",
|
||||
"Group Books": "책 그룹화",
|
||||
"Remove From Group": "그룹에서 제거",
|
||||
"Create New Group": "새 그룹 만들기"
|
||||
"Create New Group": "새 그룹 만들기",
|
||||
"Deselect Book": "책 선택 해제",
|
||||
"Download Book": "책 다운로드",
|
||||
"Deselect Group": "그룹 선택 해제",
|
||||
"Select Group": "그룹 선택",
|
||||
"Keep Screen Awake": "화면 켜짐 유지"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Notatnik",
|
||||
"Notes": "Notatki",
|
||||
"Open": "Otwórz",
|
||||
"Open Book": "Otwórz książkę",
|
||||
"Original Text": "Tekst oryginalny",
|
||||
"Page": "Strona",
|
||||
"Paging Animation": "Animacja przewracania stron",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Grupa bez tytułu",
|
||||
"Group Books": "Grupuj książki",
|
||||
"Remove From Group": "Usuń z grupy",
|
||||
"Create New Group": "Utwórz nową grupę"
|
||||
"Create New Group": "Utwórz nową grupę",
|
||||
"Deselect Book": "Odznacz książkę",
|
||||
"Download Book": "Pobierz książkę",
|
||||
"Deselect Group": "Odznacz grupę",
|
||||
"Select Group": "Wybierz grupę",
|
||||
"Keep Screen Awake": "Nie wygaszaj ekranu"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Caderno",
|
||||
"Notes": "Notas",
|
||||
"Open": "Abrir",
|
||||
"Open Book": "Abrir Livro",
|
||||
"Original Text": "Texto Original",
|
||||
"Page": "Página",
|
||||
"Paging Animation": "Animação de Página",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Grupo Sem Título",
|
||||
"Group Books": "Agrupar Livros",
|
||||
"Remove From Group": "Remover do Grupo",
|
||||
"Create New Group": "Criar Novo Grupo"
|
||||
"Create New Group": "Criar Novo Grupo",
|
||||
"Deselect Book": "Desmarcar Livro",
|
||||
"Download Book": "Baixar Livro",
|
||||
"Deselect Group": "Desmarcar Grupo",
|
||||
"Select Group": "Selecionar Grupo",
|
||||
"Keep Screen Awake": "Manter a Tela Ativa"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Блокнот",
|
||||
"Notes": "Заметки",
|
||||
"Open": "Открыть",
|
||||
"Open Book": "Открыть книгу",
|
||||
"Original Text": "Оригинальный текст",
|
||||
"Page": "Страница",
|
||||
"Paging Animation": "Анимация перелистывания",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Группа без названия",
|
||||
"Group Books": "Группировать книги",
|
||||
"Remove From Group": "Удалить из группы",
|
||||
"Create New Group": "Создать новую группу"
|
||||
"Create New Group": "Создать новую группу",
|
||||
"Deselect Book": "Отменить выбор книги",
|
||||
"Download Book": "Скачать книгу",
|
||||
"Deselect Group": "Отменить выбор группы",
|
||||
"Select Group": "Выбрать группу",
|
||||
"Keep Screen Awake": "Не выключать экран"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Not Defteri",
|
||||
"Notes": "Notlar",
|
||||
"Open": "Aç",
|
||||
"Open Book": "Kitabı Aç",
|
||||
"Original Text": "Orijinal Metin",
|
||||
"Page": "Sayfa",
|
||||
"Paging Animation": "Sayfa Çevirme Animasyonu",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Başlıksız Grup",
|
||||
"Group Books": "Kitapları Grupla",
|
||||
"Remove From Group": "Grubu Kaldır",
|
||||
"Create New Group": "Yeni Grup Oluştur"
|
||||
"Create New Group": "Yeni Grup Oluştur",
|
||||
"Deselect Book": "Kitabı Seçme",
|
||||
"Download Book": "Kitabı İndir",
|
||||
"Deselect Group": "Grubu Seçme",
|
||||
"Select Group": "Grup Seç",
|
||||
"Keep Screen Awake": "Ekranı Açık Tut"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Нотатник",
|
||||
"Notes": "Нотатки",
|
||||
"Open": "Відкрити",
|
||||
"Open Book": "Відкрити книгу",
|
||||
"Original Text": "Оригінальний текст",
|
||||
"Page": "Сторінка",
|
||||
"Paging Animation": "Анімація гортання",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Група без назви",
|
||||
"Group Books": "Групувати книги",
|
||||
"Remove From Group": "Видалити з групи",
|
||||
"Create New Group": "Створити нову групу"
|
||||
"Create New Group": "Створити нову групу",
|
||||
"Deselect Book": "Скасувати вибір книги",
|
||||
"Download Book": "Завантажити книгу",
|
||||
"Deselect Group": "Скасувати вибір групи",
|
||||
"Select Group": "Вибрати групу",
|
||||
"Keep Screen Awake": "Не вимикати екран"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "Sổ ghi chép",
|
||||
"Notes": "Ghi chú",
|
||||
"Open": "Mở",
|
||||
"Open Book": "Mở sách",
|
||||
"Original Text": "Văn bản gốc",
|
||||
"Page": "Trang",
|
||||
"Paging Animation": "Hiệu ứng lật trang",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "Nhóm không có tiêu đề",
|
||||
"Group Books": "Nhóm sách",
|
||||
"Remove From Group": "Xóa khỏi nhóm",
|
||||
"Create New Group": "Tạo nhóm mới"
|
||||
"Create New Group": "Tạo nhóm mới",
|
||||
"Deselect Book": "Bỏ chọn sách",
|
||||
"Download Book": "Tải sách",
|
||||
"Deselect Group": "Bỏ chọn nhóm",
|
||||
"Select Group": "Chọn nhóm",
|
||||
"Keep Screen Awake": "Giữ màn hình luôn bật"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "笔记本",
|
||||
"Notes": "笔记",
|
||||
"Open": "打开",
|
||||
"Open Book": "打开书籍",
|
||||
"Original Text": "原文",
|
||||
"Page": "页面",
|
||||
"Paging Animation": "翻页动画",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "无标题分组",
|
||||
"Group Books": "分组书籍",
|
||||
"Remove From Group": "从分组中移除",
|
||||
"Create New Group": "创建新分组"
|
||||
"Create New Group": "创建新分组",
|
||||
"Deselect Book": "取消选择书籍",
|
||||
"Download Book": "下载书籍",
|
||||
"Deselect Group": "取消选择分组",
|
||||
"Select Group": "选择分组",
|
||||
"Keep Screen Awake": "保持屏幕常亮"
|
||||
}
|
||||
|
||||
@@ -75,7 +75,6 @@
|
||||
"Notebook": "筆記本",
|
||||
"Notes": "筆記",
|
||||
"Open": "打開",
|
||||
"Open Book": "打開書籍",
|
||||
"Original Text": "原文",
|
||||
"Page": "頁面",
|
||||
"Paging Animation": "翻頁動畫",
|
||||
@@ -161,5 +160,10 @@
|
||||
"Untitled Group": "無標題組",
|
||||
"Group Books": "分組書籍",
|
||||
"Remove From Group": "從組中移除",
|
||||
"Create New Group": "創建新組"
|
||||
"Create New Group": "創建新組",
|
||||
"Deselect Book": "取消選擇書籍",
|
||||
"Download Book": "下載書籍",
|
||||
"Deselect Group": "取消選擇組",
|
||||
"Select Group": "選擇組",
|
||||
"Keep Screen Awake": "保持屏幕常亮"
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
|
||||
const [quotas, setQuotas] = React.useState<QuotaType[]>([]);
|
||||
const [isAutoUpload, setIsAutoUpload] = useState(settings.autoUpload);
|
||||
const [isAutoCheckUpdates, setIsAutoCheckUpdates] = useState(settings.autoCheckUpdates);
|
||||
const [isScreenWakeLock, setIsScreenWakeLock] = useState(settings.screenWakeLock);
|
||||
|
||||
const showAboutReadest = () => {
|
||||
setAboutDialogVisible(true);
|
||||
@@ -77,6 +78,13 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
|
||||
setIsAutoCheckUpdates(settings.autoCheckUpdates);
|
||||
};
|
||||
|
||||
const toggleScreenWakeLock = () => {
|
||||
settings.screenWakeLock = !settings.screenWakeLock;
|
||||
setSettings(settings);
|
||||
saveSettings(envConfig, settings);
|
||||
setIsScreenWakeLock(settings.screenWakeLock);
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (!user || !token) return;
|
||||
const storagPlan = getStoragePlanData(token);
|
||||
@@ -146,6 +154,11 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
|
||||
onClick={toggleAutoCheckUpdates}
|
||||
/>
|
||||
)}
|
||||
<MenuItem
|
||||
label={_('Keep Screen Awake')}
|
||||
icon={isScreenWakeLock ? <MdCheck className='text-base-content' /> : undefined}
|
||||
onClick={toggleScreenWakeLock}
|
||||
/>
|
||||
<hr className='border-base-200 my-1' />
|
||||
<MenuItem label={_('Reload Page')} onClick={handleReloadPage} />
|
||||
<hr className='border-base-200 my-1' />
|
||||
|
||||
@@ -33,6 +33,7 @@ import Spinner from '@/components/Spinner';
|
||||
import LibraryHeader from './components/LibraryHeader';
|
||||
import Bookshelf from './components/Bookshelf';
|
||||
import BookDetailModal from '@/components/BookDetailModal';
|
||||
import { useScreenWakeLock } from '@/hooks/useScreenWakeLock';
|
||||
|
||||
const LibraryPage = () => {
|
||||
const router = useRouter();
|
||||
@@ -65,6 +66,7 @@ const LibraryPage = () => {
|
||||
});
|
||||
|
||||
usePullToRefresh(containerRef, pullLibrary);
|
||||
useScreenWakeLock(settings.screenWakeLock);
|
||||
|
||||
useEffect(() => {
|
||||
updateAppTheme('base-200');
|
||||
|
||||
@@ -8,6 +8,7 @@ import { useEnv } from '@/context/EnvContext';
|
||||
import { useTheme } from '@/hooks/useTheme';
|
||||
import { useLibraryStore } from '@/store/libraryStore';
|
||||
import { useSettingsStore } from '@/store/settingsStore';
|
||||
import { useScreenWakeLock } from '@/hooks/useScreenWakeLock';
|
||||
import { AboutWindow } from '@/components/AboutWindow';
|
||||
import { Toast } from '@/components/Toast';
|
||||
import ReaderContent from './ReaderContent';
|
||||
@@ -19,6 +20,7 @@ const Reader: React.FC<{ ids?: string }> = ({ ids }) => {
|
||||
const isInitiating = useRef(false);
|
||||
|
||||
const { updateAppTheme } = useTheme();
|
||||
useScreenWakeLock(settings.screenWakeLock);
|
||||
|
||||
useEffect(() => {
|
||||
updateAppTheme('base-100');
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
import { useEffect, useRef } from 'react';
|
||||
|
||||
export const useScreenWakeLock = (lock: boolean) => {
|
||||
const wakeLockRef = useRef<WakeLockSentinel | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
const requestWakeLock = async () => {
|
||||
try {
|
||||
if ('wakeLock' in navigator) {
|
||||
wakeLockRef.current = await navigator.wakeLock.request('screen');
|
||||
|
||||
wakeLockRef.current.addEventListener('release', () => {
|
||||
wakeLockRef.current = null;
|
||||
});
|
||||
|
||||
console.log('Wake lock acquired');
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Failed to acquire wake lock:', err);
|
||||
}
|
||||
};
|
||||
|
||||
if (lock) {
|
||||
requestWakeLock();
|
||||
} else if (wakeLockRef.current) {
|
||||
wakeLockRef.current.release();
|
||||
wakeLockRef.current = null;
|
||||
console.log('Wake lock released');
|
||||
}
|
||||
|
||||
return () => {
|
||||
if (wakeLockRef.current) {
|
||||
wakeLockRef.current.release();
|
||||
wakeLockRef.current = null;
|
||||
console.log('Wake lock released');
|
||||
}
|
||||
};
|
||||
}, [lock]);
|
||||
};
|
||||
@@ -22,6 +22,7 @@ export const DEFAULT_SYSTEM_SETTINGS: Partial<SystemSettings> = {
|
||||
keepLogin: false,
|
||||
autoUpload: true,
|
||||
autoCheckUpdates: true,
|
||||
screenWakeLock: true,
|
||||
|
||||
lastSyncedAtBooks: 0,
|
||||
lastSyncedAtConfigs: 0,
|
||||
|
||||
@@ -21,6 +21,7 @@ export interface SystemSettings {
|
||||
keepLogin: boolean;
|
||||
autoUpload: boolean;
|
||||
autoCheckUpdates: boolean;
|
||||
screenWakeLock: boolean;
|
||||
|
||||
lastSyncedAtBooks: number;
|
||||
lastSyncedAtConfigs: number;
|
||||
|
||||
Reference in New Issue
Block a user