public IObservable <IList <MixViewModel> > LoadAsync() { var pageData = from _ in this.profileService.GetSettingsAsync().Do(s => this.censor = s.CensorshipEnabled) from latestMixes in MixesService.GetLatestMixesAsync() select new Page <MixContract>(latestMixes.Mixes, 1, latestMixes.Mixes.Count); return(pageData.ObserveOnDispatcher().AddOrReloadPage(this.Mixes, (vm, d) => vm.Load(d, this.censor)).FinallySelect(() => (IList <MixViewModel>) this.Mixes)); }
protected override IObservable <IList <MixContract> > GetPageOfItemsAsync(int pageNumber, int pageSize) { if (this.Tag != null) { return(MixesService.GetTagMixesAsync(this.Tag, this.Sort, pageNumber, pageSize) .Select(r => (IList <MixContract>)r.Mixes)); } if (this.SearchQuery != null) { return(MixesService.GetSearchMixesAsync(this.SearchQuery, this.Sort, pageNumber, pageSize) .Select(r => (IList <MixContract>)r.Mixes)); } return(Observable.Return <IList <MixContract> >(new List <MixContract>())); }
/// <summary> /// </summary> public override void Load() { if (this.IsDataLoaded) { return; } this.ShowProgress(StringResources.Progress_Loading); var tagViewModels = from pageNumber in Observable.Range(1, 5, Scheduler.Immediate) from response in MixesService.GetTagsAsync(pageNumber) where response != null && response.Tags != null from tag in response.Tags.ToObservable() select new TagViewModel(tag.Name); var list = new List <TagViewModel>(); this.subscription = tagViewModels.ObserveOnDispatcher().Subscribe( list.Add, this.HandleError, () => { var t = new TagsByFirstLetter(list); this.Tags = t; this.LoadCompleted(); if (list.Count == 0) { this.Message = StringResources.Message_NoTagsFound; this.ShowMessage = true; } else { this.Message = null; } }); }
protected override IObservable <IList <ReviewContract> > GetPageOfItemsAsync(int pageNumber, int pageSize) { return(MixesService.GetMixReviewsAsync(this.MixId, pageNumber, pageSize) .Select(r => (IList <ReviewContract>)r.Reviews)); }
/// <summary> /// The load mix async. /// </summary> /// <param name="id"> /// The id. /// </param> /// <returns> /// </returns> private IObservable <MixContract> LoadMixAsync(string id) { return(MixesService.GetMixAsync(id).ObserveOnDispatcher().Do(this.LoadMix)); }