Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Web3Modal crashes when performing sign requests for some wallets #1400

Open
marctatham opened this issue May 17, 2024 · 0 comments
Open

Web3Modal crashes when performing sign requests for some wallets #1400

marctatham opened this issue May 17, 2024 · 0 comments
Labels
bug Something isn't working

Comments

@marctatham
Copy link

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 in the AndroidManifest.

SDK Version

  • Client: Kotlin
  • Version: BOM v1.31.3

To Reproduce
Steps to reproduce the behavior:

  1. ensure flooz package ID is listed in your Android Manifest's tag
  2. initiate Web3Modal to connect a wallet
  3. select Flooz wallet and notice it is unable to resolve the installed application
  4. launch the wc deep link manually
  5. 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.

@marctatham marctatham added the bug Something isn't working label May 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant