WalletConnectKotlinV2
WalletConnectKotlinV2 copied to clipboard
Web3Modal crashes when performing sign requests for some wallets
Describe the bug
Using the Flooz wallet, able to cause a crash due to SDK not able to find the activity. This is despite the Flooz wallet being listed in the
SDK Version
- Client: Kotlin
- Version: BOM v1.31.3
To Reproduce Steps to reproduce the behavior:
- ensure flooz package ID is listed in your Android Manifest's
tag - initiate Web3Modal to connect a wallet
- select Flooz wallet and notice it is unable to resolve the installed application
- launch the wc deep link manually
- initiate a sign request <-- it is at this point the crash takes place
Expected behavior Don't crash when sending a signing request, even if the user needs to switch to their wallet manually
Screenshots This shows the steps to recreate the crash https://github.com/WalletConnect/WalletConnectKotlinV2/assets/1032038/2b02f1c1-6345-4555-b12f-fbb996c978fe
16:41:09.596 WalletCon...ctSocket V [connectSocket] connected.
16:41:09.620 CoreCommo...onModule D Sending session request on topic: e5ea0fe89598cefbd3fa242681e02b2531c9805ddec25a6ebede2f1032303602}
16:41:09.879 CoreCommo...onModule D Session request sent successfully on topic: e5ea0fe89598cefbd3fa242681e02b2531c9805ddec25a6ebede2f1032303602
16:41:09.882 WalletCon...erResult V [sendSignRequest] Request sent successfully: WalletConnect(method=personal_sign, params=["0x4279207369676e696e672074686973206d65737361676520796f7520616772656520746f20746865205465726d7320616e6420436f6e646974696f6e7320616e64205072697661637920506f6c6963790a0a4e4f4e43453a2031", "0xfea166c712e229b4bd3be66ac52585fc30870fdd"], chainId=eip155:1, requestId=1715956869619394, sessionTopic=e5ea0fe89598cefbd3fa242681e02b2531c9805ddec25a6ebede2f1032303602)
16:41:09.884 AnalyticsTracker D TRACKED: [tech_wc_action] - params: {action=SIGN_SEND_REQUEST, result=Success, walletProvider=Flooz Wallet}
16:41:09.901 WalletCon...erResult E [sendSignRequest] Request sending failed (Ask Gemini)
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat= flg=0x18000000 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2430)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:2005)
at android.app.ContextImpl.startActivity(ContextImpl.java:1158)
at android.app.ContextImpl.startActivity(ContextImpl.java:1129)
at android.content.ContextWrapper.startActivity(ContextWrapper.java:438)
at com.walletconnect.web3.modal.engine.Web3ModalEngine.openWalletApp(Web3ModalEngine.kt:164)
at com.walletconnect.web3.modal.engine.Web3ModalEngine.access$openWalletApp(Web3ModalEngine.kt:48)
at com.walletconnect.web3.modal.engine.Web3ModalEngine$request$2.invoke(Web3ModalEngine.kt:151)
at com.walletconnect.web3.modal.engine.Web3ModalEngine$request$2.invoke(Web3ModalEngine.kt:148)
at com.walletconnect.sign.client.SignProtocol$request$2$1.invoke(SignProtocol.kt:304)
at com.walletconnect.sign.client.SignProtocol$request$2$1.invoke(SignProtocol.kt:302)
at com.walletconnect.sign.engine.use_case.calls.SessionRequestUseCase$sessionRequest$2$3.invoke(SessionRequestUseCase.kt:87)
at com.walletconnect.sign.engine.use_case.calls.SessionRequestUseCase$sessionRequest$2$3.invoke(SessionRequestUseCase.kt:84)
at com.walletconnect.android.internal.common.json_rpc.domain.JsonRpcInteractor$publishJsonRpcRequest$1.invoke(JsonRpcInteractor.kt:117)
at com.walletconnect.android.internal.common.json_rpc.domain.JsonRpcInteractor$publishJsonRpcRequest$1.invoke(JsonRpcInteractor.kt:115)
at com.walletconnect.foundation.network.BaseRelayClient$observePublishResult$1$1$2.invokeSuspend(BaseRelayClient.kt:104)
at com.walletconnect.foundation.network.BaseRelayClient$observePublishResult$1$1$2.invoke(Unknown Source:8)
at com.walletconnect.foundation.network.BaseRelayClient$observePublishResult$1$1$2.invoke(Unknown Source:4)
at kotlinx.coroutines.flow.FlowKt__ReduceKt$first$$inlined$collectWhile$2.emit(Limit.kt:139)
at com.walletconnect.foundation.network.BaseRelayClient$observePublishResult$1$1$invokeSuspend$$inlined$filter$1$2.emit(Collect.kt:134)
at com.walletconnect.foundation.network.BaseRelayClient$observePublishResult$1$1$invokeSuspend$$inlined$filterIsInstance$1$2.emit(Collect.kt:135)
at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl(SharedFlow.kt:392)
at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend(Unknown Source:15)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:585)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:802)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:706)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:693)
Device (please complete the following information):
- Device: Pixel 6
- OS: Android 14
- Version AP31.240322.027
Additional context
The steps in the video are of course not quite the expected behaviour, because I'm using Browser option and trying to use it on mobile. However, the interesting thing here is that Web3Modal should really have shown that the app is installed because the package ID for flooz which can be confirmed is correct (https://play.google.com/store/apps/details?id=wallet.flooz.mobile) has been added to the <queries>
of the application, but has no effect.