Skip to content

Commit 0e1737a

Browse files
feat: add status, isReady and isActive properties to check status of the providers
1 parent 25daaf1 commit 0e1737a

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

src/hooks/useWallet.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,34 @@ export default function useWallet() {
7676
return client;
7777
};
7878

79+
const status = useMemo(() => {
80+
if (activeAccount === undefined) {
81+
return "initializing";
82+
}
83+
84+
if (activeAccount === null && connectedAccounts.length) {
85+
return "connected";
86+
}
87+
88+
if (activeAccount === null && !connectedAccounts.length) {
89+
return "disconnected";
90+
}
91+
92+
if (activeAccount && activeAccount.address) {
93+
return "active";
94+
}
95+
96+
return "error";
97+
}, [activeAccount]);
98+
99+
const isActive = useMemo(() => {
100+
return status === "active";
101+
}, [status]);
102+
103+
const isReady = useMemo(() => {
104+
return status !== "initializing";
105+
}, [status]);
106+
79107
const selectActiveAccount = async (
80108
providerId: PROVIDER_ID,
81109
address: string
@@ -250,6 +278,9 @@ export default function useWallet() {
250278
connectedActiveAccounts,
251279
activeAccount,
252280
activeAddress: activeAccount?.address,
281+
status,
282+
isActive,
283+
isReady,
253284
signer,
254285
signTransactions,
255286
sendTransactions,

src/store/state/walletStore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const walletStoreSelector = (state: WalletStore) => ({
1616

1717
export type WalletStore = {
1818
accounts: Account[];
19-
activeAccount: Account | null;
19+
activeAccount: Account | null | undefined;
2020
setActiveAccount: (account: Account) => void;
2121
clearActiveAccount: (id: PROVIDER_ID) => void;
2222
addAccounts: (accounts: Account[]) => void;
@@ -25,7 +25,7 @@ export type WalletStore = {
2525

2626
const emptyState: WalletStore = {
2727
accounts: [],
28-
activeAccount: null,
28+
activeAccount: undefined,
2929
setActiveAccount: (account: Account) => {},
3030
clearActiveAccount: (id: PROVIDER_ID) => {},
3131
addAccounts: (accounts: Account[]) => {},

0 commit comments

Comments
 (0)