cake_wallet/lib/view_model/settings/mweb_settings_view_model.dart
2024-10-28 13:10:33 -07:00

74 lines
2.1 KiB
Dart

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';
class MwebSettingsViewModel = MwebSettingsViewModelBase with _$MwebSettingsViewModel;
abstract class MwebSettingsViewModelBase with Store {
MwebSettingsViewModelBase(this._settingsStore, this._wallet) {
mwebEnabled = bitcoin!.getMwebEnabled(_wallet);
_settingsStore.mwebAlwaysScan = mwebEnabled;
}
final SettingsStore _settingsStore;
final WalletBase _wallet;
@computed
bool get mwebCardDisplay => _settingsStore.mwebCardDisplay;
@observable
late bool mwebEnabled;
@computed
String get mwebNodeUri => _settingsStore.mwebNodeUri;
@action
void setMwebCardDisplay(bool value) {
_settingsStore.mwebCardDisplay = value;
}
@action
void setMwebNodeUri(String value) {
_settingsStore.mwebNodeUri = value;
}
@action
void setMwebEnabled(bool value) {
mwebEnabled = value;
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');
}
await logsFile.copy(filePath);
}
Future<String> getAbbreviatedLogs() async {
final appSupportPath = (await getApplicationSupportDirectory()).path;
final logsFile = File("$appSupportPath/logs/debug.log");
if (!logsFile.existsSync()) {
return "";
}
final logs = logsFile.readAsStringSync();
// return last 10000 characters:
return logs.substring(logs.length > 10000 ? logs.length - 10000 : 0);
}
Future<void> removeLogsLocally(String filePath) async {
final logsFile = File(filePath);
if (logsFile.existsSync()) {
await logsFile.delete();
}
}
}