Skip to content

Commit ef8cf04

Browse files
committed
Merge branch 'master' into feat/transaction_signing
# Conflicts: # core/src/main/java/com/web3auth/core/WebViewActivity.kt
2 parents 98bee01 + 57434a5 commit ef8cf04

File tree

1 file changed

+39
-25
lines changed

1 file changed

+39
-25
lines changed
Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
package com.web3auth.core
22

33
import android.annotation.SuppressLint
4+
import android.content.Context
5+
import android.content.Intent
46
import android.net.Uri
57
import android.os.Bundle
8+
import android.os.Message
69
import android.view.ViewTreeObserver.OnScrollChangedListener
7-
import android.webkit.WebSettings
8-
import android.webkit.WebView
9-
import android.webkit.WebViewClient
10+
import android.webkit.*
1011
import androidx.appcompat.app.AppCompatActivity
1112
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
12-
import com.google.gson.GsonBuilder
13-
import com.web3auth.core.types.*
13+
import com.web3auth.core.types.WALLET_URL
1414

1515
class WebViewActivity : AppCompatActivity() {
1616

1717
private lateinit var webView: WebView
1818
private var swipeRefreshLayout: SwipeRefreshLayout? = null
1919
private var mOnScrollChangedListener: OnScrollChangedListener? = null
20-
private val gson = GsonBuilder().disableHtmlEscaping().create()
2120

2221
@SuppressLint("SetJavaScriptEnabled")
2322
override fun onCreate(savedInstanceState: Bundle?) {
@@ -28,26 +27,12 @@ class WebViewActivity : AppCompatActivity() {
2827

2928
val extras = intent.extras
3029
if (extras != null) {
31-
val webViewUrl = extras.getString(WEBVIEW_URL)
32-
val redirectUrl = extras.getString(REDIRECT_URL)
30+
val walletUrl = extras.getString(WALLET_URL)
3331

3432
webView.webViewClient = object : WebViewClient() {
3533
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
36-
if (redirectUrl?.isNotEmpty() == true) {
37-
if (url?.contains(redirectUrl) == true) {
38-
val uri = Uri.parse(url)
39-
val hashUri = Uri.parse(uri.host + "?" + uri.fragment)
40-
val b64Params = hashUri.getQueryParameter("b64Params")
41-
val b64ParamString =
42-
decodeBase64URLString(b64Params!!).toString(Charsets.UTF_8)
43-
val signResponse =
44-
gson.fromJson(b64ParamString, SignResponse::class.java)
45-
Web3Auth.setSignResponse(signResponse)
46-
finish()
47-
}
48-
}
49-
if (webViewUrl != null) {
50-
view?.loadUrl(webViewUrl)
34+
if (walletUrl != null) {
35+
view?.loadUrl(walletUrl)
5136
}
5237
return false
5338
}
@@ -61,15 +46,34 @@ class WebViewActivity : AppCompatActivity() {
6146
webSettings.javaScriptEnabled = true
6247
webSettings.domStorageEnabled = true
6348
webSettings.userAgentString = null
49+
webSettings.setSupportMultipleWindows(true)
6450

65-
if (webViewUrl != null) {
66-
webView.loadUrl(webViewUrl)
51+
if (walletUrl != null) {
52+
webView.loadUrl(walletUrl)
6753
}
6854
}
6955

7056
swipeRefreshLayout?.setOnRefreshListener {
7157
webView.reload()
7258
}
59+
60+
webView.webChromeClient = object : WebChromeClient() {
61+
override fun onCreateWindow(
62+
view: WebView,
63+
dialog: Boolean,
64+
userGesture: Boolean,
65+
resultMsg: Message
66+
): Boolean {
67+
val result = view.hitTestResult
68+
val data = result.extra
69+
val context: Context = view.context
70+
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(data))
71+
context.startActivity(browserIntent)
72+
return false
73+
}
74+
}
75+
76+
webView.addJavascriptInterface(this, "AndroidBridge");
7377
}
7478

7579
override fun onStart() {
@@ -91,4 +95,14 @@ class WebViewActivity : AppCompatActivity() {
9195
else -> super.onBackPressed()
9296
}
9397
}
98+
99+
@JavascriptInterface
100+
fun enablePullToRefresh() {
101+
swipeRefreshLayout?.isEnabled = true
102+
}
103+
104+
@JavascriptInterface
105+
fun disablePullToRefresh() {
106+
swipeRefreshLayout?.isEnabled = false
107+
}
94108
}

0 commit comments

Comments
 (0)