@rbflabs/agoric-react-components
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

@rbflabs/agoric-react-components

Installation

Using npm

npm install @rbflabs/agoric-react-components

Using yarn

yarn add @rbflabs/agoric-react-components

Usage

You always have to use AgoricwalletProvider in order to use other components from this library.

Here we use it in index.jsx file. You can use it elsewhere too, but make sure that all other @rbflabs/agoric-react-components are wrapper with AgoricWalletProvider.

import React from 'react';
import ReactDOM from 'react-dom/client';
import { AgoricWalletProvider } from '@rbflabs/agoric-react-components';

ReactDOM.createRoot(document.getElementById('root')).render(
  <React>
    <AgoricWalletProvider dappName="agoric-dapp" autoConnect={false}>
      Hello, I am Agoric React App!
    </AgoricWalletProvider>
  </React>
);

Components and hooks


AgoricWalletProvider

AgoricWalletProvider gives you multiple props that you can access using useAgoricWallet hook (don't forget to wrap your component with AgoricWalletProvider).

import React from 'react';
import { useAgoricWallet } from '@rbflabs/agoric-react-components';

// Wrap <SomeComponent/> with <AgoricWalletProvider /> in parent component
const SomeComponent = () => {
  const {
    autoConnect, // if the dApp should connect automatically on load
    approved, // if the dApp is approved in your wallet
    board, // dApp board
    dappName, // dApp name
    offers, // list of offers in your wallet
    purses, // list of purses in your wallet
    walletBridge,
    walletConnected,
    walletConnection,
    walletState,
    zoe, // Agoric ZOE instance
    connectWallet, // function that connects to your wallet
    resetWalletConnection // function that resets wallet connection
    } = useAgoricWallet();

    return (
      <div>
        {walletConnected ? "Wallet Connected" : "Wallet Disconnected"}
        <button onClick={connectWallet}>Connect Wallet</button>
      </div>
    )
}

Listen to Wallet State Change

AgoricWalletProvider accepts functions, that will be executed when something in your wallet changes.

import React from 'react';
import { AgoricWalletProvider } from '@rbflabs/agoric-react-components';

const onWalletState = (newState) => console.log('wallet state changed', newState)
const onPursesChange = (newPurses) => console.log('purses changed', newPurses)
const onOffersChange = (newOffers) => console.log('offers changed', newOffers)
const onConnectionFail = (reason) => console.log('connection failed', reason)
const onConnectionFinish = (completion) => console.log('connection finished', completion)

ReactDOM.createRoot(document.getElementById('root')).render(
  <React>
    <AgoricWalletProvider
        dappName="agoric-dapp"
        autoConnect={false}
        onWalletState={onWalletState}
        onPursesChange={onPursesChange}
        onOffersChange={onOffersChange}
        onConnectionFail={onConnectionFail}
        onConnectionFinish={onConnectionFinish}
    >
      Hello, I am Agoric React App!
    </AgoricWalletProvider>
  </React>
);

AgoricNotifications

This hook gives you updates in form of a notification object for you to plug in your notification system (don't forget to wrap your component with AgoricWalletProvider).

You can choose which notifications should show up by providing group parameter (the default setting is that all notifications are shown).

import React from 'react';
import ReactDOM from 'react-dom/client';
import { useAgoricWalletNotifications } from '@rbflabs/agoric-react-components';

function SomeComponent() {
  const handleNotification = (notification: AgoricWalletNotification) => {
    const { id, title, message, loading, severity } = notification;
    // handle your notification
  };

  useAgoricWalletNotification(handleNotification, ['connect', 'offer', 'purse']);
}

Package Sidebar

Install

npm i @rbflabs/agoric-react-components

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

31.9 kB

Total Files

5

Last publish

Collaborators

  • rbflabsbot
  • livthomas
  • robertbrada