Esempio n. 1
0
 public SnapRelease GetGenesisRelease()
 {
     return(HasGenesisRelease() ? Releases?.First() : null);
 }
Esempio n. 2
0
        /// <summary>
        /// Start navigate to page.
        /// </summary>
        /// <param name="parameter">Parameter.</param>
        public async void NavigateTo(object parameter)
        {
            try {
                if (m_DisplayRequest == null)
                {
                    m_DisplayRequest = new DisplayRequest();
                }
                m_DisplayRequest.RequestActive();
            }
            catch {
            }

            UpdateVolumeState(m_Volume);

            if (parameter == null)
            {
                if (VideoSource != null)
                {
                    ChangePlayback(PlaybackState.Play, false);
                }
                else
                {
                    if (m_PlayerRestoreEntity != null && m_PlayerRestoreEntity.ReleaseId > 0)
                    {
                        var release = m_DataContext.GetCollection <ReleaseEntity> ().FirstOrDefault(a => a.Id == m_PlayerRestoreEntity.ReleaseId);
                        if (release != null)
                        {
                            m_RestorePosition   = m_PlayerRestoreEntity.VideoPosition;
                            SelectedRelease     = MapToReleaseModel(release);
                            SelectedOnlineVideo = SelectedRelease.OnlineVideos?.FirstOrDefault(a => a.Order == m_PlayerRestoreEntity.VideoId);

                            ChangePlayback(PlaybackState.Play, false);
                            if (SelectedRelease != null)
                            {
                                await SaveReleaseWatchTimestamp(SelectedRelease.Id);
                            }
                        }
                    }
                }
            }
            else
            {
                var releaseLink = parameter as ReleaseLinkModel;
                if (releaseLink != null)
                {
                    var releaseLinkEntity = m_DataContext.GetCollection <ReleaseEntity> ().FirstOrDefault(a => a.Id == releaseLink.ReleaseId);
                    if (releaseLinkEntity != null)
                    {
                        Releases = new List <ReleaseModel> {
                            MapToReleaseModel(releaseLinkEntity)
                        }
                    }
                    ;
                }
                else
                {
                    Releases = parameter as IEnumerable <ReleaseModel>;
                }
                var release = Releases.First();
                m_ReleaseVideoStateEntity = m_ReleaseStateCollection?.FirstOrDefault(a => a.ReleaseId == release.Id);

                m_Position        = 0;
                m_RestorePosition = 0;
                RaisePropertyChanged(() => Position);

                int onlineVideoIndex = release.PrefferedOpenedVideo == null ? -1 : release.PrefferedOpenedVideo.Order;
                if (onlineVideoIndex == -1 && m_ReleaseVideoStateEntity != null && m_ReleaseVideoStateEntity.VideoStates != null && m_ReleaseVideoStateEntity.VideoStates.Any())
                {
                    onlineVideoIndex = m_ReleaseVideoStateEntity.VideoStates.Max(a => a.Id);
                    var lastVideo = m_ReleaseVideoStateEntity.VideoStates.First(a => a.Id == onlineVideoIndex);
                    m_RestorePosition = lastVideo.LastPosition;
                }

                if (release != null)
                {
                    release.OnlineVideos = release.OnlineVideos?.OrderBy(a => a.Order).ToList() ?? Enumerable.Empty <OnlineVideoModel> ();
                }
                SelectedRelease     = release;
                SelectedOnlineVideo = onlineVideoIndex == -1 ? SelectedRelease?.OnlineVideos?.FirstOrDefault() : SelectedRelease?.OnlineVideos?.FirstOrDefault(a => a.Order == onlineVideoIndex);

                if (SelectedOnlineVideo != null)
                {
                    ChangePlayback(PlaybackState.Play, false);
                }

                if (release != null)
                {
                    release.PrefferedOpenedVideo = null;
                    await SaveReleaseWatchTimestamp(release.Id);
                }
            }

            ShowPlaylistButton = true;

            m_AnalyticsService.TrackEvent("OnlinePlayer", "Opened", parameter == null ? "Parameter is null" : "Parameter is populated");

            if (SelectedOnlineVideo != null)
            {
                ScrollToSelectedPlaylist();
            }

            if (SelectedRelease != null)
            {
                FillReleaseVideoState();
                var states = m_ReleaseVideoStateEntity.VideoStates?.ToList();
                foreach (var onlinevideo in SelectedRelease.OnlineVideos)
                {
                    onlinevideo.IsSeen = states?.FirstOrDefault(a => a.Id == onlinevideo.Order)?.IsSeen ?? false;
                }
            }
        }