@@ -7,13 +7,16 @@ import android.text.method.ScrollingMovementMethod
77import android.util.Log
88import android.view.View
99import android.widget.*
10+ import androidx.appcompat.app.AlertDialog
1011import androidx.appcompat.app.AppCompatActivity
1112import com.google.android.material.textfield.TextInputLayout
1213import com.google.gson.Gson
14+ import com.google.gson.JsonArray
1315import com.web3auth.core.Web3Auth
1416import com.web3auth.core.isEmailValid
1517import com.web3auth.core.types.*
1618import org.json.JSONObject
19+ import org.web3j.crypto.Credentials
1720import java.util.concurrent.CompletableFuture
1821import java.util.concurrent.atomic.AtomicBoolean
1922
@@ -86,6 +89,7 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
8689 val signInButton = findViewById<Button >(R .id.signInButton)
8790 val signOutButton = findViewById<Button >(R .id.signOutButton)
8891 val launchWalletButton = findViewById<Button >(R .id.launchWalletButton)
92+ val signMsgButton = findViewById<Button >(R .id.signMsgButton)
8993 val btnSetUpMfa = findViewById<Button >(R .id.btnSetUpMfa)
9094 val spinner = findViewById<TextInputLayout >(R .id.verifierList)
9195 val hintEmailEditText = findViewById<EditText >(R .id.etEmailHint)
@@ -106,6 +110,7 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
106110 signInButton.visibility = View .GONE
107111 signOutButton.visibility = View .VISIBLE
108112 launchWalletButton.visibility = View .VISIBLE
113+ signMsgButton.visibility = View .VISIBLE
109114 btnSetUpMfa.visibility = View .VISIBLE
110115 spinner.visibility = View .GONE
111116 hintEmailEditText.visibility = View .GONE
@@ -116,6 +121,7 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
116121 signOutButton.visibility = View .GONE
117122 btnSetUpMfa.visibility = View .GONE
118123 launchWalletButton.visibility = View .GONE
124+ signMsgButton.visibility = View .GONE
119125 spinner.visibility = View .VISIBLE
120126 }
121127 }
@@ -202,6 +208,38 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
202208 }
203209 }
204210
211+ val signResultButton = findViewById<Button >(R .id.signResultButton)
212+ val signMsgButton = findViewById<Button >(R .id.signMsgButton)
213+ signMsgButton.setOnClickListener {
214+ val credentials: Credentials = Credentials .create(web3Auth.getPrivkey())
215+ val params = JsonArray ().apply {
216+ add(" Hello, World!" )
217+ add(credentials.address)
218+ add(" Android" )
219+ }
220+ val signMsgCompletableFuture = web3Auth.request(
221+ loginParams = LoginParams (
222+ selectedLoginProvider,
223+ extraLoginOptions = null ,
224+ mfaLevel = MFALevel .NONE ,
225+ ), " personal_sign" , requestParams = params
226+ )
227+ signMsgCompletableFuture.whenComplete { _, error ->
228+ if (error == null ) {
229+ Log .d(" MainActivity_Web3Auth" , " Message signed successfully" )
230+ signResultButton.visibility = View .VISIBLE
231+ } else {
232+ Log .d(" MainActivity_Web3Auth" , error.message ? : " Something went wrong" )
233+ signResultButton.visibility = View .GONE
234+ }
235+ }
236+ }
237+
238+ signResultButton.setOnClickListener {
239+ val signResult = Web3Auth .getSignResponse()
240+ showAlertDialog(" Sign Result" , signResult.toString())
241+ }
242+
205243 val btnSetUpMfa = findViewById<Button >(R .id.btnSetUpMfa)
206244 btnSetUpMfa.setOnClickListener {
207245 val setupMfaCf = web3Auth.enableMFA()
@@ -237,6 +275,9 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
237275 count = 0
238276 } else {
239277 if (count > 0 ) {
278+ if (Web3Auth .getSignResponse() != null ) {
279+ return
280+ }
240281 Toast .makeText(this , " User closed the browser." , Toast .LENGTH_SHORT ).show()
241282 web3Auth.setResultUrl(null )
242283 }
@@ -254,4 +295,14 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
254295 hintEmailEditText.visibility = View .GONE
255296 }
256297 }
298+
299+ private fun showAlertDialog (title : String , message : String ) {
300+ val builder = AlertDialog .Builder (this @MainActivity)
301+ builder.setTitle(title)
302+ .setMessage(message)
303+ .setPositiveButton(" OK" ) { dialog, _ ->
304+ dialog.dismiss()
305+ }
306+ .show()
307+ }
257308}
0 commit comments