0.3.8 • Published 6 months ago

@safeblock/wallet-connector v0.3.8

Weekly downloads
-
License
CC BY-NC-SA 4.0
Repository
github
Last release
6 months ago

SafeBlock Wallet Connector

A comprehensive library that enables seamless connection to multiple blockchain wallets (TON, TRON, and EVM-compatible wallets) with advanced features for managing multiple accounts per wallet and simultaneous connections to multiple wallets.

Table of contents

Features

  • Multi-Wallet Support: Connect to TON, TRON, and EVM-compatible wallets.
  • Multiple Accounts per Wallet: Manage several accounts within each wallet type.
  • Parallel Connections: Maintain active connections to several wallets simultaneously.
  • SolidJS for State Management: Efficient, reactive state management using SolidJS for a responsive and modular experience.

Installation

Install the library via npm...

npm add @safeblock/wallet-connector-solid

...or any other package manager you like:

yarn[pnpm, etc..] install @safeblock/wallet-connector-solid

Usage

This section will show examples of how to use the library.

EVM networks

Below is an example of a simple application that allows you to connect an account through a specific wallet and display its address

import { detectEthereumAccounts, detectEthereumWallets } from "@safeblock/wallet-connector-solid"

function Component() {
  const wallets = detectEthereumWallets("wc-project-id", () => {
    accounts.updateAccounts()
  })

  const accounts = detectEthereumAccounts(wallets)

  return (
    <For each={ wallets() }>
      { wallet => (
        <div>
          { wallet.name }
          <button onClick={ () => wallet.connect() }>Connect</button>

          <For each={ accounts.ofWallet(wallet) }>
            { account => <span>{ account.address }</span> }
          </For>
        </div>
      ) }
    </For>
  )
}

The detectEthereumAccounts function will automatically detect all installed wallets that support the eip6963 standard. For non-evm networks or for wallets that do not support the eip6963 standard, you can explicitly specify descriptors.

import { ethereumWalletDescriptors } from "@safeblock/wallet-connector-solid"

const wallets = detectEthereumWallets("wc-project-id", () => {
  // ...
}, ethereumWalletDescriptors)

Thus, wallets for which descriptors were explicitly specified will be added in addition to the found wallets. For non-evm networks, specifying descriptors is mandatory.

Note: although we provide some descriptors right inside the package, you can still write them yourself

Non-EVM networks

Example of obtaining a list of wallets and accounts in the Tron network:

import { tronWalletDescriptors } from "@safeblock/wallet-connector-solid"
import { detectAccounts, detectWallets, WalletType, TronWeb } from "@safeblock/wallet-connector-solid"


const wallets = detectWallets(tronWalletDescriptors, WalletType.Tron)

// In this line provider is just a TronWeb instance from each provided wallet
const accounts = detectAccounts<TronWeb>(wallets, provider => provider.defaultAddress.base58)

License

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International

0.3.8

6 months ago

0.3.7

8 months ago

0.3.6

9 months ago

0.3.5

9 months ago

0.3.4

9 months ago

0.3.3

9 months ago

0.3.2

9 months ago

0.3.1

9 months ago

0.2.1

9 months ago

0.2.0

9 months ago

0.1.10

11 months ago

0.1.9

11 months ago

0.1.8

11 months ago

0.1.7

11 months ago

0.1.6

11 months ago

0.1.5

11 months ago

0.1.4

11 months ago

0.1.3

11 months ago

0.1.2

11 months ago

0.1.1

11 months ago

0.1.0

11 months ago