public WebViewTag(DataJavascriptInterface dataJavascriptInterface) { DataJavascriptInterface = dataJavascriptInterface; }
protected override void RootContainerInit() { var jsInterface = new DataJavascriptInterface(Context); ForumTopicPageItemWebView.Settings.JavaScriptEnabled = true; _client = new ListenableWebClient(); _client.NavigationInterceptOpportunity = NavigationInterceptOpportunity; ForumTopicPageItemWebView.SetWebViewClient(_client); ForumTopicPageItemWebView.AddJavascriptInterface(jsInterface, "android"); ForumTopicPageItemWebView.Tag = new WebViewTag(jsInterface).Wrap(); ForumTopicPageItemWebView.VerticalScrollBarEnabled = false; ForumTopicPageItemWebView.ScrollbarFadingEnabled = true; ForumTopicPageItemWebView.HorizontalScrollBarEnabled = false; ForumTopicPageItemWebView.ScrollBarDefaultDelayBeforeFade = 0; ForumTopicPageItemWebView.SetBackgroundColor(Color.Transparent); _dataJavascriptInterface = jsInterface; _dataJavascriptInterface.NewResponse += DataJavascriptInterfaceOnNewResponse; ForumTopicPageItemEditButton.SetOnClickListener(new OnClickListener(async view => { await ViewModel.StartEdit(); var str = await TextInputDialogBuilder.BuildForumPostTextInputDialog(Context, TextInputDialogBuilder.ForumPostTextInputContext.Edit, ViewModel.BBcodeContent); if (!string.IsNullOrEmpty(str)) { ViewModel.BBcodeContent = str; ViewModel.SubmitEditCommand.Execute(null); } })); ForumTopicPageItemQuoteButton.SetOnClickListener(new OnClickListener(async view => { var semaphore = new SemaphoreSlim(0); var vm = ViewModelLocator.ForumsTopic; var deleg = new PropertyChangedEventHandler((sender, args) => { if (args.PropertyName == nameof(vm.ReplyMessage)) { semaphore.Release(); } }); vm.ReplyMessage = string.Empty; vm.PropertyChanged += deleg; ViewModel.QuoteCommand.Execute(null); await semaphore.WaitAsync(); vm.PropertyChanged -= deleg; var str = await TextInputDialogBuilder.BuildForumPostTextInputDialog(Context, TextInputDialogBuilder.ForumPostTextInputContext.Reply, vm.ReplyMessage); if (!string.IsNullOrEmpty(str)) { vm.ReplyMessage = str; vm.CreateReplyCommand.Execute(null); } })); ForumTopicPageItemDeleteButton.SetOnClickListener(new OnClickListener(view => { ViewModel.DeleteCommand.Execute(null); })); ForumTopicPageItemSendMessageButton.SetOnClickListener(new OnClickListener(view => { ViewModelLocator.ForumsTopic.NavigateMessagingCommand.Execute(ViewModel.Data.Poster.MalUser); })); ForumTopicPageItemSeeOtherPostsButton.SetOnClickListener(new OnClickListener(view => { ViewModel.GoToPostersOtherPosts.Execute(null); })); var listener = new OnClickListener(view => ViewModelLocator.ForumsTopic.NavigateProfileCommand.Execute(ViewModel.Data.Poster.MalUser)); ForumTopicPageItemPostAuthor.SetOnClickListener(listener); ForumTopicPageItemAuthorImage.SetOnClickListener(listener); }