static private async Task <List <Database.NicoVideo> > GetMylistFeedResult(string mylistId, Provider.MylistProvider mylistProvider)
        {
            List <Database.NicoVideo> items = new List <Database.NicoVideo>();
            int       page = 0;
            const int itemGetCountPerPage = 50;
            var       head = page * itemGetCountPerPage;
            var       tail = head + itemGetCountPerPage;
            var       res  = await mylistProvider.GetMylistGroupVideo(mylistId, (uint)head, (uint)itemGetCountPerPage);

            var videoItems        = res;
            var currentItemsCount = videoItems?.Count ?? 0;

            if (videoItems == null || currentItemsCount == 0)
            {
            }
            else
            {
                foreach (var item in videoItems)
                {
                    var video = Database.NicoVideoDb.Get(item);
                    items.Add(video);
                }
            }

            return(items);
        }
        public SubscriptionManager(
            IScheduler scheduler,
            Provider.ChannelProvider channelProvider,
            Provider.SearchProvider searchProvider,
            Provider.UserProvider userProvider,
            Provider.MylistProvider mylistProvider,
            Services.NotificationService notificationService

            )
        {
            Scheduler           = scheduler;
            ChannelProvider     = channelProvider;
            SearchProvider      = searchProvider;
            UserProvider        = userProvider;
            MylistProvider      = mylistProvider;
            NotificationService = notificationService;

            var storedSubscriptions = Database.Local.Subscription.SubscriptionDb.GetOrderedSubscriptions();

            Subscriptions = new ObservableCollection <Subscription>(storedSubscriptions);

            Subscriptions.CollectionChangedAsObservable()
            .Subscribe(arg =>
            {
                switch (arg.Action)
                {
                case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
                    foreach (var item in arg.NewItems.Cast <Subscription>())
                    {
                        AddOrUpdateToSubscriptionDatabase(item);

                        SubscribeSubscriptionChanged(item);

                        item.IsDeleted = false;
                    }
                    break;

                case System.Collections.Specialized.NotifyCollectionChangedAction.Move:
                    // TODO: 購読グループの優先度変更に対応する
                    break;

                case System.Collections.Specialized.NotifyCollectionChangedAction.Remove:
                    foreach (var item in arg.OldItems.Cast <Subscription>())
                    {
                        RemoveFromSubscriptionDatabase(item);

                        UnsubscribeSubscriptionChanged(item);

                        item.IsDeleted = true;
                    }
                    break;

                case System.Collections.Specialized.NotifyCollectionChangedAction.Replace:
                    break;

                case System.Collections.Specialized.NotifyCollectionChangedAction.Reset:
                    break;

                default:
                    break;
                }
            });

            foreach (var firstItem in storedSubscriptions)
            {
                SubscribeSubscriptionChanged(firstItem);
            }
        }
Beispiel #3
0
        static private async Task <List <IVideoContent> > GetMylistFeedResult(string mylistId, Provider.MylistProvider mylistProvider)
        {
            List <IVideoContent> items    = new List <IVideoContent>();
            int       page                = 0;
            const int itemGetCountPerPage = 50;
            var       head                = page * itemGetCountPerPage;
            var       tail                = head + itemGetCountPerPage;
            var       result              = await mylistProvider.GetMylistGroupVideo(mylistId, head, itemGetCountPerPage);

            var videoItems        = result.Items;
            var currentItemsCount = videoItems?.Count ?? 0;

            if (result.IsSuccess)
            {
                items.AddRange(videoItems);
            }

            return(items);
        }