示例#1
0
        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);
            }
        }
示例#2
0
        static private async Task <List <Database.NicoVideo> > GetTagSearchFeedResult(string tag, Provider.SearchProvider searchProvider)
        {
            List <Database.NicoVideo> items = new List <Database.NicoVideo>();
            int       page = 0;
            const int itemGetCountPerPage = 50;

            var head = page * itemGetCountPerPage;
            var res  = await searchProvider.GetTagSearch(tag, (uint)head, itemGetCountPerPage);

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

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

                    video.Title    = item.Video.Title;
                    video.PostedAt = item.Video.FirstRetrieve;

                    items.Add(video);
                }
            }


            return(items);
        }