Exemplo n.º 1
0
        public FeedVideoListPageViewModel(HohoemaApp hohoemaApp, PageManager pageManager, Views.Service.MylistRegistrationDialogService mylistDialogService)
            : base(hohoemaApp, pageManager, mylistDialogService, isRequireSignIn: true)
        {
            LastUpdate = new ReactiveProperty <DateTime>();

            AllMarkAsReadCommand = new DelegateCommand(async() =>
            {
                FeedGroup.ForceMarkAsRead();

                await HohoemaApp.FeedManager.SaveOne(FeedGroup);

                AllMarkAsReadCommand.RaiseCanExecuteChanged();
            }
                                                       , () =>
            {
                return((FeedGroup?.GetUnreadItemCount() ?? 0) > 0);
            });


            SelectedItemsMarkAsReadCommand = SelectedItems.ToCollectionChanged()
                                             .Select(x => SelectedItems.Count(y => y.IsUnread.Value) > 0)
                                             .ToReactiveCommand(false)
                                             .AddTo(_CompositeDisposable);

            SelectedItemsMarkAsReadCommand.Subscribe(async _ =>
            {
                foreach (var item in SelectedItems)
                {
                    await HohoemaApp.FeedManager.MarkAsRead(item.VideoId);
                    await HohoemaApp.FeedManager.MarkAsRead(item.RawVideoId);
                }

                ClearSelection();
            })
            .AddTo(_CompositeDisposable);

            OpenFeedGroupPageCommand = new DelegateCommand(() =>
            {
                if (FeedGroup != null)
                {
                    PageManager.OpenPage(HohoemaPageType.FeedGroup, FeedGroup.Id);
                }
            });
        }