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); } }
static private async Task <List <Database.NicoVideo> > GetChannelVideosFeedResult(string channelId, Provider.ChannelProvider channelProvider) { List <Database.NicoVideo> items = new List <Database.NicoVideo>(); int page = 0; var res = await channelProvider.GetChannelVideo(channelId, page); var videoItems = res.Videos; var currentItemsCount = videoItems?.Count ?? 0; if (videoItems == null || currentItemsCount == 0) { } else { foreach (var item in videoItems) { var video = Database.NicoVideoDb.Get(item.ItemId); video.Title = item.Title; video.PostedAt = item.PostedAt; items.Add(video); } } return(items); }