From c2a1c9eaac66cf6213d73ea91637a1b6a5140ffe Mon Sep 17 00:00:00 2001 From: aminecmi Date: Sun, 26 Feb 2023 16:05:26 +0100 Subject: [PATCH] fix: requirecontext issues ? --- .../android/fragments/ArticleFragment.kt | 185 +++++++++--------- 1 file changed, 95 insertions(+), 90 deletions(-) diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt index f3f37a7..f364b76 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/ArticleFragment.kt @@ -151,17 +151,19 @@ class ArticleFragment : Fragment(), DIAware { } catch (e: InflateException) { e.sendSilentlyWithAcraWithName("webview not available") - AlertDialog.Builder(requireContext()) - .setMessage(requireContext().getString(R.string.webview_dialog_issue_message)) - .setTitle(requireContext().getString(R.string.webview_dialog_issue_title)) - .setPositiveButton( - android.R.string.ok - ) { _, _ -> - appSettingsService.disableArticleViewer() - requireActivity().finish() - } - .create() - .show() + if (context != null) { + AlertDialog.Builder(requireContext()) + .setMessage(requireContext().getString(R.string.webview_dialog_issue_message)) + .setTitle(requireContext().getString(R.string.webview_dialog_issue_title)) + .setPositiveButton( + android.R.string.ok + ) { _, _ -> + appSettingsService.disableArticleViewer() + requireActivity().finish() + } + .create() + .show() + } } return binding.root @@ -305,14 +307,16 @@ class ArticleFragment : Fragment(), DIAware { binding.webcontent.webViewClient = object : WebViewClient() { @Deprecated("Deprecated in Java") override fun shouldOverrideUrlLoading(view: WebView?, url: String): Boolean { - if (binding.webcontent.hitTestResult.type != WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { + return if (context != null && binding.webcontent.hitTestResult.type != WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { try { requireContext().startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url))) } catch (e: ActivityNotFoundException) { e.sendSilentlyWithAcraWithName("activityNotFound > $url") } + true + } else { + false } - return true } @Deprecated("Deprecated in Java") @@ -364,74 +368,74 @@ class ArticleFragment : Fragment(), DIAware { } private fun htmlToWebview() { - - val attrs: IntArray = intArrayOf(android.R.attr.fontFamily) - val a: TypedArray = requireContext().obtainStyledAttributes(resId, attrs) + if (context != null) { + val attrs: IntArray = intArrayOf(android.R.attr.fontFamily) + val a: TypedArray = requireContext().obtainStyledAttributes(resId, attrs) - binding.webcontent.settings.standardFontFamily = a.getString(0) - binding.webcontent.visibility = View.VISIBLE + binding.webcontent.settings.standardFontFamily = a.getString(0) + binding.webcontent.visibility = View.VISIBLE - val colorOnSurface = TypedValue() - requireContext().theme.resolveAttribute(R.attr.colorOnSurface, colorOnSurface, true) + val colorOnSurface = TypedValue() + requireContext().theme.resolveAttribute(R.attr.colorOnSurface, colorOnSurface, true) - val colorSurface = TypedValue() - requireContext().theme.resolveAttribute(R.attr.colorSurface, colorSurface, true) + val colorSurface = TypedValue() + requireContext().theme.resolveAttribute(R.attr.colorSurface, colorSurface, true) - binding.webcontent.settings.useWideViewPort = true - binding.webcontent.settings.loadWithOverviewMode = true - binding.webcontent.settings.javaScriptEnabled = false + binding.webcontent.settings.useWideViewPort = true + binding.webcontent.settings.loadWithOverviewMode = true + binding.webcontent.settings.javaScriptEnabled = false - handleImageLoading() + handleImageLoading() - val gestureDetector = - GestureDetector(activity, object : GestureDetector.SimpleOnGestureListener() { - override fun onSingleTapUp(e: MotionEvent): Boolean { - return performClick() - } - }) + val gestureDetector = + GestureDetector(activity, object : GestureDetector.SimpleOnGestureListener() { + override fun onSingleTapUp(e: MotionEvent): Boolean { + return performClick() + } + }) - binding.webcontent.setOnTouchListener { _, event -> gestureDetector.onTouchEvent(event) } + binding.webcontent.setOnTouchListener { _, event -> gestureDetector.onTouchEvent(event) } - binding.webcontent.settings.layoutAlgorithm = - WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING + binding.webcontent.settings.layoutAlgorithm = + WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING - var baseUrl: String? = null + var baseUrl: String? = null - try { - val itemUrl = URL(url) - baseUrl = itemUrl.protocol + "://" + itemUrl.host - } catch (e: MalformedURLException) { - e.sendSilentlyWithAcraWithName("htmlToWebview > item url") - } + try { + val itemUrl = URL(url) + baseUrl = itemUrl.protocol + "://" + itemUrl.host + } catch (e: MalformedURLException) { + e.sendSilentlyWithAcraWithName("htmlToWebview > item url") + } - val fontName = when (font) { - getString(R.string.open_sans_font_id) -> "Open Sans" - getString(R.string.roboto_font_id) -> "Roboto" - getString(R.string.source_code_pro_font_id) -> "Source Code Pro" - else -> "" - } + val fontName = when (font) { + getString(R.string.open_sans_font_id) -> "Open Sans" + getString(R.string.roboto_font_id) -> "Roboto" + getString(R.string.source_code_pro_font_id) -> "Source Code Pro" + else -> "" + } - val fontLinkAndStyle = if (font.isNotEmpty()) { - """ + val fontLinkAndStyle = if (font.isNotEmpty()) { + """ | """.trimMargin() - } else { - "" - } + } else { + "" + } - binding.webcontent.loadDataWithBaseURL( - baseUrl, - """ + binding.webcontent.loadDataWithBaseURL( + baseUrl, + """ | | | | $fontLinkAndStyle @@ -500,10 +504,11 @@ class ArticleFragment : Fragment(), DIAware { | | $contentText |""".trimMargin(), - "text/html", - "utf-8", - null - ) + "text/html", + "utf-8", + null + ) + } } fun scrollDown() {