public RecoverWalletViewModel(WalletManagerViewModel owner) : base("Recover Wallet") { Global = Locator.Current.GetService <Global>(); WalletManager = Global.WalletManager; this.ValidateProperty(x => x.Password, ValidatePassword); this.ValidateProperty(x => x.MinGapLimit, ValidateMinGapLimit); this.ValidateProperty(x => x.AccountKeyPath, ValidateAccountKeyPath); MnemonicWords = ""; var canExecute = Observable .Merge(Observable.FromEventPattern(this, nameof(ErrorsChanged)).Select(_ => Unit.Default)) .Merge(this.WhenAnyValue(x => x.MnemonicWords).Select(_ => Unit.Default)) .ObserveOn(RxApp.MainThreadScheduler) .Select(_ => !Validations.AnyErrors && MnemonicWords.Split(' ', StringSplitOptions.RemoveEmptyEntries).Length == 12); RecoverCommand = ReactiveCommand.Create(() => RecoverWallet(owner), canExecute); this.WhenAnyValue(x => x.MnemonicWords).Subscribe(UpdateSuggestions); _suggestions = new ObservableCollection <SuggestionViewModel>(); RecoverCommand.ThrownExceptions .ObserveOn(RxApp.TaskpoolScheduler) .Subscribe(ex => Logger.LogError(ex)); }
public void OnAddWord(string word) { string[] words = MnemonicWords.Split(' ', StringSplitOptions.RemoveEmptyEntries); if (words.Length == 0) { MnemonicWords = word + " "; } else { words[words.Length - 1] = word; MnemonicWords = string.Join(' ', words) + " "; } CaretIndex = MnemonicWords.Length; Suggestions.Clear(); }