public async Task <IList <T> > LoadMore(CancellationToken token) { var packageSource = _sourceRepository.PackageSource.Source; List <T> list; if (_packageListCache.TryGetPackages(packageSource, out var packages)) { list = LocalSearch(packages); } else { list = await SearchOnServer(token); if (list.Count > _pageSize) { // More packages than requested, assume static feed _packageListCache.SetPackages(packageSource, list); list = LocalSearch(list); } } if (list.Count < _pageSize) { _lastPageIndex = CurrentPage; } else { CurrentPage++; } return(list); }