From 284fccd1ef15eb0f5f09c89484281972ecdc7510 Mon Sep 17 00:00:00 2001 From: NBA2K1 <78034913+NBA2K1@users.noreply.github.com> Date: Sat, 13 Dec 2025 00:42:50 +0100 Subject: [PATCH] Add log-switch to app. - New switch in More > Settings > About "Enable logging". When ON, it inits the AppLogger and shows the "Share app logs" button below. When OFF, it disposes the AppLogger and hides the "Share app logs" button. It also prevents the AppLogger from init. OFF by default. - added localizations accordingly. --- lib/l10n/app_ar.arb | 3 +- lib/l10n/app_as.arb | 1 + lib/l10n/app_de.arb | 1 + lib/l10n/app_en.arb | 1 + lib/l10n/app_es.arb | 1 + lib/l10n/app_es_419.arb | 1 + lib/l10n/app_fr.arb | 1 + lib/l10n/app_hi.arb | 1 + lib/l10n/app_id.arb | 1 + lib/l10n/app_it.arb | 1 + lib/l10n/app_ja.arb | 1 + lib/l10n/app_pt.arb | 1 + lib/l10n/app_pt_BR.arb | 1 + lib/l10n/app_ru.arb | 1 + lib/l10n/app_th.arb | 1 + lib/l10n/app_tr.arb | 1 + lib/l10n/app_zh.arb | 1 + lib/l10n/generated/app_localizations.dart | 6 + lib/l10n/generated/app_localizations_ar.dart | 3 + lib/l10n/generated/app_localizations_as.dart | 3 + lib/l10n/generated/app_localizations_de.dart | 3 + lib/l10n/generated/app_localizations_en.dart | 3 + lib/l10n/generated/app_localizations_es.dart | 6 + lib/l10n/generated/app_localizations_fr.dart | 3 + lib/l10n/generated/app_localizations_hi.dart | 3 + lib/l10n/generated/app_localizations_id.dart | 3 + lib/l10n/generated/app_localizations_it.dart | 3 + lib/l10n/generated/app_localizations_ja.dart | 3 + lib/l10n/generated/app_localizations_pt.dart | 6 + lib/l10n/generated/app_localizations_ru.dart | 3 + lib/l10n/generated/app_localizations_th.dart | 3 + lib/l10n/generated/app_localizations_tr.dart | 3 + lib/l10n/generated/app_localizations_zh.dart | 3 + lib/models/settings.dart | 5 + lib/models/settings.g.dart | 670 ++++++++++-------- lib/modules/more/about/about_screen.dart | 79 ++- .../more/about/providers/logs_state.dart | 9 + .../more/about/providers/logs_state.g.dart | 50 ++ lib/utils/log/logger.dart | 5 +- 39 files changed, 565 insertions(+), 329 deletions(-) create mode 100644 lib/modules/more/about/providers/logs_state.dart create mode 100644 lib/modules/more/about/providers/logs_state.g.dart diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index 6aeab879..4e852897 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -451,6 +451,7 @@ "downloaded_only": "المحملة فقط", "downloaded_only_description": "إظهار الإدخالات المحملة فقط في مكتبتك", "concurrent_downloads": "التحميلات المتزامنة", + "logs_on": "تفعيل التسجيل", "share_app_logs": "مشاركة سجلات التطبيق", "no_app_logs": "لا يوجد ملف log.txt!", "failed": "فشل!", @@ -560,4 +561,4 @@ "show_scroll_percentage": "إظهار نسبة التمرير", "remove_extra_paragraph_spacing": "إزالة المسافات الإضافية بين الفقرات", "select_label_color": "تحديد لون {label}" -} \ No newline at end of file +} diff --git a/lib/l10n/app_as.arb b/lib/l10n/app_as.arb index 72d78923..2629f3e6 100644 --- a/lib/l10n/app_as.arb +++ b/lib/l10n/app_as.arb @@ -305,6 +305,7 @@ "default_subtitle_language": "ডিফল্ট উপশিৰোনাম ভাষা", "follow_system_theme": "ছিষ্টেম থিম অনুসৰণ কৰক", "concurrent_downloads": "সমসাময়িক ডাউনলোড", + "logs_on": "লগিং সক্ষম কৰক", "share_app_logs": "এপ লগ শ্বেয়াৰ কৰক", "no_app_logs": "কোনো log.txt ফাইল উপলব্ধ নাই!", "failed": "বিফল!", diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 276b55dc..e3ee46fa 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -465,6 +465,7 @@ "downloaded_only": "Nur heruntergeladene", "downloaded_only_description": "Nur heruntergeladene Einträge in deiner Bibliothek anzeigen", "concurrent_downloads": "Gleichzeitige Downloads", + "logs_on": "Protokollierung aktivieren", "share_app_logs": "App-Protokolle teilen", "no_app_logs": "Keine log.txt Datei verfügbar!", "failed": "Fehlgeschlagen!", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index b2ed952a..6f5b82f0 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -143,6 +143,7 @@ "nsfw_sources_info": "This does not prevent unofficial or potentially incorrectly flagged extensions from surfacing NSFW (18+) content within the app", "version": "Version", "check_for_update": "Check for update", + "logs_on": "Enable logging", "share_app_logs": "Share app logs", "no_app_logs": "No log.txt available!", "failed": "Failed!", diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 4d91db15..c2e6ad0a 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -449,6 +449,7 @@ "downloaded_only": "Solo descargados", "downloaded_only_description": "Mostrar solo entradas descargadas en tu biblioteca", "concurrent_downloads": "Descargas simultáneas", + "logs_on": "Activar registro", "share_app_logs": "Compartir registros de la aplicación", "no_app_logs": "¡No hay archivo log.txt disponible!", "failed": "¡Fallido!", diff --git a/lib/l10n/app_es_419.arb b/lib/l10n/app_es_419.arb index 61bf6bb6..423683f3 100644 --- a/lib/l10n/app_es_419.arb +++ b/lib/l10n/app_es_419.arb @@ -451,6 +451,7 @@ "downloaded_only": "Solo descargados", "downloaded_only_description": "Mostrar solo entradas descargadas en tu biblioteca", "concurrent_downloads": "Descargas simultáneas", + "logs_on": "Habilitar registro", "share_app_logs": "Compartir registros de la aplicación", "no_app_logs": "¡No hay archivo log.txt disponible!", "failed": "¡Fallido!", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 66db6efb..6212e45b 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -455,6 +455,7 @@ "downloaded_only": "Téléchargés uniquement", "downloaded_only_description": "Afficher uniquement les entrées téléchargées dans votre bibliothèque", "concurrent_downloads": "Téléchargements simultanés", + "logs_on": "Activer la journalisation", "share_app_logs": "Partager les journaux de l'application", "no_app_logs": "Aucun fichier log.txt disponible !", "failed": "Échoué !", diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb index b902f507..bc5aafcd 100644 --- a/lib/l10n/app_hi.arb +++ b/lib/l10n/app_hi.arb @@ -305,6 +305,7 @@ "default_subtitle_language": "डिफ़ॉल्ट उपशीर्षक भाषा", "follow_system_theme": "सिस्टम थीम का पालन करें", "concurrent_downloads": "समवर्ती डाउनलोड", + "logs_on": "लॉगिंग सक्षम करें", "share_app_logs": "ऐप लॉग साझा करें", "no_app_logs": "कोई log.txt फ़ाइल उपलब्ध नहीं!", "failed": "विफल!", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 34296429..b2959154 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -449,6 +449,7 @@ "downloaded_only": "Hanya yang diunduh", "downloaded_only_description": "Hanya tampilkan entri yang diunduh di perpustakaan Anda", "concurrent_downloads": "Unduhan bersamaan", + "logs_on": "Aktifkan pencatatan", "share_app_logs": "Bagikan log aplikasi", "no_app_logs": "Tidak ada file log.txt tersedia!", "failed": "Gagal!", diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 69c98592..b394285f 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -449,6 +449,7 @@ "downloaded_only": "Solo scaricati", "downloaded_only_description": "Mostra solo le voci scaricate nella tua libreria", "concurrent_downloads": "Download simultanei", + "logs_on": "Abilita registrazione", "share_app_logs": "Condividi i log dell'app", "no_app_logs": "Nessun file log.txt disponibile!", "failed": "Fallito!", diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index d58e621e..c86da8b7 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -304,6 +304,7 @@ "default_subtitle_language": "デフォルト字幕言語", "follow_system_theme": "システムテーマに従う", "concurrent_downloads": "同時ダウンロード", + "logs_on": "ログを有効にする", "share_app_logs": "アプリログを共有", "no_app_logs": "log.txtファイルが利用できません!", "failed": "失敗!", diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 8619e519..62c35724 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -449,6 +449,7 @@ "downloaded_only": "Apenas baixados", "downloaded_only_description": "Mostrar apenas entradas baixadas na sua biblioteca", "concurrent_downloads": "Downloads simultâneos", + "logs_on": "Ativar registro", "share_app_logs": "Compartilhar logs do aplicativo", "no_app_logs": "Nenhum arquivo log.txt disponível!", "failed": "Falhou!", diff --git a/lib/l10n/app_pt_BR.arb b/lib/l10n/app_pt_BR.arb index eb7f7526..593dce6a 100644 --- a/lib/l10n/app_pt_BR.arb +++ b/lib/l10n/app_pt_BR.arb @@ -449,6 +449,7 @@ "downloaded_only": "Apenas baixados", "downloaded_only_description": "Mostrar apenas entradas baixadas na sua biblioteca", "concurrent_downloads": "Downloads simultâneos", + "logs_on": "Ativar registro", "share_app_logs": "Compartilhar logs do aplicativo", "no_app_logs": "Nenhum arquivo log.txt disponível!", "failed": "Falhou!", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index aa51c83c..5656ee52 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -449,6 +449,7 @@ "downloaded_only": "Только загруженные", "downloaded_only_description": "Показывать только загруженные записи в вашей библиотеке", "concurrent_downloads": "Одновременные загрузки", + "logs_on": "Включить ведение журнала", "share_app_logs": "Поделиться журналами приложения", "no_app_logs": "Файл log.txt недоступен!", "failed": "Не удалось!", diff --git a/lib/l10n/app_th.arb b/lib/l10n/app_th.arb index 1f6d4e69..10d3c028 100644 --- a/lib/l10n/app_th.arb +++ b/lib/l10n/app_th.arb @@ -452,6 +452,7 @@ "downloaded_only": "ที่ดาวน์โหลดแล้วเท่านั้น", "downloaded_only_description": "แสดงเฉพาะรายการที่ดาวน์โหลดแล้วในห้องสมุดของคุณ", "concurrent_downloads": "ดาวน์โหลดพร้อมกัน", + "logs_on": "เปิดการบันทึก", "share_app_logs": "แชร์บันทึกแอป", "no_app_logs": "ไม่มีไฟล์ log.txt!", "failed": "ล้มเหลว!", diff --git a/lib/l10n/app_tr.arb b/lib/l10n/app_tr.arb index f8143bc4..60893b7c 100644 --- a/lib/l10n/app_tr.arb +++ b/lib/l10n/app_tr.arb @@ -449,6 +449,7 @@ "downloaded_only": "Sadece indirilmiş", "downloaded_only_description": "Kütüphanenizde yalnızca indirilmiş girişleri göster", "concurrent_downloads": "Eş zamanlı indirmeler", + "logs_on": "Günlük kaydını etkinleştir", "share_app_logs": "Uygulama günlüklerini paylaş", "no_app_logs": "log.txt dosyası yok!", "failed": "Başarısız!", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 6d453b0e..828fcc87 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -454,6 +454,7 @@ "downloaded_only": "仅已下载", "downloaded_only_description": "仅显示库中已下载的条目", "concurrent_downloads": "并发下载", + "logs_on": "启用日志", "share_app_logs": "分享应用日志", "no_app_logs": "没有可用的 log.txt 文件!", "failed": "失败!", diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 16885429..f0dc2a87 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -935,6 +935,12 @@ abstract class AppLocalizations { /// **'Check for update'** String get check_for_update; + /// No description provided for @logs_on. + /// + /// In en, this message translates to: + /// **'Enable logging'** + String get logs_on; + /// No description provided for @share_app_logs. /// /// In en, this message translates to: diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index e2da67f5..beab36a1 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -434,6 +434,9 @@ class AppLocalizationsAr extends AppLocalizations { @override String get check_for_update => 'التحقق من التحديثات'; + @override + String get logs_on => 'تفعيل التسجيل'; + @override String get share_app_logs => 'مشاركة سجلات التطبيق'; diff --git a/lib/l10n/generated/app_localizations_as.dart b/lib/l10n/generated/app_localizations_as.dart index 881102df..d5b93a11 100644 --- a/lib/l10n/generated/app_localizations_as.dart +++ b/lib/l10n/generated/app_localizations_as.dart @@ -436,6 +436,9 @@ class AppLocalizationsAs extends AppLocalizations { @override String get check_for_update => 'আপডেটৰ বাবে পৰীক্ষা কৰক'; + @override + String get logs_on => 'লগিং সক্ষম কৰক'; + @override String get share_app_logs => 'এপ লগ শ্বেয়াৰ কৰক'; diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 79920e82..871c97e6 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -438,6 +438,9 @@ class AppLocalizationsDe extends AppLocalizations { @override String get check_for_update => 'Auf Aktualisierung prüfen'; + @override + String get logs_on => 'Protokollierung aktivieren'; + @override String get share_app_logs => 'App-Protokolle teilen'; diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index bfac54d6..2a58fbc9 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -436,6 +436,9 @@ class AppLocalizationsEn extends AppLocalizations { @override String get check_for_update => 'Check for update'; + @override + String get logs_on => 'Enable logging'; + @override String get share_app_logs => 'Share app logs'; diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index 108c36cb..9eaadbe7 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -440,6 +440,9 @@ class AppLocalizationsEs extends AppLocalizations { @override String get check_for_update => 'Buscar actualizaciones'; + @override + String get logs_on => 'Activar registro'; + @override String get share_app_logs => 'Compartir registros de la aplicación'; @@ -2245,6 +2248,9 @@ class AppLocalizationsEs419 extends AppLocalizationsEs { @override String get check_for_update => 'Buscar actualizaciones'; + @override + String get logs_on => 'Habilitar registro'; + @override String get share_app_logs => 'Compartir registros de la aplicación'; diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index 7a0975bc..4fe14dc1 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -442,6 +442,9 @@ class AppLocalizationsFr extends AppLocalizations { @override String get check_for_update => 'Rechercher des mises à jour'; + @override + String get logs_on => 'Activer la journalisation'; + @override String get share_app_logs => 'Partager les journaux de l\'application'; diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart index 12a85600..0a61cb03 100644 --- a/lib/l10n/generated/app_localizations_hi.dart +++ b/lib/l10n/generated/app_localizations_hi.dart @@ -436,6 +436,9 @@ class AppLocalizationsHi extends AppLocalizations { @override String get check_for_update => 'अपडेट के लिए जांचें'; + @override + String get logs_on => 'लॉगिंग सक्षम करें'; + @override String get share_app_logs => 'ऐप लॉग साझा करें'; diff --git a/lib/l10n/generated/app_localizations_id.dart b/lib/l10n/generated/app_localizations_id.dart index e723a4bc..01396dc0 100644 --- a/lib/l10n/generated/app_localizations_id.dart +++ b/lib/l10n/generated/app_localizations_id.dart @@ -440,6 +440,9 @@ class AppLocalizationsId extends AppLocalizations { @override String get check_for_update => 'Periksa Pembaruan'; + @override + String get logs_on => 'Aktifkan pencatatan'; + @override String get share_app_logs => 'Bagikan log aplikasi'; diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index 62b7bf69..9ab4d6ba 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -440,6 +440,9 @@ class AppLocalizationsIt extends AppLocalizations { @override String get check_for_update => 'Controlla aggiornamenti'; + @override + String get logs_on => 'Abilita registrazione'; + @override String get share_app_logs => 'Condividi i log dell\'app'; diff --git a/lib/l10n/generated/app_localizations_ja.dart b/lib/l10n/generated/app_localizations_ja.dart index 5dfacbbf..e91cff93 100644 --- a/lib/l10n/generated/app_localizations_ja.dart +++ b/lib/l10n/generated/app_localizations_ja.dart @@ -431,6 +431,9 @@ class AppLocalizationsJa extends AppLocalizations { @override String get check_for_update => 'Check for update'; + @override + String get logs_on => 'ログを有効にする'; + @override String get share_app_logs => 'アプリログを共有'; diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index a061de6c..0ac7b3b3 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -440,6 +440,9 @@ class AppLocalizationsPt extends AppLocalizations { @override String get check_for_update => 'Verificar atualização'; + @override + String get logs_on => 'Ativar registro'; + @override String get share_app_logs => 'Compartilhar logs do aplicativo'; @@ -2240,6 +2243,9 @@ class AppLocalizationsPtBr extends AppLocalizationsPt { @override String get check_for_update => 'Verificar atualização'; + @override + String get logs_on => 'Ativar registro'; + @override String get share_app_logs => 'Compartilhar logs do aplicativo'; diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index c4ccd9ff..26e37e53 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -441,6 +441,9 @@ class AppLocalizationsRu extends AppLocalizations { @override String get check_for_update => 'Проверить обновления'; + @override + String get logs_on => 'Включить ведение журнала'; + @override String get share_app_logs => 'Поделиться журналами приложения'; diff --git a/lib/l10n/generated/app_localizations_th.dart b/lib/l10n/generated/app_localizations_th.dart index 5ab6b22e..6a3a083f 100644 --- a/lib/l10n/generated/app_localizations_th.dart +++ b/lib/l10n/generated/app_localizations_th.dart @@ -436,6 +436,9 @@ class AppLocalizationsTh extends AppLocalizations { @override String get check_for_update => 'ตรวจสอบการอัพเดท'; + @override + String get logs_on => 'เปิดการบันทึก'; + @override String get share_app_logs => 'แชร์บันทึกแอป'; diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index d2215068..9d818454 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -436,6 +436,9 @@ class AppLocalizationsTr extends AppLocalizations { @override String get check_for_update => 'Güncelleme Kontrol Et'; + @override + String get logs_on => 'Günlük kaydını etkinleştir'; + @override String get share_app_logs => 'Uygulama günlüklerini paylaş'; diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index 5522cd0f..0ce76535 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -427,6 +427,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get check_for_update => '检查更新'; + @override + String get logs_on => '启用日志'; + @override String get share_app_logs => '分享应用日志'; diff --git a/lib/models/settings.dart b/lib/models/settings.dart index 25b4228e..e7757fbc 100644 --- a/lib/models/settings.dart +++ b/lib/models/settings.dart @@ -127,6 +127,8 @@ class Settings { int? pagePreloadAmount; + bool? enableLogs; + bool? checkForAppUpdates; bool? checkForExtensionUpdates; @@ -357,6 +359,7 @@ class Settings { this.sortLibraryAnime, this.pagePreloadAmount = 6, this.scaleType = ScaleType.fitScreen, + this.enableLogs = false, this.checkForAppUpdates = true, this.checkForExtensionUpdates = true, this.backgroundColor = BackgroundColor.black, @@ -482,6 +485,7 @@ class Settings { .map((e) => ChapterPageurls.fromJson(e)) .toList(); } + enableLogs = json['enableLogs']; checkForAppUpdates = json['checkForAppUpdates']; checkForExtensionUpdates = json['checkForExtensionUpdates']; if (json['cookiesList'] != null) { @@ -720,6 +724,7 @@ class Settings { ?.map((v) => v.toJson()) .toList(), 'chapterPageUrlsList': chapterPageUrlsList?.map((v) => v.toJson()).toList(), + 'enableLogs': enableLogs, 'checkForAppUpdates': checkForAppUpdates, 'checkForExtensionUpdates': checkForExtensionUpdates, 'cookiesList': cookiesList, diff --git a/lib/models/settings.g.dart b/lib/models/settings.g.dart index 8c9b4696..87cbb7b0 100644 --- a/lib/models/settings.g.dart +++ b/lib/models/settings.g.dart @@ -337,439 +337,444 @@ const SettingsSchema = CollectionSchema( name: r'enableHardwareAcceleration', type: IsarType.bool, ), - r'filterScanlatorList': PropertySchema( + r'enableLogs': PropertySchema( id: 58, + name: r'enableLogs', + type: IsarType.bool, + ), + r'filterScanlatorList': PropertySchema( + id: 59, name: r'filterScanlatorList', type: IsarType.objectList, target: r'FilterScanlator', ), r'flexColorSchemeBlendLevel': PropertySchema( - id: 59, + id: 60, name: r'flexColorSchemeBlendLevel', type: IsarType.double, ), r'flexSchemeColorIndex': PropertySchema( - id: 60, + id: 61, name: r'flexSchemeColorIndex', type: IsarType.long, ), r'followSystemTheme': PropertySchema( - id: 61, + id: 62, name: r'followSystemTheme', type: IsarType.bool, ), r'fullScreenPlayer': PropertySchema( - id: 62, + id: 63, name: r'fullScreenPlayer', type: IsarType.bool, ), r'fullScreenReader': PropertySchema( - id: 63, + id: 64, name: r'fullScreenReader', type: IsarType.bool, ), r'hideDiscordRpcInIncognito': PropertySchema( - id: 64, + id: 65, name: r'hideDiscordRpcInIncognito', type: IsarType.bool, ), r'hideItems': PropertySchema( - id: 65, + id: 66, name: r'hideItems', type: IsarType.stringList, ), r'hwdecMode': PropertySchema( - id: 66, + id: 67, name: r'hwdecMode', type: IsarType.string, ), r'incognitoMode': PropertySchema( - id: 67, + id: 68, name: r'incognitoMode', type: IsarType.bool, ), r'lastTrackerLibraryLocation': PropertySchema( - id: 68, + id: 69, name: r'lastTrackerLibraryLocation', type: IsarType.string, ), r'libraryDownloadedChapters': PropertySchema( - id: 69, + id: 70, name: r'libraryDownloadedChapters', type: IsarType.bool, ), r'libraryFilterAnimeBookMarkedType': PropertySchema( - id: 70, + id: 71, name: r'libraryFilterAnimeBookMarkedType', type: IsarType.long, ), r'libraryFilterAnimeDownloadType': PropertySchema( - id: 71, + id: 72, name: r'libraryFilterAnimeDownloadType', type: IsarType.long, ), r'libraryFilterAnimeStartedType': PropertySchema( - id: 72, + id: 73, name: r'libraryFilterAnimeStartedType', type: IsarType.long, ), r'libraryFilterAnimeUnreadType': PropertySchema( - id: 73, + id: 74, name: r'libraryFilterAnimeUnreadType', type: IsarType.long, ), r'libraryFilterMangasBookMarkedType': PropertySchema( - id: 74, + id: 75, name: r'libraryFilterMangasBookMarkedType', type: IsarType.long, ), r'libraryFilterMangasDownloadType': PropertySchema( - id: 75, + id: 76, name: r'libraryFilterMangasDownloadType', type: IsarType.long, ), r'libraryFilterMangasStartedType': PropertySchema( - id: 76, + id: 77, name: r'libraryFilterMangasStartedType', type: IsarType.long, ), r'libraryFilterMangasUnreadType': PropertySchema( - id: 77, + id: 78, name: r'libraryFilterMangasUnreadType', type: IsarType.long, ), r'libraryFilterNovelBookMarkedType': PropertySchema( - id: 78, + id: 79, name: r'libraryFilterNovelBookMarkedType', type: IsarType.long, ), r'libraryFilterNovelDownloadType': PropertySchema( - id: 79, + id: 80, name: r'libraryFilterNovelDownloadType', type: IsarType.long, ), r'libraryFilterNovelStartedType': PropertySchema( - id: 80, + id: 81, name: r'libraryFilterNovelStartedType', type: IsarType.long, ), r'libraryFilterNovelUnreadType': PropertySchema( - id: 81, + id: 82, name: r'libraryFilterNovelUnreadType', type: IsarType.long, ), r'libraryLocalSource': PropertySchema( - id: 82, + id: 83, name: r'libraryLocalSource', type: IsarType.bool, ), r'libraryShowCategoryTabs': PropertySchema( - id: 83, + id: 84, name: r'libraryShowCategoryTabs', type: IsarType.bool, ), r'libraryShowContinueReadingButton': PropertySchema( - id: 84, + id: 85, name: r'libraryShowContinueReadingButton', type: IsarType.bool, ), r'libraryShowLanguage': PropertySchema( - id: 85, + id: 86, name: r'libraryShowLanguage', type: IsarType.bool, ), r'libraryShowNumbersOfItems': PropertySchema( - id: 86, + id: 87, name: r'libraryShowNumbersOfItems', type: IsarType.bool, ), r'localFolders': PropertySchema( - id: 87, + id: 88, name: r'localFolders', type: IsarType.stringList, ), r'locale': PropertySchema( - id: 88, + id: 89, name: r'locale', type: IsarType.object, target: r'L10nLocale', ), r'mangaExtensionsRepo': PropertySchema( - id: 89, + id: 90, name: r'mangaExtensionsRepo', type: IsarType.objectList, target: r'Repo', ), r'mangaGridSize': PropertySchema( - id: 90, + id: 91, name: r'mangaGridSize', type: IsarType.long, ), r'mangaHomeDisplayType': PropertySchema( - id: 91, + id: 92, name: r'mangaHomeDisplayType', type: IsarType.byte, enumMap: _SettingsmangaHomeDisplayTypeEnumValueMap, ), r'markEpisodeAsSeenType': PropertySchema( - id: 92, + id: 93, name: r'markEpisodeAsSeenType', type: IsarType.long, ), r'mergeLibraryNavMobile': PropertySchema( - id: 93, + id: 94, name: r'mergeLibraryNavMobile', type: IsarType.bool, ), r'navigationOrder': PropertySchema( - id: 94, + id: 95, name: r'navigationOrder', type: IsarType.stringList, ), r'novelDisplayType': PropertySchema( - id: 95, + id: 96, name: r'novelDisplayType', type: IsarType.byte, enumMap: _SettingsnovelDisplayTypeEnumValueMap, ), r'novelExtensionsRepo': PropertySchema( - id: 96, + id: 97, name: r'novelExtensionsRepo', type: IsarType.objectList, target: r'Repo', ), r'novelFontSize': PropertySchema( - id: 97, + id: 98, name: r'novelFontSize', type: IsarType.long, ), r'novelGridSize': PropertySchema( - id: 98, + id: 99, name: r'novelGridSize', type: IsarType.long, ), r'novelLibraryDownloadedChapters': PropertySchema( - id: 99, + id: 100, name: r'novelLibraryDownloadedChapters', type: IsarType.bool, ), r'novelLibraryLocalSource': PropertySchema( - id: 100, + id: 101, name: r'novelLibraryLocalSource', type: IsarType.bool, ), r'novelLibraryShowCategoryTabs': PropertySchema( - id: 101, + id: 102, name: r'novelLibraryShowCategoryTabs', type: IsarType.bool, ), r'novelLibraryShowContinueReadingButton': PropertySchema( - id: 102, + id: 103, name: r'novelLibraryShowContinueReadingButton', type: IsarType.bool, ), r'novelLibraryShowLanguage': PropertySchema( - id: 103, + id: 104, name: r'novelLibraryShowLanguage', type: IsarType.bool, ), r'novelLibraryShowNumbersOfItems': PropertySchema( - id: 104, + id: 105, name: r'novelLibraryShowNumbersOfItems', type: IsarType.bool, ), r'novelReaderLineHeight': PropertySchema( - id: 105, + id: 106, name: r'novelReaderLineHeight', type: IsarType.double, ), r'novelReaderPadding': PropertySchema( - id: 106, + id: 107, name: r'novelReaderPadding', type: IsarType.long, ), r'novelReaderTextColor': PropertySchema( - id: 107, + id: 108, name: r'novelReaderTextColor', type: IsarType.string, ), r'novelReaderTheme': PropertySchema( - id: 108, + id: 109, name: r'novelReaderTheme', type: IsarType.string, ), r'novelRemoveExtraParagraphSpacing': PropertySchema( - id: 109, + id: 110, name: r'novelRemoveExtraParagraphSpacing', type: IsarType.bool, ), r'novelShowScrollPercentage': PropertySchema( - id: 110, + id: 111, name: r'novelShowScrollPercentage', type: IsarType.bool, ), r'novelTapToScroll': PropertySchema( - id: 111, + id: 112, name: r'novelTapToScroll', type: IsarType.bool, ), r'novelTextAlign': PropertySchema( - id: 112, + id: 113, name: r'novelTextAlign', type: IsarType.byte, enumMap: _SettingsnovelTextAlignEnumValueMap, ), r'onlyIncludePinnedSources': PropertySchema( - id: 113, + id: 114, name: r'onlyIncludePinnedSources', type: IsarType.bool, ), r'pagePreloadAmount': PropertySchema( - id: 114, + id: 115, name: r'pagePreloadAmount', type: IsarType.long, ), r'personalPageModeList': PropertySchema( - id: 115, + id: 116, name: r'personalPageModeList', type: IsarType.objectList, target: r'PersonalPageMode', ), r'personalReaderModeList': PropertySchema( - id: 116, + id: 117, name: r'personalReaderModeList', type: IsarType.objectList, target: r'PersonalReaderMode', ), r'playerSubtitleSettings': PropertySchema( - id: 117, + id: 118, name: r'playerSubtitleSettings', type: IsarType.object, target: r'PlayerSubtitleSettings', ), r'pureBlackDarkMode': PropertySchema( - id: 118, + id: 119, name: r'pureBlackDarkMode', type: IsarType.bool, ), r'relativeTimesTamps': PropertySchema( - id: 119, + id: 120, name: r'relativeTimesTamps', type: IsarType.long, ), r'rpcShowCoverImage': PropertySchema( - id: 120, + id: 121, name: r'rpcShowCoverImage', type: IsarType.bool, ), r'rpcShowReadingWatchingProgress': PropertySchema( - id: 121, + id: 122, name: r'rpcShowReadingWatchingProgress', type: IsarType.bool, ), r'rpcShowTitle': PropertySchema( - id: 122, + id: 123, name: r'rpcShowTitle', type: IsarType.bool, ), r'saveAsCBZArchive': PropertySchema( - id: 123, + id: 124, name: r'saveAsCBZArchive', type: IsarType.bool, ), r'scaleType': PropertySchema( - id: 124, + id: 125, name: r'scaleType', type: IsarType.byte, enumMap: _SettingsscaleTypeEnumValueMap, ), r'showPagesNumber': PropertySchema( - id: 125, + id: 126, name: r'showPagesNumber', type: IsarType.bool, ), r'sortChapterList': PropertySchema( - id: 126, + id: 127, name: r'sortChapterList', type: IsarType.objectList, target: r'SortChapter', ), r'sortLibraryAnime': PropertySchema( - id: 127, + id: 128, name: r'sortLibraryAnime', type: IsarType.object, target: r'SortLibraryManga', ), r'sortLibraryManga': PropertySchema( - id: 128, + id: 129, name: r'sortLibraryManga', type: IsarType.object, target: r'SortLibraryManga', ), r'sortLibraryNovel': PropertySchema( - id: 129, + id: 130, name: r'sortLibraryNovel', type: IsarType.object, target: r'SortLibraryManga', ), r'startDatebackup': PropertySchema( - id: 130, + id: 131, name: r'startDatebackup', type: IsarType.long, ), r'themeIsDark': PropertySchema( - id: 131, + id: 132, name: r'themeIsDark', type: IsarType.bool, ), r'updateProgressAfterReading': PropertySchema( - id: 132, + id: 133, name: r'updateProgressAfterReading', type: IsarType.bool, ), r'updatedAt': PropertySchema( - id: 133, + id: 134, name: r'updatedAt', type: IsarType.long, ), r'useLibass': PropertySchema( - id: 134, + id: 135, name: r'useLibass', type: IsarType.bool, ), r'useMpvConfig': PropertySchema( - id: 135, + id: 136, name: r'useMpvConfig', type: IsarType.bool, ), r'usePageTapZones': PropertySchema( - id: 136, + id: 137, name: r'usePageTapZones', type: IsarType.bool, ), r'useYUV420P': PropertySchema( - id: 137, + id: 138, name: r'useYUV420P', type: IsarType.bool, ), r'userAgent': PropertySchema( - id: 138, + id: 139, name: r'userAgent', type: IsarType.string, ), r'volumeBoostCap': PropertySchema( - id: 139, + id: 140, name: r'volumeBoostCap', type: IsarType.long, ), @@ -1381,143 +1386,144 @@ void _settingsSerialize( writer.writeBool(offsets[55], object.enableDiscordRpc); writer.writeBool(offsets[56], object.enableGpuNext); writer.writeBool(offsets[57], object.enableHardwareAcceleration); + writer.writeBool(offsets[58], object.enableLogs); writer.writeObjectList( - offsets[58], + offsets[59], allOffsets, FilterScanlatorSchema.serialize, object.filterScanlatorList, ); - writer.writeDouble(offsets[59], object.flexColorSchemeBlendLevel); - writer.writeLong(offsets[60], object.flexSchemeColorIndex); - writer.writeBool(offsets[61], object.followSystemTheme); - writer.writeBool(offsets[62], object.fullScreenPlayer); - writer.writeBool(offsets[63], object.fullScreenReader); - writer.writeBool(offsets[64], object.hideDiscordRpcInIncognito); - writer.writeStringList(offsets[65], object.hideItems); - writer.writeString(offsets[66], object.hwdecMode); - writer.writeBool(offsets[67], object.incognitoMode); - writer.writeString(offsets[68], object.lastTrackerLibraryLocation); - writer.writeBool(offsets[69], object.libraryDownloadedChapters); - writer.writeLong(offsets[70], object.libraryFilterAnimeBookMarkedType); - writer.writeLong(offsets[71], object.libraryFilterAnimeDownloadType); - writer.writeLong(offsets[72], object.libraryFilterAnimeStartedType); - writer.writeLong(offsets[73], object.libraryFilterAnimeUnreadType); - writer.writeLong(offsets[74], object.libraryFilterMangasBookMarkedType); - writer.writeLong(offsets[75], object.libraryFilterMangasDownloadType); - writer.writeLong(offsets[76], object.libraryFilterMangasStartedType); - writer.writeLong(offsets[77], object.libraryFilterMangasUnreadType); - writer.writeLong(offsets[78], object.libraryFilterNovelBookMarkedType); - writer.writeLong(offsets[79], object.libraryFilterNovelDownloadType); - writer.writeLong(offsets[80], object.libraryFilterNovelStartedType); - writer.writeLong(offsets[81], object.libraryFilterNovelUnreadType); - writer.writeBool(offsets[82], object.libraryLocalSource); - writer.writeBool(offsets[83], object.libraryShowCategoryTabs); - writer.writeBool(offsets[84], object.libraryShowContinueReadingButton); - writer.writeBool(offsets[85], object.libraryShowLanguage); - writer.writeBool(offsets[86], object.libraryShowNumbersOfItems); - writer.writeStringList(offsets[87], object.localFolders); + writer.writeDouble(offsets[60], object.flexColorSchemeBlendLevel); + writer.writeLong(offsets[61], object.flexSchemeColorIndex); + writer.writeBool(offsets[62], object.followSystemTheme); + writer.writeBool(offsets[63], object.fullScreenPlayer); + writer.writeBool(offsets[64], object.fullScreenReader); + writer.writeBool(offsets[65], object.hideDiscordRpcInIncognito); + writer.writeStringList(offsets[66], object.hideItems); + writer.writeString(offsets[67], object.hwdecMode); + writer.writeBool(offsets[68], object.incognitoMode); + writer.writeString(offsets[69], object.lastTrackerLibraryLocation); + writer.writeBool(offsets[70], object.libraryDownloadedChapters); + writer.writeLong(offsets[71], object.libraryFilterAnimeBookMarkedType); + writer.writeLong(offsets[72], object.libraryFilterAnimeDownloadType); + writer.writeLong(offsets[73], object.libraryFilterAnimeStartedType); + writer.writeLong(offsets[74], object.libraryFilterAnimeUnreadType); + writer.writeLong(offsets[75], object.libraryFilterMangasBookMarkedType); + writer.writeLong(offsets[76], object.libraryFilterMangasDownloadType); + writer.writeLong(offsets[77], object.libraryFilterMangasStartedType); + writer.writeLong(offsets[78], object.libraryFilterMangasUnreadType); + writer.writeLong(offsets[79], object.libraryFilterNovelBookMarkedType); + writer.writeLong(offsets[80], object.libraryFilterNovelDownloadType); + writer.writeLong(offsets[81], object.libraryFilterNovelStartedType); + writer.writeLong(offsets[82], object.libraryFilterNovelUnreadType); + writer.writeBool(offsets[83], object.libraryLocalSource); + writer.writeBool(offsets[84], object.libraryShowCategoryTabs); + writer.writeBool(offsets[85], object.libraryShowContinueReadingButton); + writer.writeBool(offsets[86], object.libraryShowLanguage); + writer.writeBool(offsets[87], object.libraryShowNumbersOfItems); + writer.writeStringList(offsets[88], object.localFolders); writer.writeObject( - offsets[88], + offsets[89], allOffsets, L10nLocaleSchema.serialize, object.locale, ); writer.writeObjectList( - offsets[89], + offsets[90], allOffsets, RepoSchema.serialize, object.mangaExtensionsRepo, ); - writer.writeLong(offsets[90], object.mangaGridSize); - writer.writeByte(offsets[91], object.mangaHomeDisplayType.index); - writer.writeLong(offsets[92], object.markEpisodeAsSeenType); - writer.writeBool(offsets[93], object.mergeLibraryNavMobile); - writer.writeStringList(offsets[94], object.navigationOrder); - writer.writeByte(offsets[95], object.novelDisplayType.index); + writer.writeLong(offsets[91], object.mangaGridSize); + writer.writeByte(offsets[92], object.mangaHomeDisplayType.index); + writer.writeLong(offsets[93], object.markEpisodeAsSeenType); + writer.writeBool(offsets[94], object.mergeLibraryNavMobile); + writer.writeStringList(offsets[95], object.navigationOrder); + writer.writeByte(offsets[96], object.novelDisplayType.index); writer.writeObjectList( - offsets[96], + offsets[97], allOffsets, RepoSchema.serialize, object.novelExtensionsRepo, ); - writer.writeLong(offsets[97], object.novelFontSize); - writer.writeLong(offsets[98], object.novelGridSize); - writer.writeBool(offsets[99], object.novelLibraryDownloadedChapters); - writer.writeBool(offsets[100], object.novelLibraryLocalSource); - writer.writeBool(offsets[101], object.novelLibraryShowCategoryTabs); - writer.writeBool(offsets[102], object.novelLibraryShowContinueReadingButton); - writer.writeBool(offsets[103], object.novelLibraryShowLanguage); - writer.writeBool(offsets[104], object.novelLibraryShowNumbersOfItems); - writer.writeDouble(offsets[105], object.novelReaderLineHeight); - writer.writeLong(offsets[106], object.novelReaderPadding); - writer.writeString(offsets[107], object.novelReaderTextColor); - writer.writeString(offsets[108], object.novelReaderTheme); - writer.writeBool(offsets[109], object.novelRemoveExtraParagraphSpacing); - writer.writeBool(offsets[110], object.novelShowScrollPercentage); - writer.writeBool(offsets[111], object.novelTapToScroll); - writer.writeByte(offsets[112], object.novelTextAlign.index); - writer.writeBool(offsets[113], object.onlyIncludePinnedSources); - writer.writeLong(offsets[114], object.pagePreloadAmount); + writer.writeLong(offsets[98], object.novelFontSize); + writer.writeLong(offsets[99], object.novelGridSize); + writer.writeBool(offsets[100], object.novelLibraryDownloadedChapters); + writer.writeBool(offsets[101], object.novelLibraryLocalSource); + writer.writeBool(offsets[102], object.novelLibraryShowCategoryTabs); + writer.writeBool(offsets[103], object.novelLibraryShowContinueReadingButton); + writer.writeBool(offsets[104], object.novelLibraryShowLanguage); + writer.writeBool(offsets[105], object.novelLibraryShowNumbersOfItems); + writer.writeDouble(offsets[106], object.novelReaderLineHeight); + writer.writeLong(offsets[107], object.novelReaderPadding); + writer.writeString(offsets[108], object.novelReaderTextColor); + writer.writeString(offsets[109], object.novelReaderTheme); + writer.writeBool(offsets[110], object.novelRemoveExtraParagraphSpacing); + writer.writeBool(offsets[111], object.novelShowScrollPercentage); + writer.writeBool(offsets[112], object.novelTapToScroll); + writer.writeByte(offsets[113], object.novelTextAlign.index); + writer.writeBool(offsets[114], object.onlyIncludePinnedSources); + writer.writeLong(offsets[115], object.pagePreloadAmount); writer.writeObjectList( - offsets[115], + offsets[116], allOffsets, PersonalPageModeSchema.serialize, object.personalPageModeList, ); writer.writeObjectList( - offsets[116], + offsets[117], allOffsets, PersonalReaderModeSchema.serialize, object.personalReaderModeList, ); writer.writeObject( - offsets[117], + offsets[118], allOffsets, PlayerSubtitleSettingsSchema.serialize, object.playerSubtitleSettings, ); - writer.writeBool(offsets[118], object.pureBlackDarkMode); - writer.writeLong(offsets[119], object.relativeTimesTamps); - writer.writeBool(offsets[120], object.rpcShowCoverImage); - writer.writeBool(offsets[121], object.rpcShowReadingWatchingProgress); - writer.writeBool(offsets[122], object.rpcShowTitle); - writer.writeBool(offsets[123], object.saveAsCBZArchive); - writer.writeByte(offsets[124], object.scaleType.index); - writer.writeBool(offsets[125], object.showPagesNumber); + writer.writeBool(offsets[119], object.pureBlackDarkMode); + writer.writeLong(offsets[120], object.relativeTimesTamps); + writer.writeBool(offsets[121], object.rpcShowCoverImage); + writer.writeBool(offsets[122], object.rpcShowReadingWatchingProgress); + writer.writeBool(offsets[123], object.rpcShowTitle); + writer.writeBool(offsets[124], object.saveAsCBZArchive); + writer.writeByte(offsets[125], object.scaleType.index); + writer.writeBool(offsets[126], object.showPagesNumber); writer.writeObjectList( - offsets[126], + offsets[127], allOffsets, SortChapterSchema.serialize, object.sortChapterList, ); writer.writeObject( - offsets[127], + offsets[128], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryAnime, ); writer.writeObject( - offsets[128], + offsets[129], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryManga, ); writer.writeObject( - offsets[129], + offsets[130], allOffsets, SortLibraryMangaSchema.serialize, object.sortLibraryNovel, ); - writer.writeLong(offsets[130], object.startDatebackup); - writer.writeBool(offsets[131], object.themeIsDark); - writer.writeBool(offsets[132], object.updateProgressAfterReading); - writer.writeLong(offsets[133], object.updatedAt); - writer.writeBool(offsets[134], object.useLibass); - writer.writeBool(offsets[135], object.useMpvConfig); - writer.writeBool(offsets[136], object.usePageTapZones); - writer.writeBool(offsets[137], object.useYUV420P); - writer.writeString(offsets[138], object.userAgent); - writer.writeLong(offsets[139], object.volumeBoostCap); + writer.writeLong(offsets[131], object.startDatebackup); + writer.writeBool(offsets[132], object.themeIsDark); + writer.writeBool(offsets[133], object.updateProgressAfterReading); + writer.writeLong(offsets[134], object.updatedAt); + writer.writeBool(offsets[135], object.useLibass); + writer.writeBool(offsets[136], object.useMpvConfig); + writer.writeBool(offsets[137], object.usePageTapZones); + writer.writeBool(offsets[138], object.useYUV420P); + writer.writeString(offsets[139], object.userAgent); + writer.writeLong(offsets[140], object.volumeBoostCap); } Settings _settingsDeserialize( @@ -1650,141 +1656,142 @@ Settings _settingsDeserialize( enableDiscordRpc: reader.readBoolOrNull(offsets[55]), enableGpuNext: reader.readBoolOrNull(offsets[56]), enableHardwareAcceleration: reader.readBoolOrNull(offsets[57]), - flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[59]), - flexSchemeColorIndex: reader.readLongOrNull(offsets[60]), - followSystemTheme: reader.readBoolOrNull(offsets[61]), - fullScreenPlayer: reader.readBoolOrNull(offsets[62]), - fullScreenReader: reader.readBoolOrNull(offsets[63]), - hideDiscordRpcInIncognito: reader.readBoolOrNull(offsets[64]), - hideItems: reader.readStringList(offsets[65]), - hwdecMode: reader.readStringOrNull(offsets[66]), + enableLogs: reader.readBoolOrNull(offsets[58]), + flexColorSchemeBlendLevel: reader.readDoubleOrNull(offsets[60]), + flexSchemeColorIndex: reader.readLongOrNull(offsets[61]), + followSystemTheme: reader.readBoolOrNull(offsets[62]), + fullScreenPlayer: reader.readBoolOrNull(offsets[63]), + fullScreenReader: reader.readBoolOrNull(offsets[64]), + hideDiscordRpcInIncognito: reader.readBoolOrNull(offsets[65]), + hideItems: reader.readStringList(offsets[66]), + hwdecMode: reader.readStringOrNull(offsets[67]), id: id, - incognitoMode: reader.readBoolOrNull(offsets[67]), - lastTrackerLibraryLocation: reader.readStringOrNull(offsets[68]), - libraryDownloadedChapters: reader.readBoolOrNull(offsets[69]), - libraryFilterAnimeBookMarkedType: reader.readLongOrNull(offsets[70]), - libraryFilterAnimeDownloadType: reader.readLongOrNull(offsets[71]), - libraryFilterAnimeStartedType: reader.readLongOrNull(offsets[72]), - libraryFilterAnimeUnreadType: reader.readLongOrNull(offsets[73]), - libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[74]), - libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[75]), - libraryFilterMangasStartedType: reader.readLongOrNull(offsets[76]), - libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[77]), - libraryFilterNovelBookMarkedType: reader.readLongOrNull(offsets[78]), - libraryFilterNovelDownloadType: reader.readLongOrNull(offsets[79]), - libraryFilterNovelStartedType: reader.readLongOrNull(offsets[80]), - libraryFilterNovelUnreadType: reader.readLongOrNull(offsets[81]), - libraryLocalSource: reader.readBoolOrNull(offsets[82]), - libraryShowCategoryTabs: reader.readBoolOrNull(offsets[83]), - libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[84]), - libraryShowLanguage: reader.readBoolOrNull(offsets[85]), - libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[86]), - localFolders: reader.readStringList(offsets[87]), + incognitoMode: reader.readBoolOrNull(offsets[68]), + lastTrackerLibraryLocation: reader.readStringOrNull(offsets[69]), + libraryDownloadedChapters: reader.readBoolOrNull(offsets[70]), + libraryFilterAnimeBookMarkedType: reader.readLongOrNull(offsets[71]), + libraryFilterAnimeDownloadType: reader.readLongOrNull(offsets[72]), + libraryFilterAnimeStartedType: reader.readLongOrNull(offsets[73]), + libraryFilterAnimeUnreadType: reader.readLongOrNull(offsets[74]), + libraryFilterMangasBookMarkedType: reader.readLongOrNull(offsets[75]), + libraryFilterMangasDownloadType: reader.readLongOrNull(offsets[76]), + libraryFilterMangasStartedType: reader.readLongOrNull(offsets[77]), + libraryFilterMangasUnreadType: reader.readLongOrNull(offsets[78]), + libraryFilterNovelBookMarkedType: reader.readLongOrNull(offsets[79]), + libraryFilterNovelDownloadType: reader.readLongOrNull(offsets[80]), + libraryFilterNovelStartedType: reader.readLongOrNull(offsets[81]), + libraryFilterNovelUnreadType: reader.readLongOrNull(offsets[82]), + libraryLocalSource: reader.readBoolOrNull(offsets[83]), + libraryShowCategoryTabs: reader.readBoolOrNull(offsets[84]), + libraryShowContinueReadingButton: reader.readBoolOrNull(offsets[85]), + libraryShowLanguage: reader.readBoolOrNull(offsets[86]), + libraryShowNumbersOfItems: reader.readBoolOrNull(offsets[87]), + localFolders: reader.readStringList(offsets[88]), mangaExtensionsRepo: reader.readObjectList( - offsets[89], + offsets[90], RepoSchema.deserialize, allOffsets, Repo(), ), - mangaGridSize: reader.readLongOrNull(offsets[90]), + mangaGridSize: reader.readLongOrNull(offsets[91]), mangaHomeDisplayType: _SettingsmangaHomeDisplayTypeValueEnumMap[reader.readByteOrNull( - offsets[91], + offsets[92], )] ?? DisplayType.comfortableGrid, - markEpisodeAsSeenType: reader.readLongOrNull(offsets[92]), - mergeLibraryNavMobile: reader.readBoolOrNull(offsets[93]), - navigationOrder: reader.readStringList(offsets[94]), + markEpisodeAsSeenType: reader.readLongOrNull(offsets[93]), + mergeLibraryNavMobile: reader.readBoolOrNull(offsets[94]), + navigationOrder: reader.readStringList(offsets[95]), novelDisplayType: _SettingsnovelDisplayTypeValueEnumMap[reader.readByteOrNull( - offsets[95], + offsets[96], )] ?? DisplayType.comfortableGrid, novelExtensionsRepo: reader.readObjectList( - offsets[96], + offsets[97], RepoSchema.deserialize, allOffsets, Repo(), ), - novelFontSize: reader.readLongOrNull(offsets[97]), - novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[99]), - novelLibraryLocalSource: reader.readBoolOrNull(offsets[100]), - novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[101]), - novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[102]), - novelLibraryShowLanguage: reader.readBoolOrNull(offsets[103]), - novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[104]), - novelReaderLineHeight: reader.readDoubleOrNull(offsets[105]), - novelReaderPadding: reader.readLongOrNull(offsets[106]), - novelReaderTextColor: reader.readStringOrNull(offsets[107]), - novelReaderTheme: reader.readStringOrNull(offsets[108]), - novelRemoveExtraParagraphSpacing: reader.readBoolOrNull(offsets[109]), - novelShowScrollPercentage: reader.readBoolOrNull(offsets[110]), - novelTapToScroll: reader.readBoolOrNull(offsets[111]), + novelFontSize: reader.readLongOrNull(offsets[98]), + novelLibraryDownloadedChapters: reader.readBoolOrNull(offsets[100]), + novelLibraryLocalSource: reader.readBoolOrNull(offsets[101]), + novelLibraryShowCategoryTabs: reader.readBoolOrNull(offsets[102]), + novelLibraryShowContinueReadingButton: reader.readBoolOrNull(offsets[103]), + novelLibraryShowLanguage: reader.readBoolOrNull(offsets[104]), + novelLibraryShowNumbersOfItems: reader.readBoolOrNull(offsets[105]), + novelReaderLineHeight: reader.readDoubleOrNull(offsets[106]), + novelReaderPadding: reader.readLongOrNull(offsets[107]), + novelReaderTextColor: reader.readStringOrNull(offsets[108]), + novelReaderTheme: reader.readStringOrNull(offsets[109]), + novelRemoveExtraParagraphSpacing: reader.readBoolOrNull(offsets[110]), + novelShowScrollPercentage: reader.readBoolOrNull(offsets[111]), + novelTapToScroll: reader.readBoolOrNull(offsets[112]), novelTextAlign: _SettingsnovelTextAlignValueEnumMap[reader.readByteOrNull( - offsets[112], + offsets[113], )] ?? NovelTextAlign.left, - onlyIncludePinnedSources: reader.readBoolOrNull(offsets[113]), - pagePreloadAmount: reader.readLongOrNull(offsets[114]), + onlyIncludePinnedSources: reader.readBoolOrNull(offsets[114]), + pagePreloadAmount: reader.readLongOrNull(offsets[115]), personalPageModeList: reader.readObjectList( - offsets[115], + offsets[116], PersonalPageModeSchema.deserialize, allOffsets, PersonalPageMode(), ), personalReaderModeList: reader.readObjectList( - offsets[116], + offsets[117], PersonalReaderModeSchema.deserialize, allOffsets, PersonalReaderMode(), ), playerSubtitleSettings: reader.readObjectOrNull( - offsets[117], + offsets[118], PlayerSubtitleSettingsSchema.deserialize, allOffsets, ), - pureBlackDarkMode: reader.readBoolOrNull(offsets[118]), - relativeTimesTamps: reader.readLongOrNull(offsets[119]), - rpcShowCoverImage: reader.readBoolOrNull(offsets[120]), - rpcShowReadingWatchingProgress: reader.readBoolOrNull(offsets[121]), - rpcShowTitle: reader.readBoolOrNull(offsets[122]), - saveAsCBZArchive: reader.readBoolOrNull(offsets[123]), + pureBlackDarkMode: reader.readBoolOrNull(offsets[119]), + relativeTimesTamps: reader.readLongOrNull(offsets[120]), + rpcShowCoverImage: reader.readBoolOrNull(offsets[121]), + rpcShowReadingWatchingProgress: reader.readBoolOrNull(offsets[122]), + rpcShowTitle: reader.readBoolOrNull(offsets[123]), + saveAsCBZArchive: reader.readBoolOrNull(offsets[124]), scaleType: - _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[124])] ?? + _SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offsets[125])] ?? ScaleType.fitScreen, - showPagesNumber: reader.readBoolOrNull(offsets[125]), + showPagesNumber: reader.readBoolOrNull(offsets[126]), sortChapterList: reader.readObjectList( - offsets[126], + offsets[127], SortChapterSchema.deserialize, allOffsets, SortChapter(), ), sortLibraryAnime: reader.readObjectOrNull( - offsets[127], - SortLibraryMangaSchema.deserialize, - allOffsets, - ), - sortLibraryManga: reader.readObjectOrNull( offsets[128], SortLibraryMangaSchema.deserialize, allOffsets, ), - sortLibraryNovel: reader.readObjectOrNull( + sortLibraryManga: reader.readObjectOrNull( offsets[129], SortLibraryMangaSchema.deserialize, allOffsets, ), - startDatebackup: reader.readLongOrNull(offsets[130]), - themeIsDark: reader.readBoolOrNull(offsets[131]), - updateProgressAfterReading: reader.readBoolOrNull(offsets[132]), - updatedAt: reader.readLongOrNull(offsets[133]), - useLibass: reader.readBoolOrNull(offsets[134]), - useMpvConfig: reader.readBoolOrNull(offsets[135]), - usePageTapZones: reader.readBoolOrNull(offsets[136]), - useYUV420P: reader.readBoolOrNull(offsets[137]), - userAgent: reader.readStringOrNull(offsets[138]), - volumeBoostCap: reader.readLongOrNull(offsets[139]), + sortLibraryNovel: reader.readObjectOrNull( + offsets[130], + SortLibraryMangaSchema.deserialize, + allOffsets, + ), + startDatebackup: reader.readLongOrNull(offsets[131]), + themeIsDark: reader.readBoolOrNull(offsets[132]), + updateProgressAfterReading: reader.readBoolOrNull(offsets[133]), + updatedAt: reader.readLongOrNull(offsets[134]), + useLibass: reader.readBoolOrNull(offsets[135]), + useMpvConfig: reader.readBoolOrNull(offsets[136]), + usePageTapZones: reader.readBoolOrNull(offsets[137]), + useYUV420P: reader.readBoolOrNull(offsets[138]), + userAgent: reader.readStringOrNull(offsets[139]), + volumeBoostCap: reader.readLongOrNull(offsets[140]), ); object.chapterFilterBookmarkedList = reader .readObjectList( @@ -1805,17 +1812,17 @@ Settings _settingsDeserialize( allOffsets, ); object.filterScanlatorList = reader.readObjectList( - offsets[58], + offsets[59], FilterScanlatorSchema.deserialize, allOffsets, FilterScanlator(), ); object.locale = reader.readObjectOrNull( - offsets[88], + offsets[89], L10nLocaleSchema.deserialize, allOffsets, ); - object.novelGridSize = reader.readLongOrNull(offsets[98]); + object.novelGridSize = reader.readLongOrNull(offsets[99]); return object; } @@ -2036,6 +2043,8 @@ P _settingsDeserializeProp

( case 57: return (reader.readBoolOrNull(offset)) as P; case 58: + return (reader.readBoolOrNull(offset)) as P; + case 59: return (reader.readObjectList( offset, FilterScanlatorSchema.deserialize, @@ -2043,12 +2052,10 @@ P _settingsDeserializeProp

( FilterScanlator(), )) as P; - case 59: - return (reader.readDoubleOrNull(offset)) as P; case 60: - return (reader.readLongOrNull(offset)) as P; + return (reader.readDoubleOrNull(offset)) as P; case 61: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 62: return (reader.readBoolOrNull(offset)) as P; case 63: @@ -2056,17 +2063,17 @@ P _settingsDeserializeProp

( case 64: return (reader.readBoolOrNull(offset)) as P; case 65: - return (reader.readStringList(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 66: - return (reader.readStringOrNull(offset)) as P; + return (reader.readStringList(offset)) as P; case 67: - return (reader.readBoolOrNull(offset)) as P; - case 68: return (reader.readStringOrNull(offset)) as P; - case 69: + case 68: return (reader.readBoolOrNull(offset)) as P; + case 69: + return (reader.readStringOrNull(offset)) as P; case 70: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 71: return (reader.readLongOrNull(offset)) as P; case 72: @@ -2090,7 +2097,7 @@ P _settingsDeserializeProp

( case 81: return (reader.readLongOrNull(offset)) as P; case 82: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 83: return (reader.readBoolOrNull(offset)) as P; case 84: @@ -2100,15 +2107,17 @@ P _settingsDeserializeProp

( case 86: return (reader.readBoolOrNull(offset)) as P; case 87: - return (reader.readStringList(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 88: + return (reader.readStringList(offset)) as P; + case 89: return (reader.readObjectOrNull( offset, L10nLocaleSchema.deserialize, allOffsets, )) as P; - case 89: + case 90: return (reader.readObjectList( offset, RepoSchema.deserialize, @@ -2116,27 +2125,27 @@ P _settingsDeserializeProp

( Repo(), )) as P; - case 90: - return (reader.readLongOrNull(offset)) as P; case 91: + return (reader.readLongOrNull(offset)) as P; + case 92: return (_SettingsmangaHomeDisplayTypeValueEnumMap[reader.readByteOrNull( offset, )] ?? DisplayType.comfortableGrid) as P; - case 92: - return (reader.readLongOrNull(offset)) as P; case 93: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 94: - return (reader.readStringList(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 95: + return (reader.readStringList(offset)) as P; + case 96: return (_SettingsnovelDisplayTypeValueEnumMap[reader.readByteOrNull( offset, )] ?? DisplayType.comfortableGrid) as P; - case 96: + case 97: return (reader.readObjectList( offset, RepoSchema.deserialize, @@ -2144,12 +2153,10 @@ P _settingsDeserializeProp

( Repo(), )) as P; - case 97: - return (reader.readLongOrNull(offset)) as P; case 98: return (reader.readLongOrNull(offset)) as P; case 99: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 100: return (reader.readBoolOrNull(offset)) as P; case 101: @@ -2161,30 +2168,32 @@ P _settingsDeserializeProp

( case 104: return (reader.readBoolOrNull(offset)) as P; case 105: - return (reader.readDoubleOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 106: - return (reader.readLongOrNull(offset)) as P; + return (reader.readDoubleOrNull(offset)) as P; case 107: - return (reader.readStringOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 108: return (reader.readStringOrNull(offset)) as P; case 109: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readStringOrNull(offset)) as P; case 110: return (reader.readBoolOrNull(offset)) as P; case 111: return (reader.readBoolOrNull(offset)) as P; case 112: + return (reader.readBoolOrNull(offset)) as P; + case 113: return (_SettingsnovelTextAlignValueEnumMap[reader.readByteOrNull( offset, )] ?? NovelTextAlign.left) as P; - case 113: - return (reader.readBoolOrNull(offset)) as P; case 114: - return (reader.readLongOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 115: + return (reader.readLongOrNull(offset)) as P; + case 116: return (reader.readObjectList( offset, PersonalPageModeSchema.deserialize, @@ -2192,7 +2201,7 @@ P _settingsDeserializeProp

( PersonalPageMode(), )) as P; - case 116: + case 117: return (reader.readObjectList( offset, PersonalReaderModeSchema.deserialize, @@ -2200,19 +2209,17 @@ P _settingsDeserializeProp

( PersonalReaderMode(), )) as P; - case 117: + case 118: return (reader.readObjectOrNull( offset, PlayerSubtitleSettingsSchema.deserialize, allOffsets, )) as P; - case 118: - return (reader.readBoolOrNull(offset)) as P; case 119: - return (reader.readLongOrNull(offset)) as P; - case 120: return (reader.readBoolOrNull(offset)) as P; + case 120: + return (reader.readLongOrNull(offset)) as P; case 121: return (reader.readBoolOrNull(offset)) as P; case 122: @@ -2220,12 +2227,14 @@ P _settingsDeserializeProp

( case 123: return (reader.readBoolOrNull(offset)) as P; case 124: + return (reader.readBoolOrNull(offset)) as P; + case 125: return (_SettingsscaleTypeValueEnumMap[reader.readByteOrNull(offset)] ?? ScaleType.fitScreen) as P; - case 125: - return (reader.readBoolOrNull(offset)) as P; case 126: + return (reader.readBoolOrNull(offset)) as P; + case 127: return (reader.readObjectList( offset, SortChapterSchema.deserialize, @@ -2233,13 +2242,6 @@ P _settingsDeserializeProp

( SortChapter(), )) as P; - case 127: - return (reader.readObjectOrNull( - offset, - SortLibraryMangaSchema.deserialize, - allOffsets, - )) - as P; case 128: return (reader.readObjectOrNull( offset, @@ -2255,15 +2257,20 @@ P _settingsDeserializeProp

( )) as P; case 130: - return (reader.readLongOrNull(offset)) as P; + return (reader.readObjectOrNull( + offset, + SortLibraryMangaSchema.deserialize, + allOffsets, + )) + as P; case 131: - return (reader.readBoolOrNull(offset)) as P; + return (reader.readLongOrNull(offset)) as P; case 132: return (reader.readBoolOrNull(offset)) as P; case 133: - return (reader.readLongOrNull(offset)) as P; - case 134: return (reader.readBoolOrNull(offset)) as P; + case 134: + return (reader.readLongOrNull(offset)) as P; case 135: return (reader.readBoolOrNull(offset)) as P; case 136: @@ -2271,8 +2278,10 @@ P _settingsDeserializeProp

( case 137: return (reader.readBoolOrNull(offset)) as P; case 138: - return (reader.readStringOrNull(offset)) as P; + return (reader.readBoolOrNull(offset)) as P; case 139: + return (reader.readStringOrNull(offset)) as P; + case 140: return (reader.readLongOrNull(offset)) as P; default: throw IsarError('Unknown property with id $propertyId'); @@ -6496,6 +6505,33 @@ extension SettingsQueryFilter }); } + QueryBuilder enableLogsIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNull(property: r'enableLogs'), + ); + }); + } + + QueryBuilder + enableLogsIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + const FilterCondition.isNotNull(property: r'enableLogs'), + ); + }); + } + + QueryBuilder enableLogsEqualTo( + bool? value, + ) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition( + FilterCondition.equalTo(property: r'enableLogs', value: value), + ); + }); + } + QueryBuilder filterScanlatorListIsNull() { return QueryBuilder.apply(this, (query) { @@ -12679,6 +12715,18 @@ extension SettingsQuerySortBy on QueryBuilder { }); } + QueryBuilder sortByEnableLogs() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableLogs', Sort.asc); + }); + } + + QueryBuilder sortByEnableLogsDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableLogs', Sort.desc); + }); + } + QueryBuilder sortByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { @@ -14175,6 +14223,18 @@ extension SettingsQuerySortThenBy }); } + QueryBuilder thenByEnableLogs() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableLogs', Sort.asc); + }); + } + + QueryBuilder thenByEnableLogsDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'enableLogs', Sort.desc); + }); + } + QueryBuilder thenByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { @@ -15413,6 +15473,12 @@ extension SettingsQueryWhereDistinct }); } + QueryBuilder distinctByEnableLogs() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'enableLogs'); + }); + } + QueryBuilder distinctByFlexColorSchemeBlendLevel() { return QueryBuilder.apply(this, (query) { @@ -16286,6 +16352,12 @@ extension SettingsQueryProperty }); } + QueryBuilder enableLogsProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'enableLogs'); + }); + } + QueryBuilder?, QQueryOperations> filterScanlatorListProperty() { return QueryBuilder.apply(this, (query) { diff --git a/lib/modules/more/about/about_screen.dart b/lib/modules/more/about/about_screen.dart index b0f0e8f5..8351b0af 100644 --- a/lib/modules/more/about/about_screen.dart +++ b/lib/modules/more/about/about_screen.dart @@ -9,9 +9,11 @@ import 'package:mangayomi/main.dart'; import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/modules/more/about/providers/check_for_update.dart'; import 'package:mangayomi/modules/more/about/providers/get_package_info.dart'; +import 'package:mangayomi/modules/more/about/providers/logs_state.dart'; import 'package:mangayomi/modules/widgets/progress_center.dart'; import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/storage_provider.dart'; +import 'package:mangayomi/utils/log/logger.dart'; import 'package:path/path.dart' as path; import 'package:share_plus/share_plus.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -23,6 +25,7 @@ class AboutScreen extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final l10n = l10nLocalizations(context); final checkForUpdates = ref.watch(checkForAppUpdatesProvider); + final enableLogs = ref.watch(logsStateProvider); return Scaffold( appBar: AppBar(title: Text(l10n!.about)), body: ref @@ -80,38 +83,58 @@ class AboutScreen extends ConsumerWidget { }, title: Text(l10n.check_for_update), ), - ListTile( - onTap: () async { - final storage = StorageProvider(); - final directory = await storage.getDefaultDirectory(); - final file = File( - path.join(directory!.path, 'logs.txt'), - ); - if (await file.exists()) { - if (Platform.isLinux) { - await Clipboard.setData( - ClipboardData(text: file.path), - ); - } - if (context.mounted) { - final box = - context.findRenderObject() as RenderBox?; - SharePlus.instance.share( - ShareParams( - files: [XFile(file.path)], - text: "log.txt", - sharePositionOrigin: - box!.localToGlobal(Offset.zero) & - box.size, - ), - ); - } + SwitchListTile( + title: Text(l10n.logs_on), + value: enableLogs, + onChanged: (value) { + isar.writeTxnSync(() { + final settings = isar.settings.getSync(227); + isar.settings.putSync( + settings!..enableLogs = value, + ); + }); + ref.invalidate(logsStateProvider); + if (value) { + AppLogger.init(); } else { - botToast(l10n.no_app_logs); + AppLogger.dispose(); } }, - title: Text(l10n.share_app_logs), ), + if (enableLogs) + ListTile( + onTap: () async { + final storage = StorageProvider(); + final directory = await storage + .getDefaultDirectory(); + final file = File( + path.join(directory!.path, 'logs.txt'), + ); + if (await file.exists()) { + if (Platform.isLinux) { + await Clipboard.setData( + ClipboardData(text: file.path), + ); + } + if (context.mounted) { + final box = + context.findRenderObject() as RenderBox?; + SharePlus.instance.share( + ShareParams( + files: [XFile(file.path)], + text: "log.txt", + sharePositionOrigin: + box!.localToGlobal(Offset.zero) & + box.size, + ), + ); + } + } else { + botToast(l10n.no_app_logs); + } + }, + title: Text(l10n.share_app_logs), + ), // ListTile( // onTap: () {}, // title: const Text("What's news"), diff --git a/lib/modules/more/about/providers/logs_state.dart b/lib/modules/more/about/providers/logs_state.dart new file mode 100644 index 00000000..03f195fb --- /dev/null +++ b/lib/modules/more/about/providers/logs_state.dart @@ -0,0 +1,9 @@ +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/settings.dart'; +import 'package:riverpod_annotation/riverpod_annotation.dart'; +part 'logs_state.g.dart'; + +@riverpod +bool logsState(Ref ref) { + return isar.settings.getSync(227)?.enableLogs ?? false; +} diff --git a/lib/modules/more/about/providers/logs_state.g.dart b/lib/modules/more/about/providers/logs_state.g.dart new file mode 100644 index 00000000..2bb1a599 --- /dev/null +++ b/lib/modules/more/about/providers/logs_state.g.dart @@ -0,0 +1,50 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'logs_state.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning + +@ProviderFor(logsState) +const logsStateProvider = LogsStateProvider._(); + +final class LogsStateProvider extends $FunctionalProvider + with $Provider { + const LogsStateProvider._() + : super( + from: null, + argument: null, + retry: null, + name: r'logsStateProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, + ); + + @override + String debugGetCreateSourceHash() => _$logsStateHash(); + + @$internal + @override + $ProviderElement $createElement($ProviderPointer pointer) => + $ProviderElement(pointer); + + @override + bool create(Ref ref) { + return logsState(ref); + } + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(bool value) { + return $ProviderOverride( + origin: this, + providerOverride: $SyncValueProvider(value), + ); + } +} + +String _$logsStateHash() => r'680ab781a039e0441394dc0b376b8add0fb80910'; diff --git a/lib/utils/log/logger.dart b/lib/utils/log/logger.dart index ad01e929..22f8a8c6 100644 --- a/lib/utils/log/logger.dart +++ b/lib/utils/log/logger.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; - +import 'package:mangayomi/main.dart'; +import 'package:mangayomi/models/settings.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:path/path.dart' as path; @@ -12,6 +13,8 @@ class AppLogger { /// Initialize the logger static Future init() async { + final enabled = isar.settings.getSync(227)?.enableLogs ?? false; + if (!enabled) return; final storage = StorageProvider(); final directory = await storage.getDefaultDirectory(); _logFile = File(path.join(directory!.path, 'logs.txt'));