public MenuPageViewModel(int index, Func <IDataSource> getGetDataSource, IConnectionListener connectionListener)
        {
            _getDataSource      = getGetDataSource;
            _connectionListener = connectionListener;
            _connectionListener.Subscribe(this);
            _categories = new ObservableCollection <GuideCategoryNodeViewModel>();

            if (_getDataSource().IsAuthorized)
            {
                _recommendedSectionViewModel = new RecommendedSectionViewModel(_getDataSource, connectionListener, this);
                _subscriptions           = new SubscriptionChannelsViewModel(_getDataSource, connectionListener);
                _history                 = new HistoryPageViewModel(_getDataSource, connectionListener);
                _likedViewModel          = new LikedViewModel(_getDataSource, connectionListener);
                _uploadedPageViewModel   = new UploadedPageViewModel(_getDataSource, connectionListener);
                _myPlaylistListViewModel = new MyPlaylistListViewModel(_getDataSource, connectionListener, new NoContextMenuStrategy(), this);
            }

            _categoryCommand = new RelayCommand <NavigationObject>(CategoryLoad);

            SelectedIndex = index;

            _isConnected = connectionListener.CheckNetworkAvailability();
            //App.ViewModel.IndicatorHolder.Subscribe(() =>
            //{
            //    ProgressIndicator = App.ViewModel.IndicatorHolder.ProgressIndicator;
            //});
        }
        private async void LoadVideoItem(string videoId)
        {
            RelatedVideosViewModel = new RelatedVideosViewModel(videoId, _getDataSource, _connectionListener, this);
            CommentsViewModel      = new CommentsViewModel(videoId, _getDataSource, _connectionListener);

            var videoItem = await _getDataSource().GetVideoItem(videoId);

            if (videoItem == null)
            {
                return;
            }

            SetChannelInfo(videoItem.ChannelId);

            LayoutHelper.InvokeFromUiThread(() =>
            {
                if (!_connectionListener.CheckNetworkAvailability())
                {
                    return;
                }

                if (videoItem.Details != null)
                {
                    Title       = videoItem.Details.Title;
                    Description = videoItem.Details.Description;
                    Duration    = videoItem.Details.Duration;
                    ViewCount   = videoItem.Details.Statistics.ViewCount;
                    SetLikesAndDislikes(videoItem.Details.Statistics);
                    IsLive = videoItem.Details.IsLive;
                }

                if (videoItem.Thumbnails != null)
                {
                    ImagePath = videoItem.Thumbnails.GetThumbnailUrl();
                }

                if (videoItem.PublishedAt != null)
                {
                    PublishedAt = videoItem.PublishedAt.Value.ToString("D");
                }

                SetVideoRating(videoId);
                var defaultQuality = SettingsHelper.GetQuality();
                var quality        = _qualityConverter.GetQualityEnum(defaultQuality);
                SetVideoUri(videoId, quality, IsLive);
            });
        }