protected BaseIssuesViewModel() { Issues = IssuesBacking.CreateDerivedCollection( x => CreateItemViewModel(x), filter: x => x.Title.ContainsKeyword(SearchKeyword), signalReset: this.WhenAnyValue(x => x.SearchKeyword)); Issues.Changed.Subscribe(_ => { GroupedIssues = Issues.GroupBy(x => x.RepositoryFullName) .Select(x => new IssueGroupViewModel(x.Key, x)).ToList(); }); LoadCommand = ReactiveCommand.CreateAsyncTask(t => { return(IssuesBacking.SimpleCollectionLoad(CreateRequest(), t as bool?, x => LoadMoreCommand = x == null ? null : ReactiveCommand.CreateAsyncTask(_ => x()))); }); }
protected BaseIssuesViewModel() { var gotoIssueCommand = ReactiveCommand.Create(); gotoIssueCommand.OfType <IssueItemViewModel>().Where(x => x.IsPullRequest).Subscribe(x => { var vm = this.CreateViewModel <PullRequestViewModel>(); vm.RepositoryOwner = x.RepositoryOwner; vm.RepositoryName = x.RepositoryName; vm.Id = x.Number; NavigateTo(vm); }); gotoIssueCommand.OfType <IssueItemViewModel>().Where(x => !x.IsPullRequest).Subscribe(x => { var vm = this.CreateViewModel <IssueViewModel>(); vm.RepositoryOwner = x.RepositoryOwner; vm.RepositoryName = x.RepositoryName; vm.Id = x.Number; NavigateTo(vm); }); gotoIssueCommand.CanExecuteObservable.Subscribe(x => { System.Diagnostics.Debug.WriteLine("OH SHIT {0}", x); }); Issues = IssuesBacking.CreateDerivedCollection( x => new IssueItemViewModel(x, gotoIssueCommand), filter: x => x.Title.ContainsKeyword(SearchKeyword), signalReset: this.WhenAnyValue(x => x.SearchKeyword)); Issues.Changed.Subscribe(_ => { GroupedIssues = Issues.GroupBy(x => x.RepositoryFullName) .Select(x => new IssueGroupViewModel(x.Key, x)).ToList(); }); LoadCommand = ReactiveCommand.CreateAsyncTask(t => { return(IssuesBacking.SimpleCollectionLoad(CreateRequest(), t as bool?, x => LoadMoreCommand = x == null ? null : ReactiveCommand.CreateAsyncTask(_ => x()))); }); }