Ejemplo n.º 1
0
 async void OnShowComment(object sender, EventArgs args)
 {
     if (UserTokenSettings.Current.HasExpiresIn())
     {
         MessagingService.Current.SendMessage(MessageKeys.NavigateLogin);
     }
     else
     {
         var page = new NewsCommentPopupPage(news, new Action <NewsComments>(OnResult));
         await Navigation.PushPopupAsync(page);
     }
 }
Ejemplo n.º 2
0
        public NewsDetailsPage(News news)
        {
            this.news = news;
            InitializeComponent();
            BindingContext = new NewsDetailsViewModel(news);

            var cancel = new ToolbarItem
            {
                Text    = "分享",
                Command = new Command(() =>
                {
                    DependencyService.Get <IShares>().SharesIcon("https://news.cnblogs.com/n/" + news.Id + "/", news.Title, news.TopicIcon);
                })
            };

            ToolbarItems.Add(cancel);

            if (Device.Android == Device.RuntimePlatform)
            {
                cancel.Icon = "toolbar_share.png";
            }

            formsWebView.OnContentLoaded += delegate(object sender, EventArgs e)
            {
                RefreshNews();
            };
            formsWebView.AddLocalCallback("reload", async delegate(string obj)
            {
                if (formsWebView.LoadStatus == LoadMoreStatus.StausDefault || formsWebView.LoadStatus == LoadMoreStatus.StausError || formsWebView.LoadStatus == LoadMoreStatus.StausFail)
                {
                    var newsComments = JsonConvert.SerializeObject(await ViewModel.ReloadCommentsAsync());
                    await formsWebView.InjectJavascriptAsync("updateComments(" + newsComments + ");");
                }
            });
            formsWebView.AddLocalCallback("editItem", delegate(string id)
            {
                var newsComments = ViewModel.NewsComments.Where(n => n.CommentID == int.Parse(id)).FirstOrDefault();
                Device.BeginInvokeOnMainThread(async() =>
                {
                    var page = new NewsCommentPopupPage(news, new Action <NewsComments>(OnResult), newsComments);
                    await Navigation.PushPopupAsync(page);
                });
            });
            formsWebView.AddLocalCallback("deleteItem", async delegate(string id)
            {
                var result = await ViewModel.DeleteCommentAsync(int.Parse(id));
                await formsWebView.InjectJavascriptAsync("deleteComment(" + id + "," + result.ToString().ToLower() + ");");
            });
        }