mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
* Update display_settings_page.dart * Update settings_choices_cell.dart * Update settings_theme_choice.dart * Convert display_settings_page.dart to NewListSection * Cleanup [skip ci] * Minor * Minor [skip ci] * Add SizedBox to scroll view * Upgrade receive_top_bar.dart with gradient and optional child content * Adjust animations * Add modal_page_wrapper.dart * Add option to hide AppBar for BasePage [skip ci] * New settings all final (#3067) * Conflict * ModalPageWrapper improved abstraction * display_settings_page.dart minor update * connection_sync_page.dart redesign * Conflict * manage_nodes_page.dart initial redesign * other settings initial * Conflict * add optional subtitle to standard_list.dart * add connection_sync_view_model.dart * Add missing images * Conflict * Update list item widgets * Conflict * Conflict * Conflict * minor updates * Conflict * Fixes + move Mweb to privacy page * Conflict * Remove observer from modal_page_wrapper.dart * Conflict * Conflict * Refactor settings_page.dart with suggestions * Suggestion fixes * Conflicts + fix About page * Fix sync bar conflict * Update Connections page title [skip ci] * Trigger CI * Fix Lightning and Payjoin log export * Update MWEB node page * Add FeatureFlag to AutomaticNodeSwitching * Fix address text on privacy_page.dart * Move WalletConnect from connection_sync_page.dart to settings_page.dart * Add WalletConnect icon * Fix settings icons * Make text strings use S.of(context) and fix About string in settings_page.dart * Display settings page fixes * modal_page_wrapper.dart minor suggestions * Missingimage * Add spacing to list_item_selector_widget.dart * Fix error on manage_nodes_page.dart
237 lines
6.9 KiB
Dart
237 lines
6.9 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:cake_wallet/entities/exchange_api_mode.dart';
|
|
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
|
import 'package:cake_wallet/evm/evm.dart';
|
|
import 'package:cake_wallet/generated/i18n.dart';
|
|
import 'package:cake_wallet/reactions/wallet_connect.dart';
|
|
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
|
|
import 'package:cake_wallet/store/app_store.dart';
|
|
import 'package:cake_wallet/store/settings_store.dart';
|
|
import 'package:cake_wallet/tron/tron.dart';
|
|
import 'package:cake_wallet/utils/show_pop_up.dart';
|
|
import 'package:cake_wallet/utils/tor.dart';
|
|
import 'package:cw_core/balance.dart';
|
|
import 'package:cw_core/transaction_history.dart';
|
|
import 'package:cw_core/transaction_info.dart';
|
|
import 'package:cw_core/wallet_base.dart';
|
|
import 'package:cw_core/wallet_type.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:mobx/mobx.dart';
|
|
|
|
part 'connection_sync_view_model.g.dart';
|
|
|
|
class ConnectionSyncViewModel = ConnectionSyncViewModelBase with _$ConnectionSyncViewModel;
|
|
|
|
abstract class ConnectionSyncViewModelBase with Store {
|
|
ConnectionSyncViewModelBase(this._settingsStore, this._wallet);
|
|
|
|
final SettingsStore _settingsStore;
|
|
final WalletBase<Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo> _wallet;
|
|
|
|
@computed
|
|
bool get lookupTwitter => _settingsStore.lookupsTwitter;
|
|
|
|
@computed
|
|
bool get lookupsZanoAlias => _settingsStore.lookupsZanoAlias;
|
|
|
|
@computed
|
|
bool get looksUpMastodon => _settingsStore.lookupsMastodon;
|
|
|
|
@computed
|
|
bool get looksUpYatService => _settingsStore.lookupsYatService;
|
|
|
|
@computed
|
|
bool get looksUpUnstoppableDomains => _settingsStore.lookupsUnstoppableDomains;
|
|
|
|
@computed
|
|
bool get looksUpOpenAlias => _settingsStore.lookupsOpenAlias;
|
|
|
|
@computed
|
|
bool get looksUpENS => _settingsStore.lookupsENS;
|
|
|
|
@computed
|
|
bool get looksUpWellKnown => _settingsStore.lookupsWellKnown;
|
|
|
|
@computed
|
|
ExchangeApiMode get exchangeStatus => _settingsStore.exchangeStatus;
|
|
|
|
@computed
|
|
FiatApiMode get fiatApiMode => _settingsStore.fiatApiMode;
|
|
|
|
@computed
|
|
bool get disableAutomaticExchangeStatusUpdates =>
|
|
_settingsStore.disableAutomaticExchangeStatusUpdates;
|
|
|
|
@computed
|
|
bool get builtinTor => _settingsStore.currentBuiltinTor;
|
|
|
|
|
|
@computed
|
|
bool get hasPowNodes => [WalletType.nano, WalletType.banano].contains(_wallet.type);
|
|
|
|
@computed
|
|
bool get useMempoolFeeAPI => _settingsStore.useMempoolFeeAPI;
|
|
|
|
@computed
|
|
bool get canUseMempoolFeeAPI => _wallet.type == WalletType.bitcoin;
|
|
|
|
@computed
|
|
bool get useBlinkProtection => _settingsStore.useBlinkProtection;
|
|
|
|
bool get canUseBlinkProtection => canSupportBlinkProtection(_wallet.chainId);
|
|
|
|
@computed
|
|
bool get useEtherscan => _settingsStore.useEtherscan;
|
|
|
|
@computed
|
|
bool get usePolygonScan => _settingsStore.usePolygonScan;
|
|
|
|
@computed
|
|
bool get useBaseScan => _settingsStore.useBaseScan;
|
|
|
|
@computed
|
|
bool get useArbiScan => _settingsStore.useArbiScan;
|
|
|
|
@computed
|
|
bool get useBscScan => _settingsStore.useBscScan;
|
|
|
|
@computed
|
|
bool get useTronGrid => _settingsStore.useTronGrid;
|
|
|
|
@computed
|
|
bool get canUseEtherscan => _wallet.chainId == 1;
|
|
|
|
@computed
|
|
bool get canUsePolygonScan => _wallet.chainId == 137;
|
|
|
|
@computed
|
|
bool get canUseBaseScan => _wallet.chainId == 8453;
|
|
|
|
@computed
|
|
bool get canUseArbiScan => _wallet.chainId == 42161;
|
|
|
|
@computed
|
|
bool get canUseBscScan => _wallet.chainId == 56;
|
|
|
|
@computed
|
|
bool get canUseTronGrid => _wallet.type == WalletType.tron;
|
|
|
|
@action
|
|
void setLookupsTwitter(bool value) => _settingsStore.lookupsTwitter = value;
|
|
|
|
@action
|
|
void setLookupsZanoAlias(bool value) => _settingsStore.lookupsZanoAlias = value;
|
|
|
|
@action
|
|
void setLookupsMastodon(bool value) => _settingsStore.lookupsMastodon = value;
|
|
|
|
@action
|
|
void setLookupsENS(bool value) => _settingsStore.lookupsENS = value;
|
|
|
|
@action
|
|
void setLookupsWellKnown(bool value) => _settingsStore.lookupsWellKnown = value;
|
|
|
|
@action
|
|
void setLookupsYatService(bool value) => _settingsStore.lookupsYatService = value;
|
|
|
|
@action
|
|
void setLookupsUnstoppableDomains(bool value) => _settingsStore.lookupsUnstoppableDomains = value;
|
|
|
|
@action
|
|
void setLookupsOpenAlias(bool value) => _settingsStore.lookupsOpenAlias = value;
|
|
|
|
@action
|
|
void setUseMempoolFeeAPI(bool value) => _settingsStore.useMempoolFeeAPI = value;
|
|
|
|
@action
|
|
void setDisableAutomaticExchangeStatusUpdates(bool value) =>
|
|
_settingsStore.disableAutomaticExchangeStatusUpdates = value;
|
|
|
|
@action
|
|
void setFiatMode(FiatApiMode fiatApiMode) => _settingsStore.fiatApiMode = fiatApiMode;
|
|
|
|
@action
|
|
void setExchangeApiMode(ExchangeApiMode value) => _settingsStore.exchangeStatus = value;
|
|
|
|
@action
|
|
void setUseBlinkProtection(bool value) => _settingsStore.useBlinkProtection = value;
|
|
|
|
@action
|
|
void setUseEtherscan(bool value) {
|
|
_settingsStore.useEtherscan = value;
|
|
evm!.updateScanProviderUsageState(_wallet, value);
|
|
}
|
|
|
|
@action
|
|
void setUsePolygonScan(bool value) {
|
|
_settingsStore.usePolygonScan = value;
|
|
evm!.updateScanProviderUsageState(_wallet, value);
|
|
}
|
|
|
|
@action
|
|
void setUseBaseScan(bool value) {
|
|
_settingsStore.useBaseScan = value;
|
|
evm!.updateScanProviderUsageState(_wallet, value);
|
|
}
|
|
|
|
@action
|
|
void setUseTronGrid(bool value) {
|
|
_settingsStore.useTronGrid = value;
|
|
tron!.updateTronGridUsageState(_wallet, value);
|
|
}
|
|
|
|
@action
|
|
void setUseArbiScan(bool value) {
|
|
_settingsStore.useArbiScan = value;
|
|
evm!.updateScanProviderUsageState(_wallet, value);
|
|
}
|
|
|
|
@action
|
|
void setUseBscScan(bool value) {
|
|
_settingsStore.useBscScan = value;
|
|
evm!.updateScanProviderUsageState(_wallet, value);
|
|
}
|
|
|
|
@action
|
|
void setBuiltinTor(bool value, BuildContext context) {
|
|
if (value) {
|
|
unawaited(
|
|
showPopUp<bool>(
|
|
context: context,
|
|
builder: (BuildContext context) {
|
|
return AlertWithOneAction(
|
|
alertTitle: S.of(context).tor_connection,
|
|
alertContent: S.of(context).tor_experimental,
|
|
buttonText: S.of(context).ok,
|
|
buttonAction: () => Navigator.of(context).pop(true),
|
|
);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
_settingsStore.currentBuiltinTor = value;
|
|
if (value) {
|
|
unawaited(ensureTorStarted(context: context).then((_) async {
|
|
if (_settingsStore.currentBuiltinTor == false) return;
|
|
int? chainId;
|
|
if (isEVMCompatibleChain(_wallet.type)) {
|
|
chainId = evm!.getSelectedChainId(_wallet);
|
|
}
|
|
await _wallet.connectToNode(
|
|
node: _settingsStore.getCurrentNode(_wallet.type, chainId: chainId));
|
|
}));
|
|
} else {
|
|
unawaited(ensureTorStopped(context: context).then((_) async {
|
|
if (_settingsStore.currentBuiltinTor == true) return;
|
|
int? chainId;
|
|
if (isEVMCompatibleChain(_wallet.type)) {
|
|
chainId = evm!.getSelectedChainId(_wallet);
|
|
}
|
|
await _wallet.connectToNode(
|
|
node: _settingsStore.getCurrentNode(_wallet.type, chainId: chainId));
|
|
}));
|
|
}
|
|
}
|
|
}
|