Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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();
        }