private async Task SaveReleaseWatchTimestamp(long releaseId) { var releases = m_ReleasesCollection.Find(a => true); var release = releases.FirstOrDefault(a => a.Id == releaseId); release.LastWatchTimestamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; m_ReleasesCollection.Update(release); var lastThreeWatchReleases = releases .Where(a => a.LastWatchTimestamp > 0) .OrderByDescending(a => a.LastWatchTimestamp) .Take(3) .ToList(); if (!lastThreeWatchReleases.Any()) { return; } var jumpService = new JumpListService(); var dictionary = new Dictionary <long, string> (); foreach (var watchRelease in lastThreeWatchReleases) { dictionary.Add(watchRelease.Id, watchRelease.Title); } await jumpService.ChangeWatchHistoryItems(dictionary); }
/// <summary> /// Save player restore state. /// </summary> public void SavePlayerRestoreState() { if (SelectedOnlineVideo == null) { return; } var isNotNeedUpdatePosition = m_PlayerRestoreEntity?.ReleaseId == SelectedRelease?.Id && m_PlayerRestoreEntity?.VideoPosition > 0 && Position == 0; m_PlayerRestoreEntity.ReleaseId = SelectedRelease.Id; m_PlayerRestoreEntity.VideoId = SelectedOnlineVideo.Order; if (!isNotNeedUpdatePosition) { m_PlayerRestoreEntity.VideoPosition = Position; } m_RestoreCollection.Update(m_PlayerRestoreEntity); if (m_ReleaseVideoStateEntity == null || m_ReleaseVideoStateEntity.ReleaseId != SelectedRelease.Id) { m_ReleaseVideoStateEntity = m_ReleaseStateCollection.FirstOrDefault(a => a.ReleaseId == SelectedRelease.Id); if (m_ReleaseVideoStateEntity == null) { m_ReleaseVideoStateEntity = new ReleaseVideoStateEntity { ReleaseId = SelectedRelease.Id, VideoStates = new List <VideoStateEntity> () }; m_ReleaseStateCollection.Add(m_ReleaseVideoStateEntity); } } if (m_ReleaseVideoStateEntity.VideoStates == null) { m_ReleaseVideoStateEntity.VideoStates = new List <VideoStateEntity> (); } var videoState = m_ReleaseVideoStateEntity.VideoStates.FirstOrDefault(a => a.Id == SelectedOnlineVideo.Order); if (videoState == null) { m_ReleaseVideoStateEntity.VideoStates.Add( new VideoStateEntity { Id = SelectedOnlineVideo.Order, LastPosition = Position } ); } else { videoState.LastPosition = Position == 0 && videoState.LastPosition > 0 ? videoState.LastPosition : Position; if (!videoState.IsSeen && PositionPercent >= 90 && PositionPercent <= 100) { videoState.IsSeen = true; } } m_ReleaseStateCollection.Update(m_ReleaseVideoStateEntity); }
/// <summary> /// Set download file. /// </summary> /// <param name="releaseId">Release identifier.</param> /// <param name="videoId">Video identifier.</param> /// <param name="quality">Quality.</param> public void AddDownloadFile(long releaseId, OnlineVideoModel videoInfo, VideoQuality quality) { var releaseItem = m_Entity.DownloadingReleases.FirstOrDefault(a => a.ReleaseId == releaseId); if (releaseItem == null) { releaseItem = new DownloadReleaseEntity { ReleaseId = releaseId, Active = true, Videos = new List <DownloadReleaseVideoEntity> { new DownloadReleaseVideoEntity { IsDownloaded = false, Quality = quality, DownloadUrl = quality == VideoQuality.HD ? videoInfo.DownloadableHD.ToString() : videoInfo.DownloadableSD.ToString(), DownloadedSize = 0, Id = videoInfo.Order } } }; var list = m_Entity.DownloadingReleases.ToList(); list.Add(releaseItem); m_Entity.DownloadingReleases = list; } else { var video = releaseItem.Videos.Where(a => a.Id == videoInfo.Order && a.Quality == quality).FirstOrDefault(); if (video == null) { video = new DownloadReleaseVideoEntity { IsDownloaded = false, Quality = quality, DownloadUrl = quality == VideoQuality.HD ? videoInfo.DownloadableHD.ToString() : videoInfo.DownloadableSD.ToString(), DownloadedSize = 0, Id = videoInfo.Order }; var videos = releaseItem.Videos.ToList(); videos.Add(video); releaseItem.Videos = videos; } releaseItem.Active = true; } m_Collection.Update(m_Entity); }
private void ToggleSeenMark(OnlineVideoModel onlineVideo) { FillReleaseVideoState(); var videoState = m_ReleaseVideoStateEntity.VideoStates.FirstOrDefault(a => a.Id == onlineVideo.Order); if (videoState == null) { m_ReleaseVideoStateEntity.VideoStates.Add( new VideoStateEntity { Id = onlineVideo.Order, IsSeen = true } ); onlineVideo.IsSeen = true; } else { onlineVideo.IsSeen = !onlineVideo.IsSeen; videoState.IsSeen = onlineVideo.IsSeen; } m_ReleaseStateCollection.Update(m_ReleaseVideoStateEntity); }