Skip to content
This repository has been archived by the owner on Jul 19, 2023. It is now read-only.

knownout/venom-wallet-controller

Repository files navigation

Venom wallet controller

Venom wallet controller that allows to connect the wallet to decentralized application and get basic data and providers.

Table of Contents

Getting started

Fist clone repository and install dependencies:

git clone https://github.com/knownout/venom-wallet-controller
cd venom-wallet-controller

Then you should prepare a repository:

npm i -g pnpm # if not yet installed
pnpm install
npx husky install

Now, after each commit, package will be automatically built and published to npm registry.

Usage

Before using the controller, you need to initialize it:

import venomWallet from "@knownout/venom-wallet-controller"

function App () {
    useEffect(() => {
        // Since the initialization should only be done
        // once, we do it inside the effect.
        venomWallet.initController();
    }, []);

    return (
        <div>
            { /* ... */ }
        </div>
    );
}

Method initController also supports custom venom-connect initialization function:

const initVenomConnect = async (networkID = 1000) => new VenomConnect({ /* configuration */ })

venomWallet.initController(initVenomConnect);

 

To connect or disconnect the wallet, you can call the callWalletAction method:

function App () {
    return (
        <button
            onClick={ () => venomWallet.callWalletAction() }
            disabled={ venomWallet.state.loading }
        >
            {
                venomWallet.state.loading
                    ? "Loading"
                    : venomWallet.data.walletInstalled
                        ? venomWallet.state.connected
                            ? "Disconnect wallet"
                            : "Connect wallet"
                        : "Wallet not installed"
            }
        </button>
    )
}

 

To get a standalone client or an inpage provider, use the following methods:

venomWallet.standaloneClient // Getter

venomWallet.rpcClient // Getter

 

List of all available public methods:

Method Return type Description
get rpcClient ProviderRpcClient Returns inpage provider
get standaloneClient ProviderRpcClient Returns standalone client
initController Promise<void> Initializes controller, should be called only once
changeDefaultNetworkID VenomWalletController Changes default chain ID, should be called before controller initialization
changeWalletAccount VenomWalletController Prompts user to change currently connected account
addEventListener void Adds new event listener for certain actions
removeEventListener void Removes specified event listener
removeEventListeners void Removes all event listeners for specified event

 

List of events:

Event Description
walletDisconnected Fires when wallet disconnected
walletConnected Fires when wallet connected
controllerInitialized Fires when controller initialization finished
contractStateChanged Fires when wallet contract state changes

Contributing

Please refer to project's code style for submitting patches and additions.

  1. Fork the repo on GitHub
  2. Clone the project to your own machine.
  3. If you're fixing bug or adding a new feature, create related issue.
  4. Commit changes to your own branch.
  5. Push your work back up to your fork.
  6. Submit a Pull request so that we can review your changes.

NOTE: Be sure to merge the latest from "upstream" before making a pull request!

License

You can copy and paste the MIT license summary from below.

MIT License

Copyright (c) 2022-2023 Alexandr Slavinskii

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

 

Logo

 

https://venom.foundation
knownout - https://github.com/knownout/
knownout@hotmail.com