Esempio n. 1
0
        protected internal override async Task LoadMoreItemsAsync(ICollection <Repository> collection, uint suggestLoadCount)
        {
            try
            {
                int nextPage = this._currentPage + 1;
                GithubQueryResult <Repository> result = await this._service.GetRepositoriesAsync(this.Query, nextPage);

                if (result.ErrorMessage == null)// no error
                {
                    Repository[] repositories = result.Items;
                    foreach (Repository repository in repositories)
                    {
                        if (collection.Any(temp => temp.Id == repository.Id))
                        {
                            // repository had loaded.
                        }
                        else
                        {
                            collection.Add(repository);
                        }
                    }

                    if (collection.Count >= result.TotalCount)
                    {
                        // had load all the datas, raise has more items.
                        this.RaiseHasMoreItemsChanged(false);
                    }
                }

                // load and add success, set current page to nextpage.
                this._currentPage = nextPage;
            }
            catch
            {
                // you can log the exception here.
            }
        }
        public Task <GithubQueryResult <Repository> > GetRepositoriesAsync(string query, int pageIndex = 1)
        {
            List <Repository> fakeRepositories = new List <Repository>();

            for (int i = 0; i < 10; i++)
            {
                fakeRepositories.Add(new Repository()
                {
                    Id          = _rand.Next(),
                    FullName    = string.Format("{0}/{1}", TakeRandom(_fakeAuthorNames), TakeRandom(_fakeProjectNames)),
                    Language    = TakeRandom(_fakeLanguages),
                    Description = "This is a fake item for design mode",
                    HomeUrl     = TakeRandom(_fakeHomeUrls),
                    Star        = _rand.Next(0xFF),
                    UpdatedAt   = DateTime.Now
                });
            }
            GithubQueryResult <Repository> fakeQueryResult = new GithubQueryResult <Repository>()
            {
                Items = fakeRepositories.ToArray()
            };

            return(Task.FromResult(fakeQueryResult));
        }