@@ -15,9 +15,12 @@ import com.web3auth.core.isEmailValid
1515import com.web3auth.core.types.*
1616import java8.util.concurrent.CompletableFuture
1717import org.json.JSONObject
18+ import java.util.concurrent.atomic.AtomicBoolean
19+
1820
1921class MainActivity : AppCompatActivity (), AdapterView.OnItemClickListener {
2022 private lateinit var web3Auth: Web3Auth
23+ private val isLoginCompleted = AtomicBoolean (false )
2124
2225 private val verifierList: List <LoginVerifier > = listOf (
2326 LoginVerifier (" Google" , Provider .GOOGLE ),
@@ -48,13 +51,13 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
4851 }
4952 extraLoginOptions = ExtraLoginOptions (login_hint = hintEmail)
5053 }
51-
5254 val loginCompletableFuture: CompletableFuture <Web3AuthResponse > = web3Auth.login(
5355 LoginParams (selectedLoginProvider, extraLoginOptions = extraLoginOptions)
5456 )
55- loginCompletableFuture.whenComplete { loginResponse, error ->
57+ loginCompletableFuture.whenComplete { _, error ->
58+ isLoginCompleted.set(true )
5659 if (error == null ) {
57- reRender(loginResponse )
60+ reRender()
5861 println (" PrivKey: " + web3Auth.getPrivkey())
5962 println (" ed25519PrivKey: " + web3Auth.getEd25519PrivKey())
6063 println (" Web3Auth UserInfo" + web3Auth.getUserInfo())
@@ -68,25 +71,31 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
6871 val logoutCompletableFuture = web3Auth.logout()
6972 logoutCompletableFuture.whenComplete { _, error ->
7073 if (error == null ) {
71- reRender(Web3AuthResponse () )
74+ reRender()
7275 } else {
7376 Log .d(" MainActivity_Web3Auth" , error.message ? : " Something went wrong" )
7477 }
7578 }
7679 }
7780
78- private fun reRender (web3AuthResponse : Web3AuthResponse ) {
81+ private fun reRender () {
7982 val contentTextView = findViewById<TextView >(R .id.contentTextView)
8083 val signInButton = findViewById<Button >(R .id.signInButton)
8184 val signOutButton = findViewById<Button >(R .id.signOutButton)
8285 val spinner = findViewById<TextInputLayout >(R .id.verifierList)
8386 val hintEmailEditText = findViewById<EditText >(R .id.etEmailHint)
87+ var key: String? = null
88+ var userInfo: UserInfo ? = null
89+ try {
90+ key = web3Auth.getPrivkey()
91+ userInfo = web3Auth.getUserInfo()
92+ } catch (ex: Exception ) {
93+ print (ex)
94+ }
8495
85- val key = web3AuthResponse.privKey
86- val userInfo = web3AuthResponse.userInfo
87- if (key is String && key.isNotEmpty()) {
88- val jsonObject = JSONObject (gson.toJson(web3AuthResponse))
89- contentTextView.text = jsonObject.toString(4 )
96+ if (key != null && userInfo != null && key.isNotEmpty()) {
97+ val jsonObject = JSONObject (gson.toJson(userInfo))
98+ contentTextView.text = jsonObject.toString(4 ) + " \n Private Key: " + key
9099 contentTextView.movementMethod = ScrollingMovementMethod ()
91100 contentTextView.visibility = View .VISIBLE
92101 signInButton.visibility = View .GONE
@@ -111,7 +120,7 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
111120 Web3AuthOptions (
112121 context = this ,
113122 clientId = getString(R .string.web3auth_project_id),
114- network = Web3Auth . Network .MAINNET ,
123+ network = Network .MAINNET ,
115124 redirectUrl = Uri .parse(" torusapp://org.torusresearch.web3authexample/redirect" ),
116125 whiteLabel = WhiteLabelData (
117126 " Web3Auth Sample App" , null , null , " en" , true ,
@@ -132,10 +141,10 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
132141 web3Auth.setResultUrl(intent.data)
133142
134143 // for session response
135- val sessionResponse: CompletableFuture <Web3AuthResponse > = web3Auth.sessionResponse ()
136- sessionResponse.whenComplete { loginResponse , error ->
144+ val sessionResponse: CompletableFuture <Void > = web3Auth.initialize ()
145+ sessionResponse.whenComplete { _ , error ->
137146 if (error == null ) {
138- reRender(loginResponse )
147+ reRender()
139148 println (" PrivKey: " + web3Auth.getPrivkey())
140149 println (" ed25519PrivKey: " + web3Auth.getEd25519PrivKey())
141150 println (" Web3Auth UserInfo" + web3Auth.getUserInfo())
@@ -166,6 +175,15 @@ class MainActivity : AppCompatActivity(), AdapterView.OnItemClickListener {
166175 web3Auth.setResultUrl(intent?.data)
167176 }
168177
178+ override fun onResume () {
179+ super .onResume()
180+ if (isLoginCompleted.get()) {
181+ isLoginCompleted.set(false )
182+ } else {
183+ println (" User closed the browser." )
184+ }
185+ }
186+
169187 override fun onItemClick (p0 : AdapterView <* >? , p1 : View ? , p2 : Int , p3 : Long ) {
170188 selectedLoginProvider = verifierList[p2].loginProvider
171189
0 commit comments