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.
This commit is contained in:
NBA2K1 2025-12-13 00:42:50 +01:00
parent 9ac6237caf
commit 284fccd1ef
39 changed files with 565 additions and 329 deletions

View file

@ -451,6 +451,7 @@
"downloaded_only": "المحملة فقط", "downloaded_only": "المحملة فقط",
"downloaded_only_description": "إظهار الإدخالات المحملة فقط في مكتبتك", "downloaded_only_description": "إظهار الإدخالات المحملة فقط في مكتبتك",
"concurrent_downloads": "التحميلات المتزامنة", "concurrent_downloads": "التحميلات المتزامنة",
"logs_on": "تفعيل التسجيل",
"share_app_logs": "مشاركة سجلات التطبيق", "share_app_logs": "مشاركة سجلات التطبيق",
"no_app_logs": "لا يوجد ملف log.txt!", "no_app_logs": "لا يوجد ملف log.txt!",
"failed": "فشل!", "failed": "فشل!",
@ -560,4 +561,4 @@
"show_scroll_percentage": "إظهار نسبة التمرير", "show_scroll_percentage": "إظهار نسبة التمرير",
"remove_extra_paragraph_spacing": "إزالة المسافات الإضافية بين الفقرات", "remove_extra_paragraph_spacing": "إزالة المسافات الإضافية بين الفقرات",
"select_label_color": "تحديد لون {label}" "select_label_color": "تحديد لون {label}"
} }

View file

@ -305,6 +305,7 @@
"default_subtitle_language": "ডিফল্ট উপশিৰোনাম ভাষা", "default_subtitle_language": "ডিফল্ট উপশিৰোনাম ভাষা",
"follow_system_theme": "ছিষ্টেম থিম অনুসৰণ কৰক", "follow_system_theme": "ছিষ্টেম থিম অনুসৰণ কৰক",
"concurrent_downloads": "সমসাময়িক ডাউনলোড", "concurrent_downloads": "সমসাময়িক ডাউনলোড",
"logs_on": "লগিং সক্ষম কৰক",
"share_app_logs": "এপ লগ শ্বেয়াৰ কৰক", "share_app_logs": "এপ লগ শ্বেয়াৰ কৰক",
"no_app_logs": "কোনো log.txt ফাইল উপলব্ধ নাই!", "no_app_logs": "কোনো log.txt ফাইল উপলব্ধ নাই!",
"failed": "বিফল!", "failed": "বিফল!",

View file

@ -465,6 +465,7 @@
"downloaded_only": "Nur heruntergeladene", "downloaded_only": "Nur heruntergeladene",
"downloaded_only_description": "Nur heruntergeladene Einträge in deiner Bibliothek anzeigen", "downloaded_only_description": "Nur heruntergeladene Einträge in deiner Bibliothek anzeigen",
"concurrent_downloads": "Gleichzeitige Downloads", "concurrent_downloads": "Gleichzeitige Downloads",
"logs_on": "Protokollierung aktivieren",
"share_app_logs": "App-Protokolle teilen", "share_app_logs": "App-Protokolle teilen",
"no_app_logs": "Keine log.txt Datei verfügbar!", "no_app_logs": "Keine log.txt Datei verfügbar!",
"failed": "Fehlgeschlagen!", "failed": "Fehlgeschlagen!",

View file

@ -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", "nsfw_sources_info": "This does not prevent unofficial or potentially incorrectly flagged extensions from surfacing NSFW (18+) content within the app",
"version": "Version", "version": "Version",
"check_for_update": "Check for update", "check_for_update": "Check for update",
"logs_on": "Enable logging",
"share_app_logs": "Share app logs", "share_app_logs": "Share app logs",
"no_app_logs": "No log.txt available!", "no_app_logs": "No log.txt available!",
"failed": "Failed!", "failed": "Failed!",

View file

@ -449,6 +449,7 @@
"downloaded_only": "Solo descargados", "downloaded_only": "Solo descargados",
"downloaded_only_description": "Mostrar solo entradas descargadas en tu biblioteca", "downloaded_only_description": "Mostrar solo entradas descargadas en tu biblioteca",
"concurrent_downloads": "Descargas simultáneas", "concurrent_downloads": "Descargas simultáneas",
"logs_on": "Activar registro",
"share_app_logs": "Compartir registros de la aplicación", "share_app_logs": "Compartir registros de la aplicación",
"no_app_logs": "¡No hay archivo log.txt disponible!", "no_app_logs": "¡No hay archivo log.txt disponible!",
"failed": "¡Fallido!", "failed": "¡Fallido!",

View file

@ -451,6 +451,7 @@
"downloaded_only": "Solo descargados", "downloaded_only": "Solo descargados",
"downloaded_only_description": "Mostrar solo entradas descargadas en tu biblioteca", "downloaded_only_description": "Mostrar solo entradas descargadas en tu biblioteca",
"concurrent_downloads": "Descargas simultáneas", "concurrent_downloads": "Descargas simultáneas",
"logs_on": "Habilitar registro",
"share_app_logs": "Compartir registros de la aplicación", "share_app_logs": "Compartir registros de la aplicación",
"no_app_logs": "¡No hay archivo log.txt disponible!", "no_app_logs": "¡No hay archivo log.txt disponible!",
"failed": "¡Fallido!", "failed": "¡Fallido!",

View file

@ -455,6 +455,7 @@
"downloaded_only": "Téléchargés uniquement", "downloaded_only": "Téléchargés uniquement",
"downloaded_only_description": "Afficher uniquement les entrées téléchargées dans votre bibliothèque", "downloaded_only_description": "Afficher uniquement les entrées téléchargées dans votre bibliothèque",
"concurrent_downloads": "Téléchargements simultanés", "concurrent_downloads": "Téléchargements simultanés",
"logs_on": "Activer la journalisation",
"share_app_logs": "Partager les journaux de l'application", "share_app_logs": "Partager les journaux de l'application",
"no_app_logs": "Aucun fichier log.txt disponible !", "no_app_logs": "Aucun fichier log.txt disponible !",
"failed": "Échoué !", "failed": "Échoué !",

View file

@ -305,6 +305,7 @@
"default_subtitle_language": "डिफ़ॉल्ट उपशीर्षक भाषा", "default_subtitle_language": "डिफ़ॉल्ट उपशीर्षक भाषा",
"follow_system_theme": "सिस्टम थीम का पालन करें", "follow_system_theme": "सिस्टम थीम का पालन करें",
"concurrent_downloads": "समवर्ती डाउनलोड", "concurrent_downloads": "समवर्ती डाउनलोड",
"logs_on": "लॉगिंग सक्षम करें",
"share_app_logs": "ऐप लॉग साझा करें", "share_app_logs": "ऐप लॉग साझा करें",
"no_app_logs": "कोई log.txt फ़ाइल उपलब्ध नहीं!", "no_app_logs": "कोई log.txt फ़ाइल उपलब्ध नहीं!",
"failed": "विफल!", "failed": "विफल!",

View file

@ -449,6 +449,7 @@
"downloaded_only": "Hanya yang diunduh", "downloaded_only": "Hanya yang diunduh",
"downloaded_only_description": "Hanya tampilkan entri yang diunduh di perpustakaan Anda", "downloaded_only_description": "Hanya tampilkan entri yang diunduh di perpustakaan Anda",
"concurrent_downloads": "Unduhan bersamaan", "concurrent_downloads": "Unduhan bersamaan",
"logs_on": "Aktifkan pencatatan",
"share_app_logs": "Bagikan log aplikasi", "share_app_logs": "Bagikan log aplikasi",
"no_app_logs": "Tidak ada file log.txt tersedia!", "no_app_logs": "Tidak ada file log.txt tersedia!",
"failed": "Gagal!", "failed": "Gagal!",

View file

@ -449,6 +449,7 @@
"downloaded_only": "Solo scaricati", "downloaded_only": "Solo scaricati",
"downloaded_only_description": "Mostra solo le voci scaricate nella tua libreria", "downloaded_only_description": "Mostra solo le voci scaricate nella tua libreria",
"concurrent_downloads": "Download simultanei", "concurrent_downloads": "Download simultanei",
"logs_on": "Abilita registrazione",
"share_app_logs": "Condividi i log dell'app", "share_app_logs": "Condividi i log dell'app",
"no_app_logs": "Nessun file log.txt disponibile!", "no_app_logs": "Nessun file log.txt disponibile!",
"failed": "Fallito!", "failed": "Fallito!",

View file

@ -304,6 +304,7 @@
"default_subtitle_language": "デフォルト字幕言語", "default_subtitle_language": "デフォルト字幕言語",
"follow_system_theme": "システムテーマに従う", "follow_system_theme": "システムテーマに従う",
"concurrent_downloads": "同時ダウンロード", "concurrent_downloads": "同時ダウンロード",
"logs_on": "ログを有効にする",
"share_app_logs": "アプリログを共有", "share_app_logs": "アプリログを共有",
"no_app_logs": "log.txtファイルが利用できません", "no_app_logs": "log.txtファイルが利用できません",
"failed": "失敗!", "failed": "失敗!",

View file

@ -449,6 +449,7 @@
"downloaded_only": "Apenas baixados", "downloaded_only": "Apenas baixados",
"downloaded_only_description": "Mostrar apenas entradas baixadas na sua biblioteca", "downloaded_only_description": "Mostrar apenas entradas baixadas na sua biblioteca",
"concurrent_downloads": "Downloads simultâneos", "concurrent_downloads": "Downloads simultâneos",
"logs_on": "Ativar registro",
"share_app_logs": "Compartilhar logs do aplicativo", "share_app_logs": "Compartilhar logs do aplicativo",
"no_app_logs": "Nenhum arquivo log.txt disponível!", "no_app_logs": "Nenhum arquivo log.txt disponível!",
"failed": "Falhou!", "failed": "Falhou!",

View file

@ -449,6 +449,7 @@
"downloaded_only": "Apenas baixados", "downloaded_only": "Apenas baixados",
"downloaded_only_description": "Mostrar apenas entradas baixadas na sua biblioteca", "downloaded_only_description": "Mostrar apenas entradas baixadas na sua biblioteca",
"concurrent_downloads": "Downloads simultâneos", "concurrent_downloads": "Downloads simultâneos",
"logs_on": "Ativar registro",
"share_app_logs": "Compartilhar logs do aplicativo", "share_app_logs": "Compartilhar logs do aplicativo",
"no_app_logs": "Nenhum arquivo log.txt disponível!", "no_app_logs": "Nenhum arquivo log.txt disponível!",
"failed": "Falhou!", "failed": "Falhou!",

View file

@ -449,6 +449,7 @@
"downloaded_only": "Только загруженные", "downloaded_only": "Только загруженные",
"downloaded_only_description": "Показывать только загруженные записи в вашей библиотеке", "downloaded_only_description": "Показывать только загруженные записи в вашей библиотеке",
"concurrent_downloads": "Одновременные загрузки", "concurrent_downloads": "Одновременные загрузки",
"logs_on": "Включить ведение журнала",
"share_app_logs": "Поделиться журналами приложения", "share_app_logs": "Поделиться журналами приложения",
"no_app_logs": "Файл log.txt недоступен!", "no_app_logs": "Файл log.txt недоступен!",
"failed": "Не удалось!", "failed": "Не удалось!",

View file

@ -452,6 +452,7 @@
"downloaded_only": "ที่ดาวน์โหลดแล้วเท่านั้น", "downloaded_only": "ที่ดาวน์โหลดแล้วเท่านั้น",
"downloaded_only_description": "แสดงเฉพาะรายการที่ดาวน์โหลดแล้วในห้องสมุดของคุณ", "downloaded_only_description": "แสดงเฉพาะรายการที่ดาวน์โหลดแล้วในห้องสมุดของคุณ",
"concurrent_downloads": "ดาวน์โหลดพร้อมกัน", "concurrent_downloads": "ดาวน์โหลดพร้อมกัน",
"logs_on": "เปิดการบันทึก",
"share_app_logs": "แชร์บันทึกแอป", "share_app_logs": "แชร์บันทึกแอป",
"no_app_logs": "ไม่มีไฟล์ log.txt!", "no_app_logs": "ไม่มีไฟล์ log.txt!",
"failed": "ล้มเหลว!", "failed": "ล้มเหลว!",

View file

@ -449,6 +449,7 @@
"downloaded_only": "Sadece indirilmiş", "downloaded_only": "Sadece indirilmiş",
"downloaded_only_description": "Kütüphanenizde yalnızca indirilmiş girişleri göster", "downloaded_only_description": "Kütüphanenizde yalnızca indirilmiş girişleri göster",
"concurrent_downloads": "Eş zamanlı indirmeler", "concurrent_downloads": "Eş zamanlı indirmeler",
"logs_on": "Günlük kaydını etkinleştir",
"share_app_logs": "Uygulama günlüklerini paylaş", "share_app_logs": "Uygulama günlüklerini paylaş",
"no_app_logs": "log.txt dosyası yok!", "no_app_logs": "log.txt dosyası yok!",
"failed": "Başarısız!", "failed": "Başarısız!",

View file

@ -454,6 +454,7 @@
"downloaded_only": "仅已下载", "downloaded_only": "仅已下载",
"downloaded_only_description": "仅显示库中已下载的条目", "downloaded_only_description": "仅显示库中已下载的条目",
"concurrent_downloads": "并发下载", "concurrent_downloads": "并发下载",
"logs_on": "启用日志",
"share_app_logs": "分享应用日志", "share_app_logs": "分享应用日志",
"no_app_logs": "没有可用的 log.txt 文件!", "no_app_logs": "没有可用的 log.txt 文件!",
"failed": "失败!", "failed": "失败!",

View file

@ -935,6 +935,12 @@ abstract class AppLocalizations {
/// **'Check for update'** /// **'Check for update'**
String get 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. /// No description provided for @share_app_logs.
/// ///
/// In en, this message translates to: /// In en, this message translates to:

View file

@ -434,6 +434,9 @@ class AppLocalizationsAr extends AppLocalizations {
@override @override
String get check_for_update => 'التحقق من التحديثات'; String get check_for_update => 'التحقق من التحديثات';
@override
String get logs_on => 'تفعيل التسجيل';
@override @override
String get share_app_logs => 'مشاركة سجلات التطبيق'; String get share_app_logs => 'مشاركة سجلات التطبيق';

View file

@ -436,6 +436,9 @@ class AppLocalizationsAs extends AppLocalizations {
@override @override
String get check_for_update => 'আপডেটৰ বাবে পৰীক্ষা কৰক'; String get check_for_update => 'আপডেটৰ বাবে পৰীক্ষা কৰক';
@override
String get logs_on => 'লগিং সক্ষম কৰক';
@override @override
String get share_app_logs => 'এপ লগ শ্বেয়াৰ কৰক'; String get share_app_logs => 'এপ লগ শ্বেয়াৰ কৰক';

View file

@ -438,6 +438,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get check_for_update => 'Auf Aktualisierung prüfen'; String get check_for_update => 'Auf Aktualisierung prüfen';
@override
String get logs_on => 'Protokollierung aktivieren';
@override @override
String get share_app_logs => 'App-Protokolle teilen'; String get share_app_logs => 'App-Protokolle teilen';

View file

@ -436,6 +436,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get check_for_update => 'Check for update'; String get check_for_update => 'Check for update';
@override
String get logs_on => 'Enable logging';
@override @override
String get share_app_logs => 'Share app logs'; String get share_app_logs => 'Share app logs';

View file

@ -440,6 +440,9 @@ class AppLocalizationsEs extends AppLocalizations {
@override @override
String get check_for_update => 'Buscar actualizaciones'; String get check_for_update => 'Buscar actualizaciones';
@override
String get logs_on => 'Activar registro';
@override @override
String get share_app_logs => 'Compartir registros de la aplicación'; String get share_app_logs => 'Compartir registros de la aplicación';
@ -2245,6 +2248,9 @@ class AppLocalizationsEs419 extends AppLocalizationsEs {
@override @override
String get check_for_update => 'Buscar actualizaciones'; String get check_for_update => 'Buscar actualizaciones';
@override
String get logs_on => 'Habilitar registro';
@override @override
String get share_app_logs => 'Compartir registros de la aplicación'; String get share_app_logs => 'Compartir registros de la aplicación';

View file

@ -442,6 +442,9 @@ class AppLocalizationsFr extends AppLocalizations {
@override @override
String get check_for_update => 'Rechercher des mises à jour'; String get check_for_update => 'Rechercher des mises à jour';
@override
String get logs_on => 'Activer la journalisation';
@override @override
String get share_app_logs => 'Partager les journaux de l\'application'; String get share_app_logs => 'Partager les journaux de l\'application';

View file

@ -436,6 +436,9 @@ class AppLocalizationsHi extends AppLocalizations {
@override @override
String get check_for_update => 'अपडेट के लिए जांचें'; String get check_for_update => 'अपडेट के लिए जांचें';
@override
String get logs_on => 'लॉगिंग सक्षम करें';
@override @override
String get share_app_logs => 'ऐप लॉग साझा करें'; String get share_app_logs => 'ऐप लॉग साझा करें';

View file

@ -440,6 +440,9 @@ class AppLocalizationsId extends AppLocalizations {
@override @override
String get check_for_update => 'Periksa Pembaruan'; String get check_for_update => 'Periksa Pembaruan';
@override
String get logs_on => 'Aktifkan pencatatan';
@override @override
String get share_app_logs => 'Bagikan log aplikasi'; String get share_app_logs => 'Bagikan log aplikasi';

View file

@ -440,6 +440,9 @@ class AppLocalizationsIt extends AppLocalizations {
@override @override
String get check_for_update => 'Controlla aggiornamenti'; String get check_for_update => 'Controlla aggiornamenti';
@override
String get logs_on => 'Abilita registrazione';
@override @override
String get share_app_logs => 'Condividi i log dell\'app'; String get share_app_logs => 'Condividi i log dell\'app';

View file

@ -431,6 +431,9 @@ class AppLocalizationsJa extends AppLocalizations {
@override @override
String get check_for_update => 'Check for update'; String get check_for_update => 'Check for update';
@override
String get logs_on => 'ログを有効にする';
@override @override
String get share_app_logs => 'アプリログを共有'; String get share_app_logs => 'アプリログを共有';

View file

@ -440,6 +440,9 @@ class AppLocalizationsPt extends AppLocalizations {
@override @override
String get check_for_update => 'Verificar atualização'; String get check_for_update => 'Verificar atualização';
@override
String get logs_on => 'Ativar registro';
@override @override
String get share_app_logs => 'Compartilhar logs do aplicativo'; String get share_app_logs => 'Compartilhar logs do aplicativo';
@ -2240,6 +2243,9 @@ class AppLocalizationsPtBr extends AppLocalizationsPt {
@override @override
String get check_for_update => 'Verificar atualização'; String get check_for_update => 'Verificar atualização';
@override
String get logs_on => 'Ativar registro';
@override @override
String get share_app_logs => 'Compartilhar logs do aplicativo'; String get share_app_logs => 'Compartilhar logs do aplicativo';

View file

@ -441,6 +441,9 @@ class AppLocalizationsRu extends AppLocalizations {
@override @override
String get check_for_update => 'Проверить обновления'; String get check_for_update => 'Проверить обновления';
@override
String get logs_on => 'Включить ведение журнала';
@override @override
String get share_app_logs => 'Поделиться журналами приложения'; String get share_app_logs => 'Поделиться журналами приложения';

View file

@ -436,6 +436,9 @@ class AppLocalizationsTh extends AppLocalizations {
@override @override
String get check_for_update => 'ตรวจสอบการอัพเดท'; String get check_for_update => 'ตรวจสอบการอัพเดท';
@override
String get logs_on => 'เปิดการบันทึก';
@override @override
String get share_app_logs => 'แชร์บันทึกแอป'; String get share_app_logs => 'แชร์บันทึกแอป';

View file

@ -436,6 +436,9 @@ class AppLocalizationsTr extends AppLocalizations {
@override @override
String get check_for_update => 'Güncelleme Kontrol Et'; String get check_for_update => 'Güncelleme Kontrol Et';
@override
String get logs_on => 'Günlük kaydını etkinleştir';
@override @override
String get share_app_logs => 'Uygulama günlüklerini paylaş'; String get share_app_logs => 'Uygulama günlüklerini paylaş';

View file

@ -427,6 +427,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override @override
String get check_for_update => '检查更新'; String get check_for_update => '检查更新';
@override
String get logs_on => '启用日志';
@override @override
String get share_app_logs => '分享应用日志'; String get share_app_logs => '分享应用日志';

View file

@ -127,6 +127,8 @@ class Settings {
int? pagePreloadAmount; int? pagePreloadAmount;
bool? enableLogs;
bool? checkForAppUpdates; bool? checkForAppUpdates;
bool? checkForExtensionUpdates; bool? checkForExtensionUpdates;
@ -357,6 +359,7 @@ class Settings {
this.sortLibraryAnime, this.sortLibraryAnime,
this.pagePreloadAmount = 6, this.pagePreloadAmount = 6,
this.scaleType = ScaleType.fitScreen, this.scaleType = ScaleType.fitScreen,
this.enableLogs = false,
this.checkForAppUpdates = true, this.checkForAppUpdates = true,
this.checkForExtensionUpdates = true, this.checkForExtensionUpdates = true,
this.backgroundColor = BackgroundColor.black, this.backgroundColor = BackgroundColor.black,
@ -482,6 +485,7 @@ class Settings {
.map((e) => ChapterPageurls.fromJson(e)) .map((e) => ChapterPageurls.fromJson(e))
.toList(); .toList();
} }
enableLogs = json['enableLogs'];
checkForAppUpdates = json['checkForAppUpdates']; checkForAppUpdates = json['checkForAppUpdates'];
checkForExtensionUpdates = json['checkForExtensionUpdates']; checkForExtensionUpdates = json['checkForExtensionUpdates'];
if (json['cookiesList'] != null) { if (json['cookiesList'] != null) {
@ -720,6 +724,7 @@ class Settings {
?.map((v) => v.toJson()) ?.map((v) => v.toJson())
.toList(), .toList(),
'chapterPageUrlsList': chapterPageUrlsList?.map((v) => v.toJson()).toList(), 'chapterPageUrlsList': chapterPageUrlsList?.map((v) => v.toJson()).toList(),
'enableLogs': enableLogs,
'checkForAppUpdates': checkForAppUpdates, 'checkForAppUpdates': checkForAppUpdates,
'checkForExtensionUpdates': checkForExtensionUpdates, 'checkForExtensionUpdates': checkForExtensionUpdates,
'cookiesList': cookiesList, 'cookiesList': cookiesList,

File diff suppressed because it is too large Load diff

View file

@ -9,9 +9,11 @@ import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/settings.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/check_for_update.dart';
import 'package:mangayomi/modules/more/about/providers/get_package_info.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/modules/widgets/progress_center.dart';
import 'package:mangayomi/providers/l10n_providers.dart'; import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/providers/storage_provider.dart';
import 'package:mangayomi/utils/log/logger.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@ -23,6 +25,7 @@ class AboutScreen extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final l10n = l10nLocalizations(context); final l10n = l10nLocalizations(context);
final checkForUpdates = ref.watch(checkForAppUpdatesProvider); final checkForUpdates = ref.watch(checkForAppUpdatesProvider);
final enableLogs = ref.watch(logsStateProvider);
return Scaffold( return Scaffold(
appBar: AppBar(title: Text(l10n!.about)), appBar: AppBar(title: Text(l10n!.about)),
body: ref body: ref
@ -80,38 +83,58 @@ class AboutScreen extends ConsumerWidget {
}, },
title: Text(l10n.check_for_update), title: Text(l10n.check_for_update),
), ),
ListTile( SwitchListTile(
onTap: () async { title: Text(l10n.logs_on),
final storage = StorageProvider(); value: enableLogs,
final directory = await storage.getDefaultDirectory(); onChanged: (value) {
final file = File( isar.writeTxnSync(() {
path.join(directory!.path, 'logs.txt'), final settings = isar.settings.getSync(227);
); isar.settings.putSync(
if (await file.exists()) { settings!..enableLogs = value,
if (Platform.isLinux) { );
await Clipboard.setData( });
ClipboardData(text: file.path), ref.invalidate(logsStateProvider);
); if (value) {
} AppLogger.init();
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 { } 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( // ListTile(
// onTap: () {}, // onTap: () {},
// title: const Text("What's news"), // title: const Text("What's news"),

View file

@ -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;
}

View file

@ -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<bool, bool, bool>
with $Provider<bool> {
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<bool> $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<bool>(value),
);
}
}
String _$logsStateHash() => r'680ab781a039e0441394dc0b376b8add0fb80910';

View file

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/providers/storage_provider.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
@ -12,6 +13,8 @@ class AppLogger {
/// Initialize the logger /// Initialize the logger
static Future<void> init() async { static Future<void> init() async {
final enabled = isar.settings.getSync(227)?.enableLogs ?? false;
if (!enabled) return;
final storage = StorageProvider(); final storage = StorageProvider();
final directory = await storage.getDefaultDirectory(); final directory = await storage.getDefaultDirectory();
_logFile = File(path.join(directory!.path, 'logs.txt')); _logFile = File(path.join(directory!.path, 'logs.txt'));