[skip ci] add export mweb logs screen

This commit is contained in:
fossephate 2024-10-22 09:58:57 -07:00
parent 5967cf54d1
commit 7f9e4a2d07
35 changed files with 175 additions and 0 deletions

View file

@ -111,6 +111,7 @@ class LitecoinWalletService extends WalletService<
File neturinoDb = File('$appDirPath/neutrino.db');
File blockHeaders = File('$appDirPath/block_headers.bin');
File regFilterHeaders = File('$appDirPath/reg_filter_headers.bin');
File mwebdLogs = File('$appDirPath/logs/debug.log');
if (neturinoDb.existsSync()) {
neturinoDb.deleteSync();
}
@ -120,6 +121,9 @@ class LitecoinWalletService extends WalletService<
if (regFilterHeaders.existsSync()) {
regFilterHeaders.deleteSync();
}
if (mwebdLogs.existsSync()) {
mwebdLogs.deleteSync();
}
}
}

View file

@ -35,6 +35,7 @@ import 'package:cake_wallet/entities/parse_address_from_domain.dart';
import 'package:cake_wallet/entities/wallet_edit_page_arguments.dart';
import 'package:cake_wallet/entities/wallet_manager.dart';
import 'package:cake_wallet/src/screens/receive/address_list_page.dart';
import 'package:cake_wallet/src/screens/settings/mweb_logs_page.dart';
import 'package:cake_wallet/view_model/link_view_model.dart';
import 'package:cake_wallet/tron/tron.dart';
import 'package:cake_wallet/src/screens/transaction_details/rbf_details_page.dart';
@ -945,6 +946,8 @@ Future<void> setup({
getIt.registerFactory(() => MwebSettingsPage(getIt.get<MwebSettingsViewModel>()));
getIt.registerFactory(() => MwebLogsPage(getIt.get<MwebSettingsViewModel>()));
getIt.registerFactory(() => OtherSettingsPage(getIt.get<OtherSettingsViewModel>()));
getIt.registerFactory(() => NanoChangeRepPage(

View file

@ -72,6 +72,7 @@ import 'package:cake_wallet/src/screens/settings/desktop_settings/desktop_settin
import 'package:cake_wallet/src/screens/settings/display_settings_page.dart';
import 'package:cake_wallet/src/screens/settings/domain_lookups_page.dart';
import 'package:cake_wallet/src/screens/settings/manage_nodes_page.dart';
import 'package:cake_wallet/src/screens/settings/mweb_logs_page.dart';
import 'package:cake_wallet/src/screens/settings/mweb_settings.dart';
import 'package:cake_wallet/src/screens/settings/other_settings_page.dart';
import 'package:cake_wallet/src/screens/settings/privacy_page.dart';
@ -461,6 +462,10 @@ Route<dynamic> createRoute(RouteSettings settings) {
return CupertinoPageRoute<void>(
fullscreenDialog: true, builder: (_) => getIt.get<MwebSettingsPage>());
case Routes.mwebLogs:
return CupertinoPageRoute<void>(
fullscreenDialog: true, builder: (_) => getIt.get<MwebLogsPage>());
case Routes.connectionSync:
return CupertinoPageRoute<void>(
fullscreenDialog: true, builder: (_) => getIt.get<ConnectionSyncPage>());

View file

@ -74,6 +74,7 @@ class Routes {
static const webViewPage = '/web_view_page';
static const silentPaymentsSettings = '/silent_payments_settings';
static const mwebSettings = '/mweb_settings';
static const mwebLogs = '/mweb_logs';
static const connectionSync = '/connection_sync_page';
static const securityBackupPage = '/security_and_backup_page';
static const privacyPage = '/privacy_page';

View file

@ -0,0 +1,109 @@
import 'dart:io';
import 'package:cake_wallet/core/execution_state.dart';
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/src/widgets/primary_button.dart';
import 'package:cake_wallet/src/widgets/trail_button.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/palette.dart';
import 'package:cake_wallet/routes.dart';
import 'package:cake_wallet/utils/clipboard_util.dart';
import 'package:cake_wallet/utils/exception_handler.dart';
import 'package:cake_wallet/utils/share_util.dart';
import 'package:cake_wallet/utils/show_bar.dart';
import 'package:cake_wallet/utils/show_pop_up.dart';
import 'package:cake_wallet/view_model/backup_view_model.dart';
import 'package:cake_wallet/view_model/settings/mweb_settings_view_model.dart';
import 'package:cw_core/root_dir.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:path_provider/path_provider.dart';
class MwebLogsPage extends BasePage {
MwebLogsPage(this.mwebSettingsViewModelBase);
final MwebSettingsViewModelBase mwebSettingsViewModelBase;
@override
String get title => S.current.litecoin_mweb_logs;
@override
Widget body(BuildContext context) {
return Stack(
fit: StackFit.expand,
children: [
Positioned(
child: Observer(
builder: (_) => LoadingPrimaryButton(
onPressed: () => onExportLogs(context),
text: S.of(context).export_backup,
color: Theme.of(context).primaryColor,
textColor: Colors.white,
),
),
bottom: 24,
left: 24,
right: 24,
)
],
);
}
void onExportLogs(BuildContext context) {
if (Platform.isAndroid) {
onExportAndroid(context);
} else if (Platform.isIOS) {
share(context);
} else {
_saveFile();
}
}
void onExportAndroid(BuildContext context) {
showPopUp<void>(
context: context,
builder: (dialogContext) {
return AlertWithTwoActions(
alertTitle: S.of(context).export_backup,
alertContent: S.of(context).select_destination,
rightButtonText: S.of(context).save_to_downloads,
leftButtonText: S.of(context).share,
actionRightButton: () async {
const downloadDirPath = "/storage/emulated/0/Download";
final filePath = downloadDirPath + "/debug.log";
await mwebSettingsViewModelBase.saveLogsLocally(filePath);
Navigator.of(dialogContext).pop();
},
actionLeftButton: () async {
Navigator.of(dialogContext).pop();
await share(context);
});
});
}
Future<void> share(BuildContext context) async {
final filePath = (await getAppDir()).path + "/debug.log";
await mwebSettingsViewModelBase.saveLogsLocally(filePath);
await ShareUtil.shareFile(filePath: filePath, fileName: "debug.log", context: context);
await mwebSettingsViewModelBase.removeLogsLocally(filePath);
}
Future<void> _saveFile() async {
String? outputFile = await FilePicker.platform
.saveFile(dialogTitle: 'Save Your File to desired location', fileName: "debug.log");
try {
final filePath = (await getApplicationSupportDirectory()).path + "/debug.log";
File debugLogFile = File(filePath);
await debugLogFile.copy(outputFile!);
} catch (exception, stackTrace) {
ExceptionHandler.onError(FlutterErrorDetails(
exception: exception,
stack: stackTrace,
library: "Export Logs",
));
}
}
}

View file

@ -41,6 +41,10 @@ class MwebSettingsPage extends BasePage {
title: S.current.litecoin_mweb_scanning,
handler: (BuildContext context) => Navigator.of(context).pushNamed(Routes.rescan),
),
SettingsCellWithArrow(
title: S.current.litecoin_mweb_logs,
handler: (BuildContext context) => Navigator.of(context).pushNamed(Routes.mwebLogs),
),
],
),
);

View file

@ -1,7 +1,10 @@
import 'dart:io';
import 'package:cake_wallet/bitcoin/bitcoin.dart';
import 'package:cake_wallet/store/settings_store.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:mobx/mobx.dart';
import 'package:path_provider/path_provider.dart';
part 'mweb_settings_view_model.g.dart';
@ -33,4 +36,22 @@ abstract class MwebSettingsViewModelBase with Store {
bitcoin!.setMwebEnabled(_wallet, value);
_settingsStore.mwebAlwaysScan = value;
}
Future<void> saveLogsLocally(String filePath) async {
final appSupportPath = (await getApplicationSupportDirectory()).path;
final logsFile = File("$appSupportPath/logs/debug.log");
if (!logsFile.existsSync()) {
throw Exception('Logs file does not exist');
}
// copy logs file to regular app directory
await logsFile.copy(filePath);
}
Future<void> removeLogsLocally(String filePath) async {
final logsFile = File(filePath);
if (logsFile.existsSync()) {
await logsFile.delete();
}
}
}

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "رفض",
"litecoin_mweb_display_card": "عرض بطاقة mweb",
"litecoin_mweb_enable_later": "يمكنك اختيار تمكين MWEB مرة أخرى ضمن إعدادات العرض.",
"litecoin_mweb_logs": "سجلات MWEB",
"litecoin_mweb_pegin": "ربط في",
"litecoin_mweb_pegout": "ربط",
"litecoin_mweb_scanning": "MWEB المسح الضوئي",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Уволнение",
"litecoin_mweb_display_card": "Показване на MWEB карта",
"litecoin_mweb_enable_later": "Можете да изберете да активирате MWEB отново под настройките на дисплея.",
"litecoin_mweb_logs": "MWeb logs",
"litecoin_mweb_pegin": "PEG в",
"litecoin_mweb_pegout": "PEG OUT",
"litecoin_mweb_scanning": "Сканиране на MWEB",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Propustit",
"litecoin_mweb_display_card": "Zobrazit kartu MWeb",
"litecoin_mweb_enable_later": "V nastavení zobrazení můžete vybrat znovu povolit MWeb.",
"litecoin_mweb_logs": "Protokoly mWeb",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Zkrachovat",
"litecoin_mweb_scanning": "Skenování mWeb",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Zurückweisen",
"litecoin_mweb_display_card": "MWEB -Karte anzeigen",
"litecoin_mweb_enable_later": "Sie können MWEB unter Anzeigeeinstellungen erneut aktivieren.",
"litecoin_mweb_logs": "MWEB -Protokolle",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Abstecken",
"litecoin_mweb_scanning": "MWEB Scanning",

View file

@ -374,6 +374,7 @@
"litecoin_mweb_dismiss": "Dismiss",
"litecoin_mweb_display_card": "Show MWEB card",
"litecoin_mweb_enable_later": "You can choose to enable MWEB again under Display Settings.",
"litecoin_mweb_logs": "MWEB Logs",
"litecoin_mweb_pegin": "Peg In",
"litecoin_mweb_pegout": "Peg Out",
"litecoin_mweb_scanning": "MWEB Scanning",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Despedir",
"litecoin_mweb_display_card": "Mostrar tarjeta MWEB",
"litecoin_mweb_enable_later": "Puede elegir habilitar MWEB nuevamente en la configuración de visualización.",
"litecoin_mweb_logs": "Registros de mweb",
"litecoin_mweb_pegin": "Meter",
"litecoin_mweb_pegout": "Estirar la pata",
"litecoin_mweb_scanning": "Escaneo mweb",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Rejeter",
"litecoin_mweb_display_card": "Afficher la carte MWeb",
"litecoin_mweb_enable_later": "Vous pouvez choisir d'activer à nouveau MWEB sous Paramètres d'affichage.",
"litecoin_mweb_logs": "Journaux MWEB",
"litecoin_mweb_pegin": "Entraver",
"litecoin_mweb_pegout": "Crever",
"litecoin_mweb_scanning": "Scann mweb",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Tuɓe \\ sallama",
"litecoin_mweb_display_card": "Nuna katin Mweb",
"litecoin_mweb_enable_later": "Kuna iya zaɓar kunna Mweb kuma a ƙarƙashin saitunan nuni.",
"litecoin_mweb_logs": "Jagoran Mweb",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg fita",
"litecoin_mweb_scanning": "Mweb scanning",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "नकार देना",
"litecoin_mweb_display_card": "MWEB कार्ड दिखाएं",
"litecoin_mweb_enable_later": "आप प्रदर्शन सेटिंग्स के तहत फिर से MWEB को सक्षम करने के लिए चुन सकते हैं।",
"litecoin_mweb_logs": "MWEB लॉग",
"litecoin_mweb_pegin": "खूंटी",
"litecoin_mweb_pegout": "मरना",
"litecoin_mweb_scanning": "MWEB स्कैनिंग",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Odbaciti",
"litecoin_mweb_display_card": "Prikaži MWeb karticu",
"litecoin_mweb_enable_later": "Možete odabrati da MWEB ponovo omogućite pod postavkama zaslona.",
"litecoin_mweb_logs": "MWEB trupci",
"litecoin_mweb_pegin": "Uvući se",
"litecoin_mweb_pegout": "Odapeti",
"litecoin_mweb_scanning": "MWEB skeniranje",

View file

@ -368,6 +368,7 @@
"litecoin_mweb_description": "Mweb- ը նոր արձանագրություն է, որը բերում է ավելի արագ, ավելի էժան եւ ավելի մասնավոր գործարքներ դեպի LITECOIN",
"litecoin_mweb_dismiss": "Հեռացնել",
"litecoin_mweb_enable_later": "Կարող եք ընտրել Mweb- ը կրկին միացնել ցուցադրման պարամետրերը:",
"litecoin_mweb_logs": "Mweb տեղեկամատյաններ",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Հափշտակել",
"live_fee_rates": "Ապակի վարձավճարներ API- ի միջոցով",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Membubarkan",
"litecoin_mweb_display_card": "Tunjukkan kartu mWeb",
"litecoin_mweb_enable_later": "Anda dapat memilih untuk mengaktifkan MWEB lagi di bawah pengaturan tampilan.",
"litecoin_mweb_logs": "Log MWeb",
"litecoin_mweb_pegin": "Pasak masuk",
"litecoin_mweb_pegout": "Mati",
"litecoin_mweb_scanning": "Pemindaian MWEB",

View file

@ -373,6 +373,7 @@
"litecoin_mweb_dismiss": "Congedare",
"litecoin_mweb_display_card": "Mostra la scheda MWeb",
"litecoin_mweb_enable_later": "È possibile scegliere di abilitare nuovamente MWeb nelle impostazioni di visualizzazione.",
"litecoin_mweb_logs": "Registri mWeb",
"litecoin_mweb_pegin": "Piolo in",
"litecoin_mweb_pegout": "PEG OUT",
"litecoin_mweb_scanning": "Scansione MWeb",

View file

@ -373,6 +373,7 @@
"litecoin_mweb_dismiss": "却下する",
"litecoin_mweb_display_card": "MWEBカードを表示します",
"litecoin_mweb_enable_later": "表示設定の下で、MWEBを再度有効にすることを選択できます。",
"litecoin_mweb_logs": "MWEBログ",
"litecoin_mweb_pegin": "ペグイン",
"litecoin_mweb_pegout": "ペグアウト",
"litecoin_mweb_scanning": "MWEBスキャン",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "해고하다",
"litecoin_mweb_display_card": "mweb 카드를 보여주십시오",
"litecoin_mweb_enable_later": "디스플레이 설정에서 MWEB를 다시 활성화하도록 선택할 수 있습니다.",
"litecoin_mweb_logs": "mweb 로그",
"litecoin_mweb_pegin": "페그를 입력하십시오",
"litecoin_mweb_pegout": "죽다",
"litecoin_mweb_scanning": "mweb 스캔",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "ထုတ်ပစ်",
"litecoin_mweb_display_card": "MweB ကဒ်ကိုပြပါ",
"litecoin_mweb_enable_later": "သင် MweB ကို display settings အောက်ရှိ ထပ်မံ. ခွင့်ပြုရန်ရွေးချယ်နိုင်သည်။",
"litecoin_mweb_logs": "Mweb မှတ်တမ်းများ",
"litecoin_mweb_pegin": "တံစို့",
"litecoin_mweb_pegout": "တံစို့",
"litecoin_mweb_scanning": "mweb scanning",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Afwijzen",
"litecoin_mweb_display_card": "Toon MWEB -kaart",
"litecoin_mweb_enable_later": "U kunt ervoor kiezen om MWeb opnieuw in te schakelen onder weergave -instellingen.",
"litecoin_mweb_logs": "MWEB -logboeken",
"litecoin_mweb_pegin": "Vastmaken",
"litecoin_mweb_pegout": "Uithakken",
"litecoin_mweb_scanning": "MWEB -scanning",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Odrzucać",
"litecoin_mweb_display_card": "Pokaż kartę MWEB",
"litecoin_mweb_enable_later": "Możesz ponownie włączyć MWEB w ustawieniach wyświetlania.",
"litecoin_mweb_logs": "Dzienniki MWEB",
"litecoin_mweb_pegin": "Kołek",
"litecoin_mweb_pegout": "Palikować",
"litecoin_mweb_scanning": "Skanowanie MWEB",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Liberar",
"litecoin_mweb_display_card": "Mostre o cartão MWEB",
"litecoin_mweb_enable_later": "Você pode optar por ativar o MWEB novamente em Configurações de exibição.",
"litecoin_mweb_logs": "Logs MWeb",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg fora",
"litecoin_mweb_scanning": "MWEB Scanning",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Увольнять",
"litecoin_mweb_display_card": "Показать карту MWEB",
"litecoin_mweb_enable_later": "Вы можете снова включить MWEB в настройках отображения.",
"litecoin_mweb_logs": "MWEB журналы",
"litecoin_mweb_pegin": "Внедрять",
"litecoin_mweb_pegout": "Выкрикивать",
"litecoin_mweb_scanning": "MWEB сканирование",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "อนุญาตให้ออกไป",
"litecoin_mweb_display_card": "แสดงการ์ด mweb",
"litecoin_mweb_enable_later": "คุณสามารถเลือกเปิดใช้งาน MWEB อีกครั้งภายใต้การตั้งค่าการแสดงผล",
"litecoin_mweb_logs": "บันทึก MWEB",
"litecoin_mweb_pegin": "หมุด",
"litecoin_mweb_pegout": "ตรึง",
"litecoin_mweb_scanning": "การสแกน MWEB",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Tanggalin",
"litecoin_mweb_display_card": "Ipakita ang MWEB Card",
"litecoin_mweb_enable_later": "Maaari kang pumili upang paganahin muli ang MWeb sa ilalim ng mga setting ng pagpapakita.",
"litecoin_mweb_logs": "MWEB log",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg out",
"litecoin_mweb_scanning": "Pag -scan ng Mweb",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Azletmek",
"litecoin_mweb_display_card": "MWEB kartını göster",
"litecoin_mweb_enable_later": "Ekran ayarlarının altında MWEB'yi tekrar etkinleştirmeyi seçebilirsiniz.",
"litecoin_mweb_logs": "MWEB günlükleri",
"litecoin_mweb_pegin": "Takılmak",
"litecoin_mweb_pegout": "Çiğnemek",
"litecoin_mweb_scanning": "MWEB taraması",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "Звільнити",
"litecoin_mweb_display_card": "Показати карту MWeb",
"litecoin_mweb_enable_later": "Ви можете знову ввімкнути MWEB в налаштуваннях дисплея.",
"litecoin_mweb_logs": "Журнали MWeb",
"litecoin_mweb_pegin": "Подякувати",
"litecoin_mweb_pegout": "Подякувати",
"litecoin_mweb_scanning": "Сканування Mweb",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "خارج",
"litecoin_mweb_display_card": "MWEB کارڈ دکھائیں",
"litecoin_mweb_enable_later": "آپ ڈسپلے کی ترتیبات کے تحت MWEB کو دوبارہ فعال کرنے کا انتخاب کرسکتے ہیں۔",
"litecoin_mweb_logs": "MWEB لاگز",
"litecoin_mweb_pegin": "پیگ میں",
"litecoin_mweb_pegout": "پیگ آؤٹ",
"litecoin_mweb_scanning": "MWEB اسکیننگ",

View file

@ -369,6 +369,7 @@
"litecoin_mweb_description": "MWEB là một giao thức mới mang lại các giao dịch nhanh hơn, rẻ hơn và riêng tư hơn cho Litecoin",
"litecoin_mweb_dismiss": "Miễn nhiệm",
"litecoin_mweb_enable_later": "Bạn có thể chọn bật lại MWEB trong cài đặt hiển thị.",
"litecoin_mweb_logs": "Nhật ký MWEB",
"litecoin_mweb_pegin": "Chốt vào",
"litecoin_mweb_pegout": "Chốt ra",
"live_fee_rates": "Tỷ lệ phí hiện tại qua API",

View file

@ -373,6 +373,7 @@
"litecoin_mweb_dismiss": "Tuka",
"litecoin_mweb_display_card": "Fihan kaadi Mweb",
"litecoin_mweb_enable_later": "O le yan lati ṣiṣẹ Mweb lẹẹkansi labẹ awọn eto ifihan.",
"litecoin_mweb_logs": "MTweb logs",
"litecoin_mweb_pegin": "Peg in",
"litecoin_mweb_pegout": "Peg jade",
"litecoin_mweb_scanning": "Mweb scanning",

View file

@ -372,6 +372,7 @@
"litecoin_mweb_dismiss": "解雇",
"litecoin_mweb_display_card": "显示MWEB卡",
"litecoin_mweb_enable_later": "您可以选择在显示设置下再次启用MWEB。",
"litecoin_mweb_logs": "MWEB日志",
"litecoin_mweb_pegin": "钉进",
"litecoin_mweb_pegout": "昏倒",
"litecoin_mweb_scanning": "MWEB扫描",