Exemple #1
0
    public void UpdateLabels()
    {
        var labels = WalletHelpers.GetLabels();

        var mostUsedLabels = labels.GroupBy(x => x)
                             .Select(x => new
        {
            Label = x.Key,
            Count = x.Count()
        })
                             .OrderByDescending(x => x.Count)
                             .ToList();

        _sourceLabels.Clear();
        _sourceLabels.AddRange(
            mostUsedLabels.Select(x => new SuggestionLabelViewModel(x.Label, x.Count)));
    }
        public ReceiveViewModel(Wallet wallet)
        {
            _wallet = wallet;
            _labels = new ObservableCollectionExtended <string>();
            var allLabels = WalletHelpers.GetLabels();

            var mostUsedLabels = allLabels.GroupBy(x => x)
                                 .Select(x => new
            {
                Label = x.Key,
                Count = x.Count()
            })
                                 .OrderByDescending(x => x.Count)
                                 .ToList();

            _suggestions = mostUsedLabels.Select(x => x.Label).ToHashSet();

            _suggestionLabels       = new SourceList <SuggestionLabelViewModel>();
            _suggestionLabelResults = new ObservableCollectionExtended <SuggestionLabelViewModel>();

            _suggestionLabels.AddRange(
                mostUsedLabels.Select(x => new SuggestionLabelViewModel(x.Label, x.Count)));

            var suggestionLabelsFilter = this.WhenAnyValue(x => x.Labels).Select(_ => Unit.Default)
                                         .Merge(Observable.FromEventPattern(Labels, nameof(Labels.CollectionChanged)).Select(_ => Unit.Default))
                                         .Select(SuggestionLabelsFilter);

            _suggestionLabels
            .Connect()
            .Filter(suggestionLabelsFilter)
            .Sort(SortExpressionComparer <SuggestionLabelViewModel> .Descending(x => x.Count))
            .Top(3)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(_suggestionLabelResults)
            .Subscribe();

            SetupCancel(enableCancel: true, enableCancelOnEscape: true, enableCancelOnPressed: true);

            EnableBack = false;

            NextCommand = ReactiveCommand.Create(OnNext, _labels.ToObservableChangeSet().Select(_ => _labels.Count > 0));

            ShowExistingAddressesCommand = ReactiveCommand.Create(OnShowExistingAddresses);
        }