Skip to content

Commit aa67e2c

Browse files
[SDK] Expose getInstalledWallets() utility
1 parent fdd3441 commit aa67e2c

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

.changeset/great-jeans-relax.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"thirdweb": patch
3+
---
4+
5+
expose getInstalledWallets() utility

packages/thirdweb/src/exports/wallets.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ export * as EIP1193 from "../adapters/eip1193/index.js";
160160

161161
// injected
162162
export { injectedProvider } from "../wallets/injected/mipdStore.js";
163+
export { getInstalledWallets } from "../wallets/injected/mipdStore.js";
163164

164165
export type { ConnectionManager } from "../wallets/manager/index.js";
165166

packages/thirdweb/src/wallets/injected/mipdStore.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { type EIP6963ProviderDetail, type Store, createStore } from "mipd";
22
import { isBrowser } from "../../utils/platform.js";
3+
import type { InjectedSupportedWalletIds } from "../__generated__/wallet-ids.js";
34
import { METAMASK } from "../constants.js";
5+
import { createWallet } from "../create-wallet.js";
46
import type { Ethereum } from "../interfaces/ethereum.js";
7+
import type { Wallet } from "../interfaces/wallet.js";
58
import type { WalletId } from "../wallet-types.js";
69

710
declare module "mipd" {
@@ -38,6 +41,17 @@ export function injectedProvider(walletId: WalletId): Ethereum | undefined {
3841
return injectedProviderDetail?.provider as Ethereum | undefined;
3942
}
4043

44+
/**
45+
* Get All currently installed wallets.
46+
* Uses EIP-6963 to discover installed browser extension wallets.
47+
* @returns a list of installed wallets
48+
*/
49+
export function getInstalledWallets(): Wallet[] {
50+
const providers = getInstalledWalletProviders();
51+
const walletIds = providers.map((provider) => provider.info.rdns);
52+
return walletIds.map((w) => createWallet(w as InjectedSupportedWalletIds));
53+
}
54+
4155
/**
4256
* Get Injected Provider Details for given wallet ID (rdns)
4357
* @internal

0 commit comments

Comments
 (0)