1

I am building a wallet app and have successfully managed to set WalletConnect V2 up so that I can pair with a dApp and then respond to requests. However, after only about 5 minutes I get this error:

Error: Not initialized. subscription

and then all requests stop being sent to my wallet. I am building this in react-native and have added every listener that I could find in the docs to my web3wallet. It seems like the dApp may be trying to send the wallet app something and my app is not set up to receive it. Any guidance in this would be appreciated.

Here is my current web3wallet implementation:

const core = new Core({
   projectId: CONNECT_WALLET_PROJECT_ID
});

const metadata = {
    name: 'Wallet',
    description: 'A Wallet Application',
    url: "#",
    icons: []
};

const web3wallet = await Web3Wallet.init({
      core,
      metadata: metadata
});

 web3wallet.on("session_delete", (proposal) => {
      Alert.alert("session deleted");
      console.log('wc delete: ', proposal);
});  

web3wallet.on("session_request", (event) => {
      console.log('session request: ', event);
      console.log('create wallet method worked');
      // const { id, method, params } = event.request;
      setGlobalVariableValue({
         key: 'walletConnectEventData',
         value: {'event': 'session_request', 'data': event}
      });

      navigation.navigate('WalletConnectModal');
});

web3wallet.on("session_update", (proposal) => {
      console.log('session update! ', proposal)
});

web3wallet.on("push_request", (proposal) => {
      console.log("push_request")
      console.log("push_request", proposal)
});

web3wallet.on("push_message", (proposal) => {
      console.log("push_message")
      console.log("push_message: ", proposal)
});

web3wallet.on("push_delete", (proposal) => {
      console.log("push_delete");
      console.log("push_delete: ", proposal)
});
        
web3wallet.on("session_ping", (proposal) => {
      console.log("session_ping");
      console.log("session_ping: ", proposal)
});

web3wallet.on("session_event", (proposal) => {
      console.log("session_event");
      console.log("session_event: ", proposal)
});

web3wallet.on("pairing_ping", (proposal) => {
      console.log("pairing ping");
      console.log('pairing ping: ', proposal);
});

web3wallet.on("pairing_delete", (proposal) => {
      console.log("pairing delete");
      console.log("pairing delete: ", proposal)
});

web3wallet.on("auth_request", (proposal) => {
      console.log("auth_request")
      console.log("auth request: ", proposal);
});
Jake Mulhern
  • 660
  • 5
  • 13

1 Answers1

0

Looking at the code you provided, 'session_proposal' event is not handled. https://docs.walletconnect.com/2.0/web/web3wallet/wallet-usage

From the docs:

web3wallet.on('session_proposal', async proposal => {
  const session = await web3wallet.approveSession({
    id: proposal.id,
    namespaces
  })
})
knopch1425
  • 709
  • 6
  • 19