From e4726d239a92d360954a5a80723f38072f4f2dfd Mon Sep 17 00:00:00 2001 From: Hamza Israr Date: Mon, 15 Jul 2024 19:00:27 +0500 Subject: [PATCH] fix: Webview User-Agent Issue --- .../app/data/networking/HeadersInterceptor.kt | 2 +- app/src/main/java/org/openedx/app/di/AppModule.kt | 7 ++++++- app/src/main/java/org/openedx/app/di/ScreenModule.kt | 2 +- .../org/openedx/core/presentation/global/AppData.kt | 1 + .../presentation/unit/html/HtmlUnitFragment.kt | 5 +++-- .../presentation/unit/html/HtmlUnitViewModel.kt | 12 ++++++++++++ .../presentation/settings/SettingsScreenUI.kt | 1 + 7 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/openedx/app/data/networking/HeadersInterceptor.kt b/app/src/main/java/org/openedx/app/data/networking/HeadersInterceptor.kt index c91b27184..bdc7c6284 100644 --- a/app/src/main/java/org/openedx/app/data/networking/HeadersInterceptor.kt +++ b/app/src/main/java/org/openedx/app/data/networking/HeadersInterceptor.kt @@ -36,4 +36,4 @@ class HeadersInterceptor( }.build() ) } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/openedx/app/di/AppModule.kt b/app/src/main/java/org/openedx/app/di/AppModule.kt index 1f88bea73..ceae2352c 100644 --- a/app/src/main/java/org/openedx/app/di/AppModule.kt +++ b/app/src/main/java/org/openedx/app/di/AppModule.kt @@ -167,7 +167,12 @@ val appModule = module { DownloadWorkerController(get(), get(), get()) } - single { AppData(versionName = BuildConfig.VERSION_NAME) } + single { + AppData( + versionName = BuildConfig.VERSION_NAME, + applicationId = BuildConfig.APPLICATION_ID, + ) + } factory { (activity: AppCompatActivity) -> AppReviewManager(activity, get(), get()) } single { TranscriptManager(get()) } diff --git a/app/src/main/java/org/openedx/app/di/ScreenModule.kt b/app/src/main/java/org/openedx/app/di/ScreenModule.kt index d8d02314b..f12f2ecf1 100644 --- a/app/src/main/java/org/openedx/app/di/ScreenModule.kt +++ b/app/src/main/java/org/openedx/app/di/ScreenModule.kt @@ -466,7 +466,7 @@ val screenModule = module { get(), ) } - viewModel { HtmlUnitViewModel(get(), get(), get(), get()) } + viewModel { HtmlUnitViewModel(get(), get(), get(), get(), get(), get()) } viewModel { ProgramViewModel(get(), get(), get(), get(), get(), get(), get()) } diff --git a/core/src/main/java/org/openedx/core/presentation/global/AppData.kt b/core/src/main/java/org/openedx/core/presentation/global/AppData.kt index 324d3325a..d728026d1 100644 --- a/core/src/main/java/org/openedx/core/presentation/global/AppData.kt +++ b/core/src/main/java/org/openedx/core/presentation/global/AppData.kt @@ -2,4 +2,5 @@ package org.openedx.core.presentation.global data class AppData( val versionName: String, + val applicationId: String, ) diff --git a/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitFragment.kt b/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitFragment.kt index 8f9f9ca77..fecde8f03 100644 --- a/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitFragment.kt +++ b/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitFragment.kt @@ -36,7 +36,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext @@ -131,6 +130,7 @@ class HtmlUnitFragment : Fragment() { url = blockUrl, cookieManager = viewModel.cookieManager, apiHostURL = viewModel.apiHostURL, + userAgent = viewModel.appUserAgent, isLoading = isLoading, injectJSList = injectJSList, onCompletionSet = { @@ -195,6 +195,7 @@ private fun HTMLContentView( url: String, cookieManager: AppCookieManager, apiHostURL: String, + userAgent: String, isLoading: Boolean, injectJSList: List, onCompletionSet: () -> Unit, @@ -290,7 +291,7 @@ private fun HTMLContentView( setSupportZoom(true) loadsImagesAutomatically = true domStorageEnabled = true - + userAgentString = "$userAgentString $userAgent" } isVerticalScrollBarEnabled = false isHorizontalScrollBarEnabled = false diff --git a/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitViewModel.kt b/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitViewModel.kt index 9d52c979b..54f331729 100644 --- a/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitViewModel.kt +++ b/course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitViewModel.kt @@ -6,15 +6,20 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import org.openedx.core.BaseViewModel +import org.openedx.core.R import org.openedx.core.config.Config import org.openedx.core.extension.readAsText +import org.openedx.core.presentation.global.AppData import org.openedx.core.system.AppCookieManager +import org.openedx.core.system.ResourceManager import org.openedx.core.system.connection.NetworkConnection import org.openedx.core.system.notifier.CourseCompletionSet import org.openedx.core.system.notifier.CourseNotifier class HtmlUnitViewModel( private val config: Config, + private val appData: AppData, + private val resourceManager: ResourceManager, private val edxCookieManager: AppCookieManager, private val networkConnection: NetworkConnection, private val notifier: CourseNotifier @@ -27,6 +32,13 @@ class HtmlUnitViewModel( val isCourseUnitProgressEnabled get() = config.getCourseUIConfig().isCourseUnitProgressEnabled val apiHostURL get() = config.getApiHostURL() val cookieManager get() = edxCookieManager + val appUserAgent: String + get() { + val appName = resourceManager.getString(R.string.app_name) + val applicationId = appData.applicationId + val versionName = appData.versionName + return "http.agent $appName/$applicationId/$versionName" + } fun setWebPageLoaded(assets: AssetManager) { if (_injectJSList.value.isNotEmpty()) return diff --git a/profile/src/main/java/org/openedx/profile/presentation/settings/SettingsScreenUI.kt b/profile/src/main/java/org/openedx/profile/presentation/settings/SettingsScreenUI.kt index ccf5228e3..f132026e4 100644 --- a/profile/src/main/java/org/openedx/profile/presentation/settings/SettingsScreenUI.kt +++ b/profile/src/main/java/org/openedx/profile/presentation/settings/SettingsScreenUI.kt @@ -707,6 +707,7 @@ fun AppVersionItemUpgradeRequired( private val mockAppData = AppData( versionName = "1.0.0", + applicationId = "org.example.com" ) private val mockConfiguration = Configuration(