From 6c97b14db7891a725b151956051d6ed672dce9e2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 21 Jul 2023 18:44:56 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../webView/Learn2earnWebViewActivity.kt | 89 +++++++++---------- .../webView/Learn2earnWebViewClient.kt | 4 +- .../src/main/res/layout/activity_web_view.xml | 31 +++++++ 3 files changed, 77 insertions(+), 47 deletions(-) create mode 100644 features/learn2earn/impl/src/main/res/layout/activity_web_view.xml diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewActivity.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewActivity.kt index 40e8a9e775..b5d341df31 100644 --- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewActivity.kt +++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewActivity.kt @@ -1,19 +1,12 @@ package com.tangem.feature.learn2earn.presentation.webView import android.os.Bundle -import androidx.activity.compose.BackHandler -import androidx.activity.compose.setContent +import android.view.MenuItem +import android.webkit.WebView import androidx.activity.viewModels +import androidx.appcompat.app.ActionBar import androidx.appcompat.app.AppCompatActivity -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Column -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import com.google.accompanist.web.WebView -import com.google.accompanist.web.rememberWebViewState -import com.tangem.core.ui.components.appbar.AppBarWithBackButton -import com.tangem.core.ui.res.TangemTheme +import com.tangem.feature.learn2earn.impl.R import dagger.hilt.android.AndroidEntryPoint /** @@ -24,48 +17,54 @@ class Learn2earnWebViewActivity : AppCompatActivity() { private val viewModel by viewModels() + private lateinit var actionBar: ActionBar + private lateinit var webView: WebView + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setContentView(R.layout.activity_web_view) + val webViewData = viewModel.extractData(intent) - setContent { - TangemTheme { - BackHandler(onBack = { finish() }) - ScreenContent(webViewData) + setSupportActionBar(findViewById(R.id.toolbar)) + actionBar = supportActionBar!! + actionBar.setDisplayHomeAsUpEnabled(true) + actionBar.setDisplayShowHomeEnabled(true) + actionBar.title = webViewData.uri.authority + webView = findViewById(R.id.web_view) + + webView.settings.javaScriptEnabled = true + webView.settings.domStorageEnabled = true + webView.settings.loadsImagesAutomatically = true + + webView.webViewClient = Learn2earnWebViewClient( + redirectHandler = viewModel, + headers = webViewData.headers, + finishSessionHandler = { finish() }, + ) + + webView.loadUrl( + webViewData.uri.toString(), + webViewData.headers, + ) + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + android.R.id.home -> { + finish() + true } + else -> super.onOptionsItemSelected(item) } } - @Suppress("TopLevelComposableFunctions") - @Composable - private fun ScreenContent(webViewData: WebViewData) { - Column { - AppBarWithBackButton( - modifier = Modifier.background(TangemTheme.colors.background.secondary), - text = webViewData.uri.authority, - onBackClick = { finish() }, - ) - WebView( - state = rememberWebViewState( - url = webViewData.uri.toString(), - additionalHttpHeaders = webViewData.headers, - ), - onCreated = { - it.settings.apply { - javaScriptEnabled = true - domStorageEnabled = true - loadsImagesAutomatically = true - } - }, - client = remember { - Learn2earnWebViewClient( - redirectHandler = viewModel, - headers = webViewData.headers, - finishSessionHandler = { finish() }, - ) - }, - ) - } + override fun onDestroy() { + webView.clearHistory() + webView.clearCache(true) + webView.destroy() + + super.onDestroy() } companion object { diff --git a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewClient.kt b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewClient.kt index 575b074b03..7a96dbc90b 100644 --- a/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewClient.kt +++ b/features/learn2earn/impl/src/main/java/com/tangem/feature/learn2earn/presentation/webView/Learn2earnWebViewClient.kt @@ -2,7 +2,7 @@ package com.tangem.feature.learn2earn.presentation.webView import android.webkit.WebResourceRequest import android.webkit.WebView -import com.google.accompanist.web.AccompanistWebViewClient +import android.webkit.WebViewClient import com.tangem.feature.learn2earn.domain.api.WebViewAction import com.tangem.feature.learn2earn.domain.api.WebViewRedirectHandler import timber.log.Timber @@ -11,7 +11,7 @@ internal class Learn2earnWebViewClient( private val redirectHandler: WebViewRedirectHandler, private val headers: Map, private val finishSessionHandler: () -> Unit, -) : AccompanistWebViewClient() { +) : WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { Timber.d("url: ${request.url}") diff --git a/features/learn2earn/impl/src/main/res/layout/activity_web_view.xml b/features/learn2earn/impl/src/main/res/layout/activity_web_view.xml new file mode 100644 index 0000000000..8925162b7e --- /dev/null +++ b/features/learn2earn/impl/src/main/res/layout/activity_web_view.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + \ No newline at end of file