From 4135f8553447814494224b0f95e6c25734e5bd67 Mon Sep 17 00:00:00 2001 From: Mpendulo Ndlovu Date: Wed, 17 Jan 2024 14:05:12 +0200 Subject: [PATCH] fix: Improve session management --- .../main/java/com/metamask/dapp/ConnectScreen.kt | 2 +- .../io/metamask/androidsdk/CommunicationClient.kt | 2 +- .../main/java/io/metamask/androidsdk/Ethereum.kt | 14 +++++--------- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/metamask/dapp/ConnectScreen.kt b/app/src/main/java/com/metamask/dapp/ConnectScreen.kt index 431c532a..cc11a654 100644 --- a/app/src/main/java/com/metamask/dapp/ConnectScreen.kt +++ b/app/src/main/java/com/metamask/dapp/ConnectScreen.kt @@ -9,7 +9,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import io.metamask.androidsdk.DappMetadata import io.metamask.androidsdk.EthereumState @Composable @@ -82,6 +81,7 @@ fun ConnectScreen( DappLabel( text = ethereumState.sessionId, + color = Color.Unspecified, modifier = Modifier.padding(bottom = bottomMargin) ) } diff --git a/metamask-android-sdk/src/main/java/io/metamask/androidsdk/CommunicationClient.kt b/metamask-android-sdk/src/main/java/io/metamask/androidsdk/CommunicationClient.kt index db2f7efb..241b66bc 100644 --- a/metamask-android-sdk/src/main/java/io/metamask/androidsdk/CommunicationClient.kt +++ b/metamask-android-sdk/src/main/java/io/metamask/androidsdk/CommunicationClient.kt @@ -194,7 +194,7 @@ internal class CommunicationClient(context: Context, callback: EthereumEventCall } val submittedRequest = submittedRequests[id]?.request ?: return - val isResultMethod = EthereumMethod.isResultMethod(submittedRequest.method ?: "") + val isResultMethod = EthereumMethod.isResultMethod(submittedRequest.method) if (!isResultMethod) { val resultJson = data.optString("result") diff --git a/metamask-android-sdk/src/main/java/io/metamask/androidsdk/Ethereum.kt b/metamask-android-sdk/src/main/java/io/metamask/androidsdk/Ethereum.kt index 5a37429e..01571e5f 100644 --- a/metamask-android-sdk/src/main/java/io/metamask/androidsdk/Ethereum.kt +++ b/metamask-android-sdk/src/main/java/io/metamask/androidsdk/Ethereum.kt @@ -53,13 +53,12 @@ class Ethereum ( private var sessionDuration: Long = DEFAULT_SESSION_DURATION - private var infuraAPIKey: String? = null - override fun updateAccount(account: String) { Logger.log("Ethereum:: Selected account changed: $account") _ethereumState.postValue( currentEthereumState.copy( - selectedAddress = account + selectedAddress = account, + sessionId = communicationClient?.sessionId ?: "" ) ) } @@ -68,7 +67,8 @@ class Ethereum ( Logger.log("Ethereum:: ChainId changed: $newChainId") _ethereumState.postValue( currentEthereumState.copy( - chainId = newChainId + chainId = newChainId, + sessionId = communicationClient?.sessionId ?: "" ) ) } @@ -85,14 +85,12 @@ class Ethereum ( communicationClient?.clearSession { _ethereumState.postValue( currentEthereumState.copy( - sessionId = getSessionId() + sessionId = communicationClient?.sessionId ?: "" ) ) } } - private fun getSessionId(): String = communicationClient?.sessionId ?: "" - fun connect(callback: ((Result) -> Unit)? = null) { val error = dappMetadata.validationError if (error != null) { @@ -118,9 +116,7 @@ class Ethereum ( fun connectWith(request: EthereumRequest, callback: ((Result) -> Unit)? = null) { Logger.log("Ethereum:: connecting with ${request.method}...") - Logger.log("Ethereum:: connectRequestSent $connectRequestSent") connectRequestSent = true - Logger.log("Ethereum:: connectRequestSent $connectRequestSent") communicationClient?.dappMetadata = dappMetadata communicationClient?.ethereumEventCallbackRef = WeakReference(this) communicationClient?.updateSessionDuration(sessionDuration)