npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@cityofzion/wallet-connect-sdk-wallet-react

v4.0.5

Published

Wallet-Connect-SDK wallet-side to be used on React Apps

Downloads

237

Readme

Installation

Install the dependencies on your application

NPM

npm i @cityofzion/wallet-connect-sdk-wallet-react

YARN

yarn add @cityofzion/wallet-connect-sdk-wallet-react

Setup

Before starting the development, you need to create an account on Wallet Connect website and then create a new Project, it's super easy, with just a few fields on the form.

Wrap WalletConnectWalletProvider around your App and declare the options

import { WalletConnectWalletProvider, TOptions } from '@cityofzion/wallet-connect-sdk-wallet-react'

const options: TOptions = {
  clientOptions: {
    projectId: '<your wc project id>', // the ID of your project on Wallet Connect website
    relayUrl: 'wss://relay.walletconnect.com', // we are using walletconnect's official relay server
    metadata: {
      name: 'MyApplicationName', // your application name to be displayed on the wallet
      description: 'My Application description', // description to be shown on the wallet
      url: 'https://myapplicationdescription.app/', // url to be linked on the wallet
      icons: ['https://myapplicationdescription.app/myappicon.png'], // icon to be shown on the wallet
    },
  },
}

ReactDOM.render(
  <>
    <WalletConnectWalletProvider option={options}>
      <App />
    </WalletConnectWalletProvider>
  </>,
  document.getElementById('root')
)

Usage

From now on, every time you need to use WalletConnect, you can simply use the useWalletConnectWallet hook:

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const context = useWalletConnectWallet()
  // do something
}

Important information

When some request arrives, we use an adapter to really do the rpc request and returns the result. So registering the adapter is mandatory for requests flow and follow the adapter interface is also mandatory.

You can extend our abstract adapter or create your own. To extend, use the WalletConnectNeo3Adapter class or create your own that implements the IWalletConnectAdapter interface.

There are two ways to pass your adapter to sdk.

Passing in the sdk constructor.

import { WalletConnectWalletProvider, TOptions } from '@cityofzion/wallet-connect-sdk-wallet-react'

const options: TOptions = {
  clientOptions: {}, // SignClient options
  methods: ['methods', 'to', 'authorize'],
  adapter: new YourAdapter(),
}

ReactDOM.render(
  <>
    <WalletConnectWalletProvider option={options}>
      <App />
    </WalletConnectWalletProvider>
  </>,
  document.getElementById('root')
)

Or, call the setAdapter function from Context.

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const { setAdapter } = useWalletConnectWallet()

  async function handleSomething() {
    setAdapter(new YourAdapter())
  }
}

By default, the sdk won't ask authorization for some request methods, you are able to switch what methods it will happens:

import { WalletConnectWalletProvider, TOptions } from '@cityofzion/wallet-connect-sdk-wallet-react'

const options: TOptions = {
  clientOptions: {}, // SignClient options
  methods: ['methods', 'to', 'authorize'],
  autoAcceptMethods: ['your', 'auto', 'accept', 'methods'],
}

ReactDOM.render(
  <>
    <WalletConnectWalletProvider option={options}>
      <App />
    </WalletConnectWalletProvider>
  </>,
  document.getElementById('root')
)

Code examples

Connect to the Dapp

Start the process of establishing a new connection. It will create a new proposal that needs to be accepted or rejected.

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const { connect } = useWalletConnectWallet()

  async function handleSomething() {
    connect(
      'wc:b3b01e4e9d0c7d2dcebe412687616b39a7020ae647133e95281bd21053bba6cb@2?relay-protocol=irn&symKey=ee83ff49a5374ed46dc07c2dc1242903aba9b28f60f1cf5f5e48540e5b40a7d6&wccv=2'
    )
  }
}

Disconnect from a specific dapp session

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const { disconnect, sessions } = useWalletConnectWallet()

  async function handleSomething() {
    const session = sessions[0]
    await disconnect(session)
  }
}

Approve a specific connection proposal

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const { approveProposal, proposals } = useWalletConnectWallet()

  async function handleSomething() {
    const proposal = proposals[0]
    await approveProposal(proposal, {
      account: {
        address: 'Account address that wants to connect',
        chain: 'The key of supported chain to which the account belongs',
      },
    })
  }
}

Reject a specific connection proposal

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const { rejectProposal, proposals } = useWalletConnectWallet()

  async function handleSomething() {
    const proposal = proposals[0]
    await rejectProposal(proposal)
  }
}

Approve a specific session request

Remembering, you need to register the adapter to this function works

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const { approveRequest, requests } = useWalletConnectWallet()

  async function handleSomething() {
    const request = requests[0]
    await approveRequest(request)
  }
}

Reject a specific session request

import { useWalletConnectWallet } from '@cityofzion/wallet-connect-sdk-wallet-react'

export default function MyComponent() {
  const { rejectRequest, requests } = useWalletConnectWallet()

  async function handleSomething() {
    const request = requests[0]
    await rejectRequest(request)
  }
}