File tree 5 files changed +41
-8
lines changed
accounts/src/main/java/eu/kevin/accounts/accountlinking
common/src/main/java/eu/kevin/common/helpers
in-app-payments/src/main/java/eu/kevin/inapppayments
5 files changed +41
-8
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ import eu.kevin.common.extensions.applySystemInsetsPadding
20
20
import eu.kevin.common.extensions.dp
21
21
import eu.kevin.common.extensions.getColorFromAttr
22
22
import eu.kevin.common.extensions.hideKeyboard
23
+ import eu.kevin.common.helpers.WebFrameHeadersHelper
23
24
import eu.kevin.common.managers.KeyboardManager
24
25
25
26
internal class AccountLinkingView (context : Context ) :
@@ -69,8 +70,13 @@ internal class AccountLinkingView(context: Context) :
69
70
with (requireBinding().accountLinkWebView) {
70
71
setBackgroundColor(context.getColorFromAttr(android.R .attr.colorBackground))
71
72
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
+ }
74
80
webViewClient = object : WebViewClientCompat () {
75
81
override fun shouldOverrideUrlLoading (
76
82
view : WebView ,
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change @@ -9,13 +9,11 @@ import eu.kevin.common.extensions.getColorFromAttr
9
9
import eu.kevin.common.extensions.getCurrentLocale
10
10
import eu.kevin.common.extensions.toHexColor
11
11
import eu.kevin.core.plugin.Kevin
12
- import kotlinx.serialization.ExperimentalSerializationApi
13
12
import kotlinx.serialization.encodeToString
14
13
import kotlinx.serialization.json.Json
15
14
16
15
object WebFrameHelper {
17
16
18
- @OptIn(ExperimentalSerializationApi ::class )
19
17
fun getStyleAndLanguageQueryParameters (context : Context ): String {
20
18
return " "
21
19
.appendQueryParameter(" lang" , getActiveLocaleCode(context))
Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ import eu.kevin.common.extensions.removeWhiteSpaces
25
25
import eu.kevin.common.extensions.setDebounceClickListener
26
26
import eu.kevin.common.extensions.setOnDoneActionListener
27
27
import eu.kevin.common.extensions.setOnNextActionListener
28
+ import eu.kevin.common.helpers.WebFrameHeadersHelper
28
29
import eu.kevin.common.managers.KeyboardManager
29
30
import eu.kevin.inapppayments.KevinPaymentsPlugin
30
31
import eu.kevin.inapppayments.R
@@ -138,8 +139,13 @@ internal class CardPaymentView(context: Context) :
138
139
private fun configureWebView () {
139
140
with (requireBinding().webView) {
140
141
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
+ }
143
149
addJavascriptInterface(
144
150
object {
145
151
@JavascriptInterface
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ import eu.kevin.common.extensions.applySystemInsetsPadding
15
15
import eu.kevin.common.extensions.dp
16
16
import eu.kevin.common.extensions.getColorFromAttr
17
17
import eu.kevin.common.extensions.hideKeyboard
18
+ import eu.kevin.common.helpers.WebFrameHeadersHelper
18
19
import eu.kevin.common.managers.KeyboardManager
19
20
import eu.kevin.inapppayments.KevinPaymentsPlugin
20
21
import eu.kevin.inapppayments.databinding.KevinFragmentPaymentConfirmationBinding
@@ -67,8 +68,13 @@ internal class PaymentConfirmationView(context: Context) :
67
68
with (requireBinding().confirmationWebView) {
68
69
setBackgroundColor(context.getColorFromAttr(android.R .attr.colorBackground))
69
70
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
+ }
72
78
webViewClient = object : WebViewClientCompat () {
73
79
override fun shouldOverrideUrlLoading (
74
80
view : WebView ,
You can’t perform that action at this time.
0 commit comments