Example #1
0
        public async Task CancelCacheRequest(NicoVideoQuality?quality = null)
        {
            if (quality.HasValue)
            {
                var divided = GetDividedQualityNicoVideo(quality.Value);
                await divided.DeleteCache();
            }
            else
            {
                foreach (var divided in GetAllQuality())
                {
                    await divided.DeleteCache();
                }
            }

            // 全てのキャッシュリクエストが取り消されていた場合
            // 動画情報とコメント情報をDBから削除する
            if (GetAllQuality().All(x => !x.IsCacheRequested))
            {
                var info = await VideoInfoDb.GetEnsureNicoVideoInfoAsync(RawVideoId);

                if (!info.IsDeleted)
                {
                    await VideoInfoDb.RemoveAsync(info);
                }

                CommentDb.Remove(RawVideoId);

                _NiconicoMediaManager.VideoCacheStateChanged -= _NiconicoMediaManager_VideoCacheStateChanged;
            }
        }