feat: add AlgoVoi wallet provider#434
Conversation
- Register 'algovoi' in WalletManager (NetworkContext) alongside existing AVM wallets - Add AlgoVoi to the wallet selection modal (WalletModal) for all AVM networks - Mark AlgoVoi as a universal wallet (supports both Algorand and Voi Mainnet) - Connection handler uses window.algorand directly as fallback until TxnLab/use-wallet#434 lands; upgrades automatically to use-wallet path once available - Availability check detects the extension via window.algorand.isAlgoVoi so the button appears even before the npm package ships WalletId.ALGOVOI Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Hey @drichar — just wanted to check in on this one. AlgoVoi is a browser extension wallet for Algorand and Voi with native ARC-27 support, and getting it into use-wallet would really help with dApp compatibility across the ecosystem (a few Voi dApps are already waiting on this to land before they can add AlgoVoi support). No pressure at all — just appreciate any review when you get a chance. Happy to address any feedback or changes needed. 🙏 |
|
Bumping this for visibility — wanted to share some context on where this fits in a wider rollout. What's shipped since this PR was openedSince submitting this PR, AlgoVoi has launched full implementations across three payment protocols:
All three are smoke-tested with real on-chain USDC payments across Algorand, VOI, Hedera, and Stellar. eCommerce platform adaptersAlgoVoi also has payment gateway adapters for 17+ eCommerce platforms (WooCommerce, Shopify, PrestaShop, Magento, OpenCart, and more), all open-source: Why use-wallet matters hereThe AlgoVoi browser extension is the user-facing wallet that completes the loop — dApps built with Happy to answer any questions or make changes if the implementation needs adjusting for the v4 API. |
Add AlgoVoi as a named wallet provider so dApps using use-wallet can display it in their connect modals alongside Pera, Defly, etc. AlgoVoi is an Algorand + Voi browser extension wallet that exposes an ARC-0027 compliant provider at window.algorand. The implementation calls the injected provider directly (no external SDK dependency). Changes: - Add ALGOVOI to WalletId enum - Create AlgoVoiWallet extending BaseWallet - Register in createWalletMap and exports - Add unit tests (connect, disconnect, resumeSession, metadata)
Remove unused `logger` and `Mock` imports flagged by eslint.
3ff0feb to
791dc4d
Compare
|
Quick check-in — coming up on three weeks since the last bump. Since then AlgoVoi has expanded to seven supported chains (Solana and Tempo joining Algorand, VOI, Hedera, Stellar, Base) and the browser-extension wallet was just listed under A native wallet provider in use-wallet would help dApps using the library pick up AlgoVoi flows cleanly across that 7-chain surface. Happy to make any changes the team would like to see — no rush, just wanted to flag it's still relevant on our side. Cheers. |
|
Sorry for the delay @chopmob-cloud! When the PR was opened I was preparing for the stable v5 release. My thinking was that we would wait and migrate the AlgoVoi provider to its new wallet adapter pattern, where it would be a standalone package instead of living inside the core library. Shifting priorities have delayed the v5 release and my focus was elsewhere. I should have contacted you sooner. We can get this merged and cut a new v4 release but I think it would make more sense to have you migrate AlgoVoi to its own adapter package now so it's ready for the v5 stable this month. What do you think? |
|
Here's the Lute v5 adapter package as an example: https://github.com/TxnLab/use-wallet/tree/v5/packages/wallets/lute |
|
Many thanks for the feedback, happy to wait, if it makes the transition easier, we are rolling out additional chains etc over the coming week or two, but if we need to make any code changes, they can be integrated very quickly. Thank you |
|
Part of the reasoning behind this transition is to give wallet maintainers ownership of their wallet adapter packages. While in the initial v5 release most of these will still be (This also drastically reduces the bundle size of the core library) If you want to take this approach and publish your own package for AlgoVoi, I'd be happy to help with the migration from what you have here. I'll add it to the v5 docs for discoverability when it's ready. |
|
Thanks again for the detailed response — really helpful context on the v5 direction. Happy to take ownership of the package. We've gone ahead and built and published the standalone adapter: npm: https://www.npmjs.com/package/@algovoi/use-wallet-algovoi Usage: import { algovoi } from '@algovoi/use-wallet-algovoi'
const walletManager = new WalletManager({
wallets: [algovoi(), pera(), defly()]
})Test coverage:
Follows the Lute package structure exactly — peer deps on Happy to make any adjustments you need before adding it to the v5 docs. |
Summary
WalletId.ALGOVOI)window.algorandprovider directly — no external SDK dependency requiredChanges
types.ts— AddALGOVOI = 'algovoi'toWalletIdenum,WalletMap, andWalletOptionsMapalgovoi.ts— NewAlgoVoiWalletclass extendingBaseWalletwindow.algorand?.isAlgoVoi === truealgorand#initializedevent if not yet injectedconnect(),disconnect(),resumeSession(),signTransactions()algosdk.Transaction[]andUint8Array[]input formatsindex.ts— ExportAlgoVoiWalletutils.ts— Register increateWalletMap()algovoi.test.ts— Unit tests for connect, disconnect, resumeSession, metadatadApp usage
Test plan
pnpm buildsucceeds for@txnlab/use-walletpackage