You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cake_wallet/lib/view_model/node_list/node_list_view_model.dart

54 lines
1.5 KiB

import 'package:hive/hive.dart';
import 'package:mobx/mobx.dart';
import 'package:cake_wallet/core/wallet_base.dart';
4 years ago
import 'package:cake_wallet/store/settings_store.dart';
4 years ago
import 'package:cake_wallet/entities/node.dart';
import 'package:cake_wallet/entities/node_list.dart';
import 'package:cake_wallet/entities/default_settings_migration.dart';
import 'package:cake_wallet/entities/wallet_type.dart';
4 years ago
import 'package:cake_wallet/utils/mobx.dart';
part 'node_list_view_model.g.dart';
class NodeListViewModel = NodeListViewModelBase with _$NodeListViewModel;
abstract class NodeListViewModelBase with Store {
4 years ago
NodeListViewModelBase(this._nodeSource, this._wallet, this.settingsStore)
: nodes = ObservableList<Node>() {
_nodeSource.bindToList(nodes,
filter: (Node val) => val.type == _wallet.type, initialFire: true);
4 years ago
}
4 years ago
final ObservableList<Node> nodes;
final SettingsStore settingsStore;
final WalletBase _wallet;
final Box<Node> _nodeSource;
4 years ago
Future<void> reset() async {
await resetToDefault(_nodeSource);
Node node;
switch (_wallet.type) {
case WalletType.bitcoin:
node = getBitcoinDefaultElectrumServer(nodes: _nodeSource);
break;
case WalletType.monero:
node = getMoneroDefaultNode(
nodes: _nodeSource,
);
break;
default:
break;
}
await setAsCurrent(node);
4 years ago
}
Future<void> delete(Node node) async => _nodeSource.delete(node.key);
4 years ago
Future<void> setAsCurrent(Node node) async =>
settingsStore.currentNode = node;
}