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); } }
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); }