11package ru.usedesk.knowledgebase_gui.screen.compose.article
22
3- import android.content.Context
43import android.os.Build
5- import android.webkit.WebResourceResponse
6- import android.webkit.WebSettings
7- import android.webkit.WebView
8- import android.webkit.WebViewClient
94import android.widget.LinearLayout
105import androidx.compose.animation.AnimatedVisibility
116import androidx.compose.animation.Crossfade
@@ -38,14 +33,11 @@ import androidx.compose.ui.Alignment
3833import androidx.compose.ui.Modifier
3934import androidx.compose.ui.draw.clip
4035import androidx.compose.ui.graphics.Color
41- import androidx.compose.ui.graphics.toArgb
4236import androidx.compose.ui.platform.ComposeView
4337import androidx.compose.ui.platform.LocalContext
4438import androidx.compose.ui.res.painterResource
4539import androidx.compose.ui.res.stringResource
4640import androidx.compose.ui.viewinterop.AndroidView
47- import okhttp3.Request
48- import ru.usedesk.common_sdk.api.UsedeskOkHttpClientFactory
4941import ru.usedesk.knowledgebase_gui._entity.ContentState
5042import ru.usedesk.knowledgebase_gui._entity.LoadingState.Companion.ACCESS_DENIED
5143import ru.usedesk.knowledgebase_gui._entity.RatingState
@@ -62,7 +54,6 @@ import ru.usedesk.knowledgebase_gui.compose.rememberViewModelStoreOwner
6254import ru.usedesk.knowledgebase_gui.screen.RootViewModel
6355import ru.usedesk.knowledgebase_gui.screen.UsedeskKnowledgeBaseTheme
6456import ru.usedesk.knowledgebase_gui.screen.compose.article.ArticleViewModel.State
65- import java.net.URI
6657
6758
6859@Composable
@@ -130,62 +121,6 @@ internal fun ContentArticle(
130121 }
131122}
132123
133- private class ArticleWebView (
134- context : Context ,
135- viewModel : ArticleViewModel ,
136- theme : UsedeskKnowledgeBaseTheme ,
137- onWebUrl : (String ) -> Unit
138- ) : WebView(context) {
139- init {
140- isVerticalScrollBarEnabled = false
141- settings.apply {
142- setRenderPriority(WebSettings .RenderPriority .HIGH )
143- cacheMode = WebSettings .LOAD_CACHE_ELSE_NETWORK
144- domStorageEnabled = true
145- }
146- webViewClient = object : WebViewClient () {
147- private val okHttp = UsedeskOkHttpClientFactory (context).createInstance()
148-
149- override fun shouldOverrideUrlLoading (
150- view : WebView ,
151- url : String
152- ): Boolean {
153- onWebUrl(url)
154- return true
155- }
156-
157- override fun onPageCommitVisible (view : WebView , url : String? ) {
158- super .onPageCommitVisible(view, url)
159-
160- viewModel.articleShowed()
161- }
162-
163- override fun shouldInterceptRequest (
164- view : WebView ? ,
165- url : String?
166- ): WebResourceResponse ? = url?.let {
167- try {
168- if (URI (it).scheme == " https" ) {
169- val okHttpRequest = Request .Builder ().url(it).build()
170- val response = okHttp.newCall(okHttpRequest).execute()
171- WebResourceResponse (
172- " " ,
173- " " ,
174- response.body?.byteStream()
175- )
176- } else {
177- null
178- }
179- } catch (e: Exception ) {
180- e.printStackTrace()
181- null
182- }
183- }
184- }
185- setBackgroundColor(theme.colors.listItemBackground.toArgb())
186- }
187- }
188-
189124@Composable
190125private fun ArticleBlock (
191126 theme : UsedeskKnowledgeBaseTheme ,
@@ -246,15 +181,16 @@ private fun ArticleBlock(
246181 }
247182 LaunchedEffect (state.contentState) {
248183 if (state.contentState is ContentState .Loaded ) {
184+ val url = state.contentState.content.text
249185 when {
250186 Build .VERSION .SDK_INT <= Build .VERSION_CODES .N_MR1 -> webView.loadData(
251- state.contentState.content.text ,
187+ url ,
252188 " text/html; charset=utf-8" ,
253189 " UTF-8"
254190 )
255191
256192 else -> webView.loadData(
257- state.contentState.content.text ,
193+ url ,
258194 " text/html" ,
259195 null
260196 )
0 commit comments