Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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);
        }