private async Task <TPaginated> GetPageUncheckedAsync(int index) { lock (PageCache) { if (index < PageCache.Count && PageCache[index] != null) { return(PageCache[index]); } } var newParameters = Parameters != null ? new HttpValueCollection(Parameters) : new HttpValueCollection(); newParameters.SetPage(index + 1); newParameters.SetLimit(ResultsPerPage); var page = await CoinbaseClient.GetAsync <TPaginated>(Endpoint, newParameters, Converters).ConfigureAwait(false); if (page.CurrentPage <= page.NumPages) { Contract.Assert(index == (page.CurrentPage - 1)); lock (PageCache) { while (index >= PageCache.Count) { PageCache.Add(null); } PageCache[index] = page; } } return(page); }
// todo: do we need this functionality? internal static TViewModel RegisterView <TViewModel>( Page page) where TViewModel : class, IViewModel { var viewType = page.GetType(); var registrationInfo = new NavigationRegistration { ViewModelType = typeof(TViewModel), ViewType = viewType }; RegisterInternal(registrationInfo); var cachedPage = new CachedPage(page); PageCache.Add(cachedPage); var viewModel = dependencyResolver.Resolve <TViewModel>(); if (viewModel != null) { TaskHelper.RunSync( viewModel.InitializeAsync); } return(viewModel); }