settings: add option to disable auto check updates (#279)

This commit is contained in:
Huang Xin
2025-02-01 13:45:55 +01:00
committed by GitHub
parent 44885f2901
commit 6889d6341f
26 changed files with 131 additions and 37 deletions
@@ -146,5 +146,8 @@
"Upload Book": "Buch hochladen", "Upload Book": "Buch hochladen",
"Auto Upload Books to Cloud": "Bücher automatisch in die Cloud hochladen", "Auto Upload Books to Cloud": "Bücher automatisch in die Cloud hochladen",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% des Cloud-Speichers verwendet.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% des Cloud-Speichers verwendet.",
"Storage": "Speicher" "Storage": "Speicher",
"Book deleted: {{title}}": "Buch gelöscht: {{title}}",
"Failed to delete book: {{title}}": "Fehler beim Löschen des Buches: {{title}}",
"Check Updates on Start": "Aktualisierungen beim Start prüfen"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Ανέβασμα βιβλίου", "Upload Book": "Ανέβασμα βιβλίου",
"Auto Upload Books to Cloud": "Αυτόματο ανέβασμα βιβλίων στο cloud", "Auto Upload Books to Cloud": "Αυτόματο ανέβασμα βιβλίων στο cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% της αποθήκευσης στο cloud χρησιμοποιήθηκε.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% της αποθήκευσης στο cloud χρησιμοποιήθηκε.",
"Storage": "Αποθήκευση" "Storage": "Αποθήκευση",
"Book deleted: {{title}}": "Το βιβλίο με τίτλο {{title}} διαγράφηκε",
"Failed to delete book: {{title}}": "Αποτυχία διαγραφής βιβλίου: {{title}}",
"Check Updates on Start": "Έλεγχος ενημερώσεων κατά την εκκίνηση"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Subir libro", "Upload Book": "Subir libro",
"Auto Upload Books to Cloud": "Subir libros automáticamente a la nube", "Auto Upload Books to Cloud": "Subir libros automáticamente a la nube",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% del almacenamiento en la nube utilizado.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% del almacenamiento en la nube utilizado.",
"Storage": "Almacenamiento" "Storage": "Almacenamiento",
"Book deleted: {{title}}": "Libro eliminado: {{title}}",
"Failed to delete book: {{title}}": "Error al eliminar libro: {{title}}",
"Check Updates on Start": "Comprobar actualizaciones al iniciar"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Télécharger un livre", "Upload Book": "Télécharger un livre",
"Auto Upload Books to Cloud": "Télécharger automatiquement les livres dans le cloud", "Auto Upload Books to Cloud": "Télécharger automatiquement les livres dans le cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% de l'espace de stockage dans le cloud utilisé.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% de l'espace de stockage dans le cloud utilisé.",
"Storage": "Stockage" "Storage": "Stockage",
"Book deleted: {{title}}": "Livre supprimé : {{title}}",
"Failed to delete book: {{title}}": "Échec de la suppression du livre : {{title}}",
"Check Updates on Start": "Vérifier les mises à jour au démarrage"
} }
@@ -146,5 +146,8 @@
"Upload Book": "पुस्तक अपलोड करें", "Upload Book": "पुस्तक अपलोड करें",
"Auto Upload Books to Cloud": "पुस्तकें बादल में स्वचालित रूप से अपलोड करें", "Auto Upload Books to Cloud": "पुस्तकें बादल में स्वचालित रूप से अपलोड करें",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% क्लाउड स्टोरेज का उपयोग किया गया है।", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% क्लाउड स्टोरेज का उपयोग किया गया है।",
"Storage": "स्टोरेज" "Storage": "स्टोरेज",
"Book deleted: {{title}}": "पुस्तक हटाई गई: {{title}}",
"Failed to delete book: {{title}}": "पुस्तक हटाने में विफल: {{title}}",
"Check Updates on Start": "शुरू में अपडेट जांचें"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Unggah Buku", "Upload Book": "Unggah Buku",
"Auto Upload Books to Cloud": "Unggah Buku Otomatis ke Cloud", "Auto Upload Books to Cloud": "Unggah Buku Otomatis ke Cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dari Penyimpanan Cloud Digunakan.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dari Penyimpanan Cloud Digunakan.",
"Storage": "Penyimpanan" "Storage": "Penyimpanan",
"Book deleted: {{title}}": "Buku dihapus: {{title}}",
"Failed to delete book: {{title}}": "Gagal menghapus buku: {{title}}",
"Check Updates on Start": "Periksa Pembaruan saat Memulai"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Carica libro", "Upload Book": "Carica libro",
"Auto Upload Books to Cloud": "Carica libri automaticamente su cloud", "Auto Upload Books to Cloud": "Carica libri automaticamente su cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dello spazio di archiviazione cloud utilizzato.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dello spazio di archiviazione cloud utilizzato.",
"Storage": "Archiviazione" "Storage": "Archiviazione",
"Book deleted: {{title}}": "Libro eliminato: {{title}}",
"Failed to delete book: {{title}}": "Eliminazione libro non riuscita: {{title}}",
"Check Updates on Start": "Controlla aggiornamenti all'avvio"
} }
@@ -146,5 +146,8 @@
"Upload Book": "書籍をアップロード", "Upload Book": "書籍をアップロード",
"Auto Upload Books to Cloud": "書籍を自動的にクラウドにアップロード", "Auto Upload Books to Cloud": "書籍を自動的にクラウドにアップロード",
"{{percentage}}% of Cloud Storage Used.": "クラウドストレージの{{percentage}}%が使用されています。", "{{percentage}}% of Cloud Storage Used.": "クラウドストレージの{{percentage}}%が使用されています。",
"Storage": "ストレージ" "Storage": "ストレージ",
"Book deleted: {{title}}": "書籍が削除されました:{{title}}",
"Failed to delete book: {{title}}": "書籍の削除に失敗しました:{{title}}",
"Check Updates on Start": "開始時に更新を確認"
} }
@@ -146,5 +146,8 @@
"Upload Book": "책 업로드", "Upload Book": "책 업로드",
"Auto Upload Books to Cloud": "책 자동으로 클라우드에 업로드", "Auto Upload Books to Cloud": "책 자동으로 클라우드에 업로드",
"{{percentage}}% of Cloud Storage Used.": "클라우드 저장소 사용량 {{percentage}}%.", "{{percentage}}% of Cloud Storage Used.": "클라우드 저장소 사용량 {{percentage}}%.",
"Storage": "저장소" "Storage": "저장소",
"Book deleted: {{title}}": "책 삭제됨: {{title}}",
"Failed to delete book: {{title}}": "책 삭제 실패: {{title}}",
"Check Updates on Start": "시작 시 업데이트 확인"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Prześlij książkę", "Upload Book": "Prześlij książkę",
"Auto Upload Books to Cloud": "Automatycznie przesyłaj książki do chmury", "Auto Upload Books to Cloud": "Automatycznie przesyłaj książki do chmury",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% przestrzeni dyskowej w chmurze użytej.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% przestrzeni dyskowej w chmurze użytej.",
"Storage": "Przechowywanie" "Storage": "Przechowywanie",
"Book deleted: {{title}}": "Książka usunięta: {{title}}",
"Failed to delete book: {{title}}": "Nie udało się usunąć książki: {{title}}",
"Check Updates on Start": "Sprawdź aktualizacje przy starcie"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Enviar Livro", "Upload Book": "Enviar Livro",
"Auto Upload Books to Cloud": "Enviar Livros para a Nuvem Automaticamente", "Auto Upload Books to Cloud": "Enviar Livros para a Nuvem Automaticamente",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% do Armazenamento na Nuvem Usado.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% do Armazenamento na Nuvem Usado.",
"Storage": "Armazenamento" "Storage": "Armazenamento",
"Book deleted: {{title}}": "Livro excluído: {{title}}",
"Failed to delete book: {{title}}": "Falha ao excluir livro: {{title}}",
"Check Updates on Start": "Verificar Atualizações ao Iniciar"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Загрузить книгу", "Upload Book": "Загрузить книгу",
"Auto Upload Books to Cloud": "Автоматическая загрузка книг в облако", "Auto Upload Books to Cloud": "Автоматическая загрузка книг в облако",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% использовано облачного хранилища.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% использовано облачного хранилища.",
"Storage": "Хранилище" "Storage": "Хранилище",
"Book deleted: {{title}}": "Книга удалена: {{title}}",
"Failed to delete book: {{title}}": "Не удалось удалить книгу: {{title}}",
"Check Updates on Start": "Проверять обновления при запуске"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Kitap Yükle", "Upload Book": "Kitap Yükle",
"Auto Upload Books to Cloud": "Kitapları Otomatik Olarak Buluta Yükle", "Auto Upload Books to Cloud": "Kitapları Otomatik Olarak Buluta Yükle",
"{{percentage}}% of Cloud Storage Used.": "Bulut Depolamanın %{{percentage}}'si kullanıldı.", "{{percentage}}% of Cloud Storage Used.": "Bulut Depolamanın %{{percentage}}'si kullanıldı.",
"Storage": "Depolama" "Storage": "Depolama",
"Book deleted: {{title}}": "Kitap silindi: {{title}}",
"Failed to delete book: {{title}}": "Kitap silinemedi: {{title}}",
"Check Updates on Start": "Başlangıçta Güncellemeleri Kontrol Et"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Завантажити книгу", "Upload Book": "Завантажити книгу",
"Auto Upload Books to Cloud": "Автоматично завантажувати книги в хмару", "Auto Upload Books to Cloud": "Автоматично завантажувати книги в хмару",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% використано хмарного сховища.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% використано хмарного сховища.",
"Storage": "Сховище" "Storage": "Сховище",
"Book deleted: {{title}}": "Книгу видалено: {{title}}",
"Failed to delete book: {{title}}": "Не вдалося видалити книгу: {{title}}",
"Check Updates on Start": "Перевіряти оновлення при запуску"
} }
@@ -146,5 +146,8 @@
"Upload Book": "Tải lên sách", "Upload Book": "Tải lên sách",
"Auto Upload Books to Cloud": "Tự động tải sách lên đám mây", "Auto Upload Books to Cloud": "Tự động tải sách lên đám mây",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dung lượng lưu trữ đám mây đã sử dụng.", "{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dung lượng lưu trữ đám mây đã sử dụng.",
"Storage": "Lưu trữ" "Storage": "Lưu trữ",
"Book deleted: {{title}}": "Sách đã xóa: {{title}}",
"Failed to delete book: {{title}}": "Không thể xóa sách: {{title}}",
"Check Updates on Start": "Kiểm tra cập nhật khi khởi động"
} }
@@ -146,5 +146,8 @@
"Upload Book": "上传书籍", "Upload Book": "上传书籍",
"Auto Upload Books to Cloud": "自动上传书籍到云端", "Auto Upload Books to Cloud": "自动上传书籍到云端",
"{{percentage}}% of Cloud Storage Used.": "已使用 {{percentage}}% 云存储空间", "{{percentage}}% of Cloud Storage Used.": "已使用 {{percentage}}% 云存储空间",
"Storage": "存储空间" "Storage": "存储空间",
"Book deleted: {{title}}": "书籍已删除:{{title}}",
"Failed to delete book: {{title}}": "删除书籍失败:{{title}}",
"Check Updates on Start": "启动时检查更新"
} }
@@ -146,5 +146,8 @@
"Upload Book": "上傳書籍", "Upload Book": "上傳書籍",
"Auto Upload Books to Cloud": "自動上傳書籍到雲端", "Auto Upload Books to Cloud": "自動上傳書籍到雲端",
"{{percentage}}% of Cloud Storage Used.": "已使用 {{percentage}}% 雲存儲空間", "{{percentage}}% of Cloud Storage Used.": "已使用 {{percentage}}% 雲存儲空間",
"Storage": "存儲空間" "Storage": "存儲空間",
"Book deleted: {{title}}": "書籍已刪除:{{title}}",
"Failed to delete book: {{title}}": "書籍刪除失敗:{{title}}",
"Check Updates on Start": "啟動時檢查更新"
} }
@@ -6,7 +6,7 @@ import { PiUserCircleCheck } from 'react-icons/pi';
import { MdCheck } from 'react-icons/md'; import { MdCheck } from 'react-icons/md';
import { setAboutDialogVisible } from '@/components/AboutWindow'; import { setAboutDialogVisible } from '@/components/AboutWindow';
import { isWebAppPlatform } from '@/services/environment'; import { hasUpdater, isWebAppPlatform } from '@/services/environment';
import { DOWNLOAD_READEST_URL } from '@/services/constants'; import { DOWNLOAD_READEST_URL } from '@/services/constants';
import { useAuth } from '@/context/AuthContext'; import { useAuth } from '@/context/AuthContext';
import { useEnv } from '@/context/EnvContext'; import { useEnv } from '@/context/EnvContext';
@@ -30,6 +30,7 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
const { settings, setSettings, saveSettings } = useSettingsStore(); const { settings, setSettings, saveSettings } = useSettingsStore();
const [quotas, setQuotas] = React.useState<QuotaType[]>([]); const [quotas, setQuotas] = React.useState<QuotaType[]>([]);
const [isAutoUpload, setIsAutoUpload] = useState(settings.autoUpload); const [isAutoUpload, setIsAutoUpload] = useState(settings.autoUpload);
const [isAutoCheckUpdates, setIsAutoCheckUpdates] = useState(settings.autoCheckUpdates);
const showAboutReadest = () => { const showAboutReadest = () => {
setAboutDialogVisible(true); setAboutDialogVisible(true);
@@ -69,6 +70,13 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
} }
}; };
const toggleAutoCheckUpdates = () => {
settings.autoCheckUpdates = !settings.autoCheckUpdates;
setSettings(settings);
saveSettings(envConfig, settings);
setIsAutoCheckUpdates(settings.autoCheckUpdates);
};
useEffect(() => { useEffect(() => {
if (!user || !token) return; if (!user || !token) return;
const storagPlan = getStoragePlanData(token); const storagPlan = getStoragePlanData(token);
@@ -131,6 +139,13 @@ const SettingsMenu: React.FC<BookMenuProps> = ({ setIsDropdownOpen }) => {
icon={isAutoUpload ? <MdCheck className='text-base-content' /> : undefined} icon={isAutoUpload ? <MdCheck className='text-base-content' /> : undefined}
onClick={toggleAutoUploadBooks} onClick={toggleAutoUploadBooks}
/> />
{hasUpdater() && (
<MenuItem
label={_('Check Updates on Start')}
icon={isAutoCheckUpdates ? <MdCheck className='text-base-content' /> : undefined}
onClick={toggleAutoCheckUpdates}
/>
)}
<hr className='border-base-200 my-1' /> <hr className='border-base-200 my-1' />
<MenuItem label={_('Reload Page')} onClick={handleReloadPage} /> <MenuItem label={_('Reload Page')} onClick={handleReloadPage} />
<hr className='border-base-200 my-1' /> <hr className='border-base-200 my-1' />
+8 -4
View File
@@ -63,14 +63,18 @@ const LibraryPage = () => {
useEffect(() => { useEffect(() => {
updateAppTheme('base-200'); updateAppTheme('base-200');
const doAppUpdates = async () => { // eslint-disable-next-line react-hooks/exhaustive-deps
if (hasUpdater()) { }, []);
useEffect(() => {
const doCheckAppUpdates = async () => {
if (hasUpdater() && settings.autoCheckUpdates) {
await checkForAppUpdates(_); await checkForAppUpdates(_);
} }
}; };
doAppUpdates(); doCheckAppUpdates();
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, []); }, [settings]);
const processOpenWithFiles = React.useCallback( const processOpenWithFiles = React.useCallback(
async (appService: AppService, openWithFiles: string[], libraryBooks: Book[]) => { async (appService: AppService, openWithFiles: string[], libraryBooks: Book[]) => {
+8 -4
View File
@@ -5,20 +5,24 @@ import { useTheme } from '@/hooks/useTheme';
import { hasUpdater } from '@/services/environment'; import { hasUpdater } from '@/services/environment';
import { checkForAppUpdates } from '@/helpers/updater'; import { checkForAppUpdates } from '@/helpers/updater';
import { useTranslation } from '@/hooks/useTranslation'; import { useTranslation } from '@/hooks/useTranslation';
import { useSettingsStore } from '@/store/settingsStore';
import Reader from './components/Reader'; import Reader from './components/Reader';
export default function Page() { export default function Page() {
const _ = useTranslation(); const _ = useTranslation();
const { settings } = useSettingsStore();
useTheme(); useTheme();
useEffect(() => { useEffect(() => {
const doAppUpdates = async () => { const doCheckAppUpdates = async () => {
if (hasUpdater()) { if (hasUpdater() && settings.autoCheckUpdates) {
await checkForAppUpdates(_); await checkForAppUpdates(_);
} }
}; };
doAppUpdates(); doCheckAppUpdates();
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, []); }, [settings]);
return <Reader />; return <Reader />;
} }
+7 -1
View File
@@ -35,7 +35,13 @@ const MenuItem: React.FC<MenuItemProps> = ({
> >
<div className='flex items-center'> <div className='flex items-center'>
{!noIcon && <span style={{ minWidth: `${iconSize}px` }}>{icon}</span>} {!noIcon && <span style={{ minWidth: `${iconSize}px` }}>{icon}</span>}
<span className={clsx('ml-2 truncate text-base sm:max-w-32 sm:text-sm', labelClass)}> <span
className={clsx(
'ml-2 truncate text-base sm:text-sm',
shortcut ? 'max-w-[60%]' : 'max-w-[90%]',
labelClass,
)}
>
{label} {label}
</span> </span>
</div> </div>
+2 -1
View File
@@ -12,8 +12,9 @@ export const checkForAppUpdates = async (_: TranslationFunc) => {
if (lastCheck && now - parseInt(lastCheck, 10) < CHECK_UPDATE_INTERVAL_SEC * 1000) return; if (lastCheck && now - parseInt(lastCheck, 10) < CHECK_UPDATE_INTERVAL_SEC * 1000) return;
localStorage.setItem(LAST_CHECK_KEY, now.toString()); localStorage.setItem(LAST_CHECK_KEY, now.toString());
console.log('Checking for updates');
const update = await check(); const update = await check();
console.log('update found', update); console.log('Update found', update);
if (update) { if (update) {
const yes = await ask( const yes = await ask(
` `
+4 -6
View File
@@ -28,6 +28,7 @@ import {
DEFAULT_TTS_CONFIG, DEFAULT_TTS_CONFIG,
CLOUD_BOOKS_SUBDIR, CLOUD_BOOKS_SUBDIR,
DEFAULT_MOBILE_VIEW_SETTINGS, DEFAULT_MOBILE_VIEW_SETTINGS,
DEFAULT_SYSTEM_SETTINGS,
} from './constants'; } from './constants';
import { isWebAppPlatform } from './environment'; import { isWebAppPlatform } from './environment';
import { getOSPlatform, isValidURL } from '@/utils/misc'; import { getOSPlatform, isValidURL } from '@/utils/misc';
@@ -69,6 +70,7 @@ export abstract class BaseAppService implements AppService {
settings.localBooksDir = await this.getInitBooksDir(); settings.localBooksDir = await this.getInitBooksDir();
settings.version = SYSTEM_SETTINGS_VERSION; settings.version = SYSTEM_SETTINGS_VERSION;
} }
settings = { ...DEFAULT_SYSTEM_SETTINGS, ...settings };
settings.globalReadSettings = { ...DEFAULT_READSETTINGS, ...settings.globalReadSettings }; settings.globalReadSettings = { ...DEFAULT_READSETTINGS, ...settings.globalReadSettings };
settings.globalViewSettings = { settings.globalViewSettings = {
...DEFAULT_BOOK_LAYOUT, ...DEFAULT_BOOK_LAYOUT,
@@ -81,13 +83,9 @@ export abstract class BaseAppService implements AppService {
}; };
} catch { } catch {
settings = { settings = {
...DEFAULT_SYSTEM_SETTINGS,
version: SYSTEM_SETTINGS_VERSION, version: SYSTEM_SETTINGS_VERSION,
localBooksDir: await this.getInitBooksDir(), localBooksDir: await this.getInitBooksDir(),
lastSyncedAtBooks: 0,
lastSyncedAtConfigs: 0,
lastSyncedAtNotes: 0,
keepLogin: false,
autoUpload: false,
globalReadSettings: DEFAULT_READSETTINGS, globalReadSettings: DEFAULT_READSETTINGS,
globalViewSettings: { globalViewSettings: {
...DEFAULT_BOOK_LAYOUT, ...DEFAULT_BOOK_LAYOUT,
@@ -97,7 +95,7 @@ export abstract class BaseAppService implements AppService {
...DEFAULT_VIEW_CONFIG, ...DEFAULT_VIEW_CONFIG,
...DEFAULT_TTS_CONFIG, ...DEFAULT_TTS_CONFIG,
}, },
}; } as SystemSettings;
await this.fs.createDir('', 'Books', true); await this.fs.createDir('', 'Books', true);
await this.fs.createDir('', base, true); await this.fs.createDir('', base, true);
+11 -2
View File
@@ -7,7 +7,7 @@ import {
ViewConfig, ViewConfig,
ViewSettings, ViewSettings,
} from '@/types/book'; } from '@/types/book';
import { ReadSettings } from '@/types/settings'; import { ReadSettings, SystemSettings } from '@/types/settings';
import { UserStorageQuota } from '@/types/user'; import { UserStorageQuota } from '@/types/user';
export const LOCAL_BOOKS_SUBDIR = 'Readest/Books'; export const LOCAL_BOOKS_SUBDIR = 'Readest/Books';
@@ -16,6 +16,16 @@ export const CLOUD_BOOKS_SUBDIR = 'Readest/Books';
export const SUPPORTED_FILE_EXTS = ['epub', 'mobi', 'azw', 'azw3', 'fb2', 'cbz', 'pdf']; export const SUPPORTED_FILE_EXTS = ['epub', 'mobi', 'azw', 'azw3', 'fb2', 'cbz', 'pdf'];
export const FILE_ACCEPT_FORMATS = SUPPORTED_FILE_EXTS.map((ext) => `.${ext}`).join(', '); export const FILE_ACCEPT_FORMATS = SUPPORTED_FILE_EXTS.map((ext) => `.${ext}`).join(', ');
export const DEFAULT_SYSTEM_SETTINGS: Partial<SystemSettings> = {
keepLogin: false,
autoUpload: false,
autoCheckUpdates: true,
lastSyncedAtBooks: 0,
lastSyncedAtConfigs: 0,
lastSyncedAtNotes: 0,
};
export const DEFAULT_READSETTINGS: ReadSettings = { export const DEFAULT_READSETTINGS: ReadSettings = {
sideBarWidth: '15%', sideBarWidth: '15%',
isSideBarPinned: true, isSideBarPinned: true,
@@ -67,7 +77,6 @@ export const DEFAULT_BOOK_STYLE: BookStyle = {
}; };
export const DEFAULT_MOBILE_VIEW_SETTINGS: Partial<ViewSettings> = { export const DEFAULT_MOBILE_VIEW_SETTINGS: Partial<ViewSettings> = {
defaultFontSize: 19,
fullJustification: false, fullJustification: false,
}; };
+2
View File
@@ -17,8 +17,10 @@ export interface ReadSettings {
export interface SystemSettings { export interface SystemSettings {
version: number; version: number;
localBooksDir: string; localBooksDir: string;
keepLogin: boolean; keepLogin: boolean;
autoUpload: boolean; autoUpload: boolean;
autoCheckUpdates: boolean;
lastSyncedAtBooks: number; lastSyncedAtBooks: number;
lastSyncedAtConfigs: number; lastSyncedAtConfigs: number;
+5 -1
View File
@@ -8,6 +8,7 @@ import { ViewSettings } from '@/types/book';
import { Palette } from '@/styles/themes'; import { Palette } from '@/styles/themes';
import fontfacesCSS from '!!raw-loader!../styles/fonts.css'; import fontfacesCSS from '!!raw-loader!../styles/fonts.css';
import { getOSPlatform } from './misc';
const getFontStyles = ( const getFontStyles = (
serif: string, serif: string,
@@ -209,12 +210,15 @@ export const getStyles = (viewSettings: ViewSettings, themeCode: ThemeCode) => {
themeCode.fg, themeCode.fg,
themeCode.primary, themeCode.primary,
); );
// scale the font size on-the-fly so that we can sync the same font size on different devices
const isMobile = ['ios', 'android'].includes(getOSPlatform());
const fontScale = isMobile ? 1.25 : 1;
const fontStyles = getFontStyles( const fontStyles = getFontStyles(
viewSettings.serifFont!, viewSettings.serifFont!,
viewSettings.sansSerifFont!, viewSettings.sansSerifFont!,
viewSettings.monospaceFont!, viewSettings.monospaceFont!,
viewSettings.defaultFont!, viewSettings.defaultFont!,
viewSettings.defaultFontSize!, viewSettings.defaultFontSize! * fontScale,
viewSettings.overrideFont!, viewSettings.overrideFont!,
); );
const userStylesheet = viewSettings.userStylesheet!; const userStylesheet = viewSettings.userStylesheet!;