public WalletNamePageViewModel(WalletCreationOption creationOption, string?importFilePath = null) { _importFilePath = importFilePath; EnableBack = true; var canExecute = this.WhenAnyValue(x => x.WalletName) .ObserveOn(RxApp.MainThreadScheduler) .Select(x => !string.IsNullOrWhiteSpace(x) && !Validations.Any); NextCommand = ReactiveCommand.CreateFromTask(async() => await OnNextAsync(WalletName, creationOption), canExecute); this.ValidateProperty(x => x.WalletName, ValidateWalletName); }
private async Task OnNextAsync(string walletName, WalletCreationOption creationOption) { switch (creationOption) { case WalletCreationOption.AddNewWallet: await CreatePasswordAsync(walletName); break; case WalletCreationOption.ConnectToHardwareWallet: Navigate().To(new ConnectHardwareWalletViewModel(walletName)); break; case WalletCreationOption.RecoverWallet: Navigate().To(new RecoverWalletViewModel(walletName)); break; case WalletCreationOption.ImportWallet when _importFilePath is { }: await ImportWalletAsync(walletName, _importFilePath); break;