@@ -126,6 +126,8 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions, context: Context) : WebViewResu
126126 val initOptionsJson = JSONObject (gson.toJson(initOptions))
127127 val initParamsJson = JSONObject (gson.toJson(initParams))
128128
129+ val sessionId = SessionManager .generateRandomSessionKey()
130+
129131 val paramMap = JSONObject ()
130132 paramMap.put(
131133 " options" , initOptionsJson
@@ -145,6 +147,11 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions, context: Context) : WebViewResu
145147 existingExtraLoginOptions.login_hint = userInfo?.verifierId
146148 initParamsJson.put(" extraLoginOptions" , gson.toJson(existingExtraLoginOptions))
147149 initParamsJson.put(" mfaLevel" , MFALevel .MANDATORY .name.lowercase(Locale .ROOT ))
150+ val loginIdObject = mapOf (" loginId" to sessionId)
151+ initParamsJson.put(
152+ " appState" ,
153+ gson.toJson(loginIdObject).toByteArray(Charsets .UTF_8 ).toBase64URLString()
154+ )
148155 paramMap.put(" sessionId" , sessionManager.getSessionId())
149156 }
150157 paramMap.put(" params" , initParamsJson)
@@ -154,7 +161,7 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions, context: Context) : WebViewResu
154161 var paramsString = jsonObject.toString()
155162 paramsString = paramsString.replace(" \\ /" , " /" )
156163
157- val loginIdCf = getLoginId(paramsString)
164+ val loginIdCf = getLoginId(sessionId, paramsString)
158165 loginIdCf.whenComplete { loginId, error ->
159166 if (error == null ) {
160167 val jsonObject = mapOf (" loginId" to loginId)
@@ -490,10 +497,8 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions, context: Context) : WebViewResu
490497 * @param jsonObject The JSONObject from which to retrieve the login ID.
491498 * @return A CompletableFuture<String> representing the asynchronous operation, containing the login ID.
492499 */
493- private fun getLoginId (jsonObject : String ): CompletableFuture <String > {
494- val sessionId = SessionManager .generateRandomSessionKey()
500+ private fun getLoginId (sessionId : String , jsonObject : String ): CompletableFuture <String > {
495501 sessionManager.setSessionId(sessionId)
496- // SessionManager.saveSessionIdToStorage(sessionId)
497502 return sessionManager.createSession(
498503 jsonObject,
499504 baseContext,
@@ -525,8 +530,8 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions, context: Context) : WebViewResu
525530 paramMap.put(
526531 " options" , initOptions
527532 )
528-
529- val loginIdCf = getLoginId(paramMap.toString())
533+ val sessionId = SessionManager .generateRandomSessionKey()
534+ val loginIdCf = getLoginId(sessionId, paramMap.toString())
530535
531536 loginIdCf.whenComplete { loginId, error ->
532537 if (error == null ) {
@@ -590,7 +595,8 @@ class Web3Auth(web3AuthOptions: Web3AuthOptions, context: Context) : WebViewResu
590595 " options" , initOptions
591596 )
592597
593- val loginIdCf = getLoginId(paramMap.toString())
598+ val sessionId = SessionManager .generateRandomSessionKey()
599+ val loginIdCf = getLoginId(sessionId, paramMap.toString())
594600
595601 loginIdCf.whenComplete { loginId, error ->
596602 if (error == null ) {
0 commit comments