import 'package:mobx/mobx.dart'; import 'package:cake_wallet/core/execution_state.dart'; import 'package:cake_wallet/core/wallet_loading_service.dart'; import 'package:cake_wallet/store/app_store.dart'; import 'package:cw_core/wallet_type.dart'; import 'package:cake_wallet/view_model/wallet_unlock_view_model.dart'; part 'wallet_unlock_loadable_view_model.g.dart'; class WalletUnlockLoadableViewModel = WalletUnlockLoadableViewModelBase with _$WalletUnlockLoadableViewModel; abstract class WalletUnlockLoadableViewModelBase extends WalletUnlockViewModel with Store { WalletUnlockLoadableViewModelBase(this._appStore, this._walletLoadingService, {required this.walletName, required this.walletType}) : password = '', state = InitialExecutionState(); final String walletName; final WalletType walletType; @override @observable String password; @override @observable ExecutionState state; final WalletLoadingService _walletLoadingService; final AppStore _appStore; @override @action void setPassword(String password) => this.password = password; @override @action Future unlock() async { try { state = InitialExecutionState(); final wallet = await _walletLoadingService.load(walletType, walletName, password: password); _appStore.changeCurrentWallet(wallet); success(); } catch (e) { failure(e.toString()); } } @override @action void success() { state = ExecutedSuccessfullyState(); } @override @action void failure(e) { state = FailureState(e.toString()); } }