public void Init(NavObject nav) { Username = nav.Username; Repository = nav.Repository; Simple = nav.Simple; _issues = new FilterableCollectionViewModel <IssueModel, IssuesFilterModel>("IssuesViewModel:" + Username + "/" + Repository); _issues.GroupingFunction = Group; _issues.Bind(x => x.Filter).Subscribe(_ => LoadCommand.Execute(true)); _addToken = Messenger.SubscribeOnMainThread <IssueAddMessage>(x => { if (x.Issue == null || !DoesIssueBelong(x.Issue)) { return; } Issues.Items.Insert(0, x.Issue); }); _editToken = Messenger.SubscribeOnMainThread <IssueEditMessage>(x => { if (x.Issue == null || !DoesIssueBelong(x.Issue)) { return; } var item = Issues.Items.FirstOrDefault(y => y.LocalId == x.Issue.LocalId); if (item == null) { return; } var index = Issues.Items.IndexOf(item); using (Issues.DeferRefresh()) { Issues.Items.RemoveAt(index); Issues.Items.Insert(index, x.Issue); } }); _deleteToken = Messenger.SubscribeOnMainThread <IssueDeleteMessage>(x => { var find = Issues.Items.FirstOrDefault(i => i.LocalId == x.Issue.LocalId); if (find != null) { Issues.Items.Remove(find); } }); _filterToken = Messenger.SubscribeOnMainThread <IssuesFilterMessage>(x => { _issues.Filter = x.Filter; }); }
public MyIssuesViewModel(IMessageService messageService = null) { messageService = messageService ?? GetService <IMessageService>(); _issues = new FilterableCollectionViewModel <IssueModel, MyIssuesFilterModel>("MyIssues"); _issues.GroupingFunction = Group; _issues.Bind(x => x.Filter).Subscribe(_ => LoadCommand.Execute(false)); this.Bind(x => x.SelectedFilter).Subscribe(x => { if (x == 0) { _issues.Filter = MyIssuesFilterModel.CreateOpenFilter(); } else if (x == 1) { _issues.Filter = MyIssuesFilterModel.CreateClosedFilter(); } }); _editToken = messageService.Listen <IssueEditMessage>(x => { if (x.Issue == null) { return; } var item = Issues.Items.FirstOrDefault(y => y.Number == x.Issue.Number); if (item == null) { return; } var index = Issues.Items.IndexOf(item); using (Issues.DeferRefresh()) { Issues.Items.RemoveAt(index); Issues.Items.Insert(index, x.Issue); } }); }
public void Init(NavObject nav) { Username = nav.Username; Repository = nav.Repository; _issues = new FilterableCollectionViewModel <IssueModel, IssuesFilterModel>("IssuesViewModel:" + Username + "/" + Repository); _issues.GroupingFunction = Group; _issues.Bind(x => x.Filter).Subscribe(_ => LoadCommand.Execute(true)); _addToken = _messageService.Listen <IssueAddMessage>(x => { if (x.Issue == null || !DoesIssueBelong(x.Issue)) { return; } Issues.Items.Insert(0, x.Issue); }); _editToken = _messageService.Listen <IssueEditMessage>(x => { if (x.Issue == null || !DoesIssueBelong(x.Issue)) { return; } var item = Issues.Items.FirstOrDefault(y => y.Number == x.Issue.Number); if (item == null) { return; } var index = Issues.Items.IndexOf(item); using (Issues.DeferRefresh()) { Issues.Items.RemoveAt(index); Issues.Items.Insert(index, x.Issue); } }); }