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