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); }