Venom wallet controller that allows to connect the wallet to decentralized application and get basic data and providers.
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.
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 |
Please refer to project's code style for submitting patches and additions.
- Fork the repo on GitHub
- Clone the project to your own machine.
- If you're fixing bug or adding a new feature, create related issue.
- Commit changes to your own branch.
- Push your work back up to your fork.
- 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!
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.
https://venom.foundation
knownout - https://github.com/knownout/
knownout@hotmail.com