Skip to content

Commit a3b45fc

Browse files
MOBILE-1859: Add additional information into the user-agent header (#93)
1 parent 2570891 commit a3b45fc

File tree

5 files changed

+41
-8
lines changed

5 files changed

+41
-8
lines changed

accounts/src/main/java/eu/kevin/accounts/accountlinking/AccountLinkingView.kt

+8-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import eu.kevin.common.extensions.applySystemInsetsPadding
2020
import eu.kevin.common.extensions.dp
2121
import eu.kevin.common.extensions.getColorFromAttr
2222
import eu.kevin.common.extensions.hideKeyboard
23+
import eu.kevin.common.helpers.WebFrameHeadersHelper
2324
import eu.kevin.common.managers.KeyboardManager
2425

2526
internal class AccountLinkingView(context: Context) :
@@ -69,8 +70,13 @@ internal class AccountLinkingView(context: Context) :
6970
with(requireBinding().accountLinkWebView) {
7071
setBackgroundColor(context.getColorFromAttr(android.R.attr.colorBackground))
7172
applySystemInsetsMargin(bottom = true)
72-
settings.javaScriptEnabled = true
73-
settings.domStorageEnabled = true
73+
with(settings) {
74+
javaScriptEnabled = true
75+
domStorageEnabled = true
76+
userAgentString = WebFrameHeadersHelper.appendTelemetryInfoToUserAgent(
77+
originalUserAgent = userAgentString
78+
)
79+
}
7480
webViewClient = object : WebViewClientCompat() {
7581
override fun shouldOverrideUrlLoading(
7682
view: WebView,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package eu.kevin.common.helpers
2+
3+
import eu.kevin.common.BuildConfig
4+
5+
object WebFrameHeadersHelper {
6+
7+
private const val KEVIN_SDK_VERSION_KEY = "KevinAndroidSdk"
8+
9+
fun appendTelemetryInfoToUserAgent(originalUserAgent: String): String {
10+
return originalUserAgent
11+
.addUserAgentDataField(key = KEVIN_SDK_VERSION_KEY, value = BuildConfig.KEVIN_SDK_VERSION)
12+
}
13+
14+
private fun String.addUserAgentDataField(key: String, value: String): String {
15+
return this.plus(" $key/$value")
16+
}
17+
}

common/src/main/java/eu/kevin/common/helpers/WebFrameHelper.kt

-2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@ import eu.kevin.common.extensions.getColorFromAttr
99
import eu.kevin.common.extensions.getCurrentLocale
1010
import eu.kevin.common.extensions.toHexColor
1111
import eu.kevin.core.plugin.Kevin
12-
import kotlinx.serialization.ExperimentalSerializationApi
1312
import kotlinx.serialization.encodeToString
1413
import kotlinx.serialization.json.Json
1514

1615
object WebFrameHelper {
1716

18-
@OptIn(ExperimentalSerializationApi::class)
1917
fun getStyleAndLanguageQueryParameters(context: Context): String {
2018
return ""
2119
.appendQueryParameter("lang", getActiveLocaleCode(context))

in-app-payments/src/main/java/eu/kevin/inapppayments/cardpayment/CardPaymentView.kt

+8-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import eu.kevin.common.extensions.removeWhiteSpaces
2525
import eu.kevin.common.extensions.setDebounceClickListener
2626
import eu.kevin.common.extensions.setOnDoneActionListener
2727
import eu.kevin.common.extensions.setOnNextActionListener
28+
import eu.kevin.common.helpers.WebFrameHeadersHelper
2829
import eu.kevin.common.managers.KeyboardManager
2930
import eu.kevin.inapppayments.KevinPaymentsPlugin
3031
import eu.kevin.inapppayments.R
@@ -138,8 +139,13 @@ internal class CardPaymentView(context: Context) :
138139
private fun configureWebView() {
139140
with(requireBinding().webView) {
140141
applySystemInsetsMargin(bottom = true)
141-
settings.javaScriptEnabled = true
142-
settings.domStorageEnabled = true
142+
with(settings) {
143+
javaScriptEnabled = true
144+
domStorageEnabled = true
145+
userAgentString = WebFrameHeadersHelper.appendTelemetryInfoToUserAgent(
146+
originalUserAgent = userAgentString
147+
)
148+
}
143149
addJavascriptInterface(
144150
object {
145151
@JavascriptInterface

in-app-payments/src/main/java/eu/kevin/inapppayments/paymentconfirmation/PaymentConfirmationView.kt

+8-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import eu.kevin.common.extensions.applySystemInsetsPadding
1515
import eu.kevin.common.extensions.dp
1616
import eu.kevin.common.extensions.getColorFromAttr
1717
import eu.kevin.common.extensions.hideKeyboard
18+
import eu.kevin.common.helpers.WebFrameHeadersHelper
1819
import eu.kevin.common.managers.KeyboardManager
1920
import eu.kevin.inapppayments.KevinPaymentsPlugin
2021
import eu.kevin.inapppayments.databinding.KevinFragmentPaymentConfirmationBinding
@@ -67,8 +68,13 @@ internal class PaymentConfirmationView(context: Context) :
6768
with(requireBinding().confirmationWebView) {
6869
setBackgroundColor(context.getColorFromAttr(android.R.attr.colorBackground))
6970
applySystemInsetsMargin(bottom = true)
70-
settings.javaScriptEnabled = true
71-
settings.domStorageEnabled = true
71+
with(settings) {
72+
javaScriptEnabled = true
73+
domStorageEnabled = true
74+
userAgentString = WebFrameHeadersHelper.appendTelemetryInfoToUserAgent(
75+
originalUserAgent = userAgentString
76+
)
77+
}
7278
webViewClient = object : WebViewClientCompat() {
7379
override fun shouldOverrideUrlLoading(
7480
view: WebView,

0 commit comments

Comments
 (0)