Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }