async Task <IEnumerable <LiveInfoListItemViewModel> > IIncrementalSource <LiveInfoListItemViewModel> .GetPagedItemsAsync(int pageIndex, int pageSize, CancellationToken ct) { _Reservations ??= await LiveReservationProvider.GetReservtionsDetailAsync(); ct.ThrowIfCancellationRequested(); // 生放送情報の詳細をローカルDBに確保 // 既に存在する場合はスキップ var head = pageIndex * pageSize; List <LiveInfoListItemViewModel> items = new (); foreach (var item in _Reservations.Data.Items.Skip(head).Take(pageSize)) { var liveData = await NicoLiveProvider.GetLiveInfoAsync(item.LiveId); //var tsItem = _TimeshiftList.Data.Items.FirstOrDefault(y => y.Id == item.LiveIdWithoutPrefix); var liveInfoVM = new LiveInfoListItemViewModel(item.LiveId); liveInfoVM.ExpiredAt = item.ExpiredAt?.LocalDateTime; liveInfoVM.Setup(liveData.Data); liveInfoVM.SetReservation(item); items.Add(liveInfoVM); ct.ThrowIfCancellationRequested(); } return(items); }
protected override async Task <int> ResetSourceImpl() { var reservations = await LiveReservationProvider.GetReservtionsAsync(); _Reservations = reservations.ReservedProgram; _TimeshiftList = await LiveReservationProvider.GetTimeshiftListAsync(); return(reservations.ReservedProgram.Count); }