private async void GotoContextImpl()
        {
            try
            {
                if (_comment.Data.ParentId == null)
                {
                    return;
                }

                MessengerInstance.Send <LoadingMessage>(new LoadingMessage {
                    Loading = true
                });
                var linkThing   = new TypedThing <Link>(await _redditService.GetThingById(_comment.Data.LinkId));
                var parentThing = await _redditService.GetLinkByUrl("http://www.reddit.com/" + linkThing.Data.Permalink + _comment.Data.ParentId.Substring(3));

                var commentTree = new SelectCommentTreeMessage {
                    LinkThing = new TypedThing <Link>(parentThing)
                };
                MessengerInstance.Send <LoadingMessage>(new LoadingMessage {
                    Loading = false
                });
                _navigationService.Navigate(_dynamicViewLocator.CommentsView, commentTree);
            }
            catch (Exception ex)
            {
                _baconProvider.GetService <INotificationService>().CreateErrorNotification(ex);
            }
        }
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if (e.NavigationMode == NavigationMode.Back)
            {
            }
            else
            {
                if (this.State != null && this.State.ContainsKey("SelectedCommentTreeMessage"))
                {
                    _selectedCommentTree = this.State["SelectedCommentTreeMessage"] as SelectCommentTreeMessage;
                    Messenger.Default.Send <SelectCommentTreeMessage>(_selectedCommentTree);
                }
                else if (this.NavigationContext.QueryString["data"] != null)
                {
                    var unescapedData      = HttpUtility.UrlDecode(this.NavigationContext.QueryString["data"]);
                    var deserializedObject = JsonConvert.DeserializeObject <SelectCommentTreeMessage>(unescapedData);
                    if (deserializedObject is SelectCommentTreeMessage)
                    {
                        _selectedCommentTree = deserializedObject as SelectCommentTreeMessage;
                        Messenger.Default.Send <SelectCommentTreeMessage>(_selectedCommentTree);
                    }
                }

                RegisterShareSourceContract();
            }
        }
        /// <summary>
        /// Populates the page with content passed during navigation.  Any saved state is also
        /// provided when recreating a page from a prior session.
        /// </summary>
        /// <param name="navigationParameter">The parameter value passed to
        /// <see cref="Frame.Navigate(Type, Object)"/> when this page was initially requested.
        /// </param>
        /// <param name="pageState">A dictionary of state preserved by this page during an earlier
        /// session.  This will be null the first time a page is visited.</param>
        protected override void LoadState(Object navigationParameter, Dictionary <String, Object> pageState)
        {
            if (pageState != null && pageState.ContainsKey("SelectedCommentTreeMessage"))
            {
                _selectedCommentTree = pageState["SelectedCommentTreeMessage"] as SelectCommentTreeMessage;
                Messenger.Default.Send <SelectCommentTreeMessage>(_selectedCommentTree);
            }
            else if (navigationParameter != null && navigationParameter is SelectCommentTreeMessage)
            {
                _selectedCommentTree = navigationParameter as SelectCommentTreeMessage;
                Messenger.Default.Send <SelectCommentTreeMessage>(_selectedCommentTree);
            }

            RegisterShareSourceContract();
        }
        private async void GotoFullLinkImpl()
        {
            MessengerInstance.Send <LoadingMessage>(new LoadingMessage {
                Loading = true
            });
            var linkThing = await _redditService.GetThingById(_comment.Data.LinkId);

            var commentTree = new SelectCommentTreeMessage {
                Context = 3, LinkThing = new TypedThing <Link>(linkThing)
            };

            MessengerInstance.Send <LoadingMessage>(new LoadingMessage {
                Loading = false
            });
            _navigationService.Navigate(_dynamicViewLocator.CommentsView, commentTree);
        }
 private void OnComentTreeSelection(SelectCommentTreeMessage msg)
 {
     LoadLink(msg.LinkThing, msg.RootComment);
 }