public AlbumListViewModel(IFacebookPhotoService photoService = null, IViewStackService viewStackService = null) : base(viewStackService) { photoService = photoService ?? Locator.Current.GetService <IFacebookPhotoService>(); LoadAlbums = ReactiveCommand.CreateFromTask( async() => { var albumData = await photoService.GetAlbumsAsync(Config.Constants.FACEBOOK_PAGE_ID, Config.Constants.FACEBOOK_PAGE_ACCESS_TOKEN, default(CancellationToken)); var viewModels = new List <AlbumCellViewModel>(albumData.Data.Count); foreach (var model in albumData.Data) { var vm = new AlbumCellViewModel(model); viewModels.Add(vm); } return(viewModels); }); _albums = LoadAlbums .SubscribeOn(RxApp.TaskpoolScheduler) .ToProperty(this, vm => vm.Albums, scheduler: RxApp.MainThreadScheduler); this .WhenAnyValue(vm => vm.SelectedItem) .Where(x => x != null) .SelectMany(x => LoadSelectedPage(x)) .Subscribe(); LoadAlbums .ThrownExceptions .Subscribe(ex => this.Log().WarnException("Failed to load albums", ex)); }
public AlbumViewModel(string albumId, IFacebookPhotoService photoService = null, IViewStackService viewStackService = null) : base(viewStackService) { photoService = photoService ?? Locator.Current.GetService <IFacebookPhotoService>(); LoadPhotos = ReactiveCommand.CreateFromTask( async() => { var photos = await photoService.GetAlbumPhotos(albumId, Config.Constants.FACEBOOK_PAGE_ACCESS_TOKEN, default(CancellationToken)); var viewModels = new List <PhotoCellViewModel>(photos.Count); foreach (var model in photos) { var vm = new PhotoCellViewModel(model); viewModels.Add(vm); } return(viewModels); }); _photos = LoadPhotos.ToProperty(this, x => x.Photos); }