mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-21 06:18:42 +02:00
General changes. CAKE-1.
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'package:cake_wallet/core/wallet_base.dart';
|
||||
import 'package:cake_wallet/src/domain/common/node.dart';
|
||||
import 'package:cake_wallet/src/domain/common/wallet_type.dart';
|
||||
import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model_state.dart';
|
||||
|
||||
part 'node_create_or_edit_view_model.g.dart';
|
||||
|
||||
class NodeCreateOrEditViewModel = NodeCreateOrEditViewModelBase
|
||||
with _$NodeCreateOrEditViewModel;
|
||||
|
||||
abstract class NodeCreateOrEditViewModelBase with Store {
|
||||
NodeCreateOrEditViewModelBase(this._nodeSource, this._wallet)
|
||||
: state = InitialNodeCreateOrEditViewModelState();
|
||||
|
||||
@observable
|
||||
NodeCreateOrEditViewModelState state;
|
||||
|
||||
@observable
|
||||
String address;
|
||||
|
||||
@observable
|
||||
String port;
|
||||
|
||||
@observable
|
||||
String login;
|
||||
|
||||
@observable
|
||||
String password;
|
||||
|
||||
@computed
|
||||
bool get isReady =>
|
||||
(address?.isNotEmpty ?? false) && (port?.isNotEmpty ?? false);
|
||||
|
||||
bool get hasAuthCredentials => _wallet.type == WalletType.monero;
|
||||
|
||||
String get uri {
|
||||
var uri = address;
|
||||
|
||||
if (port != null && port.isNotEmpty) {
|
||||
uri += ':' + port;
|
||||
}
|
||||
|
||||
return uri;
|
||||
}
|
||||
|
||||
final WalletBase _wallet;
|
||||
final Box<Node> _nodeSource;
|
||||
|
||||
@action
|
||||
void reset() {
|
||||
address = '';
|
||||
port = '';
|
||||
login = '';
|
||||
password = '';
|
||||
}
|
||||
|
||||
@action
|
||||
Future<void> save() async {
|
||||
try {
|
||||
state = NodeIsCreating();
|
||||
final node =
|
||||
Node(uri: uri, type: _wallet.type, login: login, password: password);
|
||||
await _nodeSource.add(node);
|
||||
state = NodeCreatedSuccessfully();
|
||||
} catch (e) {
|
||||
state = NodeCreateOrEditViewModelFailure(e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
abstract class NodeCreateOrEditViewModelState {}
|
||||
|
||||
class InitialNodeCreateOrEditViewModelState
|
||||
extends NodeCreateOrEditViewModelState {}
|
||||
|
||||
class NodeIsCreating extends NodeCreateOrEditViewModelState {}
|
||||
|
||||
class NodeCreatedSuccessfully extends NodeCreateOrEditViewModelState {}
|
||||
|
||||
class NodeCreateOrEditViewModelFailure extends NodeCreateOrEditViewModelState {
|
||||
NodeCreateOrEditViewModelFailure(this.error);
|
||||
|
||||
final String error;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:mobx/mobx.dart';
|
||||
import 'package:cake_wallet/core/wallet_base.dart';
|
||||
import 'package:cake_wallet/src/domain/common/node.dart';
|
||||
import 'package:cake_wallet/src/domain/common/node_list.dart';
|
||||
import 'package:cake_wallet/store/node_list_store.dart';
|
||||
|
||||
part 'node_list_view_model.g.dart';
|
||||
|
||||
class NodeListViewModel = NodeListViewModelBase with _$NodeListViewModel;
|
||||
|
||||
abstract class NodeListViewModelBase with Store {
|
||||
NodeListViewModelBase(this._nodeListStore, this._nodeSource, this._wallet);
|
||||
|
||||
@computed
|
||||
ObservableList<Node> get nodes => ObservableList<Node>.of(
|
||||
_nodeListStore.nodes.where((node) => node.type == _wallet.type));
|
||||
|
||||
final WalletBase _wallet;
|
||||
final Box<Node> _nodeSource;
|
||||
final NodeListStore _nodeListStore;
|
||||
|
||||
Future<void> reset() async => await resetToDefault(_nodeSource);
|
||||
|
||||
Future<void> delete(Node node) async => node.delete();
|
||||
}
|
||||
Reference in New Issue
Block a user