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