@interchain-kit/react 0.2.208 → 0.2.212

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +2 -2
  2. package/esm/hooks/useChainWallet.js +2 -2
  3. package/esm/modal/modal.js +43 -91
  4. package/esm/modal/provider.js +30 -2
  5. package/esm/modal/views/Connected.js +3 -15
  6. package/esm/modal/views/Connecting.js +1 -3
  7. package/esm/modal/views/NotExist.js +4 -8
  8. package/esm/modal/views/QRCode.js +4 -15
  9. package/esm/modal/views/Reject.js +1 -3
  10. package/esm/modal/views/WalletList.js +3 -35
  11. package/esm/store/chain-wallet.js +7 -31
  12. package/esm/store/index.js +0 -219
  13. package/esm/store/store.js +73 -25
  14. package/esm/utils/wallet.js +24 -0
  15. package/hooks/useChainWallet.js +2 -2
  16. package/modal/modal.d.ts +30 -1
  17. package/modal/modal.js +41 -89
  18. package/modal/provider.js +29 -1
  19. package/modal/views/Connected.d.ts +7 -3
  20. package/modal/views/Connected.js +3 -15
  21. package/modal/views/Connecting.d.ts +2 -1
  22. package/modal/views/Connecting.js +1 -3
  23. package/modal/views/NotExist.d.ts +10 -3
  24. package/modal/views/NotExist.js +4 -8
  25. package/modal/views/QRCode.d.ts +9 -2
  26. package/modal/views/QRCode.js +4 -15
  27. package/modal/views/Reject.d.ts +2 -1
  28. package/modal/views/Reject.js +1 -3
  29. package/modal/views/WalletList.d.ts +7 -4
  30. package/modal/views/WalletList.js +3 -35
  31. package/package.json +19 -10
  32. package/store/chain-wallet.d.ts +8 -17
  33. package/store/chain-wallet.js +7 -31
  34. package/store/index.d.ts +0 -43
  35. package/store/index.js +0 -221
  36. package/store/store.d.ts +2 -4
  37. package/store/store.js +72 -24
  38. package/utils/wallet.d.ts +26 -0
  39. package/utils/wallet.js +26 -1
  40. package/esm/hooks/useAccount.js +0 -39
  41. package/hooks/useAccount.d.ts +0 -2
  42. package/hooks/useAccount.js +0 -43
package/store/index.js CHANGED
@@ -14,226 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.createInterchainStore = void 0;
18
- const core_1 = require("@interchain-kit/core");
19
- const zustand_1 = require("zustand");
20
- const immer_1 = require("zustand/middleware/immer");
21
- const middleware_1 = require("zustand/middleware");
22
- const immerSyncUp = (newWalletManager) => {
23
- return (draft) => {
24
- draft.chains = newWalletManager.chains;
25
- draft.assetLists = newWalletManager.assetLists;
26
- draft.wallets = newWalletManager.wallets;
27
- draft.signerOptions = newWalletManager.signerOptions;
28
- draft.endpointOptions = newWalletManager.endpointOptions;
29
- draft.signerOptionMap = newWalletManager.signerOptionMap;
30
- draft.endpointOptionsMap = newWalletManager.endpointOptionsMap;
31
- draft.preferredSignTypeMap = newWalletManager.preferredSignTypeMap;
32
- };
33
- };
34
- const createInterchainStore = (walletManager) => {
35
- const { chains, assetLists, wallets, signerOptions, endpointOptions } = walletManager;
36
- // const walletManager = new WalletManager(chains, assetLists, wallets, signerOptions, endpointOptions)
37
- return (0, zustand_1.createStore)((0, middleware_1.persist)((0, immer_1.immer)((set, get) => ({
38
- chainWalletState: [],
39
- currentWalletName: '',
40
- currentChainName: '',
41
- chains: [...walletManager.chains],
42
- assetLists: [...walletManager.assetLists],
43
- wallets: walletManager.wallets,
44
- signerOptions: walletManager.signerOptions,
45
- endpointOptions: walletManager.endpointOptions,
46
- preferredSignTypeMap: { ...walletManager.preferredSignTypeMap },
47
- signerOptionMap: { ...walletManager.signerOptionMap },
48
- endpointOptionsMap: { ...walletManager.endpointOptionsMap },
49
- walletConnectQRCodeUri: '',
50
- updateChainWalletState: (walletName, chainName, data) => {
51
- set(draft => {
52
- let targetIndex = draft.chainWalletState.findIndex(cws => cws.walletName === walletName && cws.chainName === chainName);
53
- draft.chainWalletState[targetIndex] = { ...draft.chainWalletState[targetIndex], ...data };
54
- });
55
- },
56
- init: async () => {
57
- const existedChainWalletStatesMap = new Map(get().chainWalletState.map(cws => [cws.walletName + cws.chainName, cws]));
58
- wallets.forEach(wallet => {
59
- chains.forEach(chain => {
60
- if (!existedChainWalletStatesMap.has(wallet.info.name + chain.chainName)) {
61
- set(draft => {
62
- draft.chainWalletState.push({
63
- chainName: chain.chainName,
64
- walletName: wallet.info.name,
65
- walletState: core_1.WalletState.Disconnected,
66
- rpcEndpoint: "",
67
- errorMessage: "",
68
- account: undefined
69
- });
70
- });
71
- }
72
- });
73
- });
74
- const NotExistWallets = [];
75
- await Promise.all(get().wallets.map(async (wallet) => {
76
- try {
77
- await wallet.init();
78
- }
79
- catch (error) {
80
- if (error === core_1.clientNotExistError.message) {
81
- NotExistWallets.push(wallet.info.name);
82
- }
83
- }
84
- }));
85
- set(draft => {
86
- draft.chainWalletState = draft.chainWalletState.map(cws => {
87
- if (NotExistWallets.includes(cws.walletName)) {
88
- return { ...cws, walletState: core_1.WalletState.NotExist };
89
- }
90
- return cws;
91
- });
92
- });
93
- // return walletManager.init()
94
- },
95
- setCurrentChainName: (chainName) => {
96
- set(draft => { draft.currentChainName = chainName; });
97
- },
98
- setCurrentWalletName: (walletName) => {
99
- set(draft => { draft.currentWalletName = walletName; });
100
- },
101
- getDraftChainWalletState: (state, walletName, chainName) => {
102
- const targetIndex = state.chainWalletState.findIndex(cws => cws.walletName === walletName && cws.chainName === chainName);
103
- return state.chainWalletState[targetIndex];
104
- },
105
- getChainWalletState: (walletName, chainName) => {
106
- return get().chainWalletState.find(cws => cws.walletName === walletName && cws.chainName === chainName);
107
- },
108
- addChains: (chains, assetLists, signerOptions, endpointOptions) => {
109
- walletManager.addChains(chains, assetLists, signerOptions, endpointOptions);
110
- // console.log(walletManager.chains, walletManager.assetLists)
111
- // set(immerSyncUp(walletManager))
112
- // set(draft => {
113
- // draft.chains = walletManager.chains
114
- // })
115
- set(draft => {
116
- chains.forEach(newChain => {
117
- const existChain = draft.chains.find(c => c.chainId === newChain.chainId);
118
- if (!existChain) {
119
- draft.chains.push(newChain);
120
- const assetList = assetLists.find(a => a.chainName === newChain.chainName);
121
- draft.assetLists.push(assetList);
122
- draft.wallets.forEach(w => {
123
- draft.chainWalletState.push({
124
- chainName: newChain.chainName,
125
- walletName: w.info.name,
126
- walletState: core_1.WalletState.Disconnected,
127
- rpcEndpoint: "",
128
- errorMessage: "",
129
- account: undefined
130
- });
131
- });
132
- }
133
- draft.signerOptionMap[newChain.chainName] = signerOptions?.signing?.(newChain.chainName);
134
- draft.endpointOptionsMap[newChain.chainName] = endpointOptions?.endpoints?.[newChain.chainName];
135
- });
136
- });
137
- },
138
- connect: async (walletName, chainName) => {
139
- get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Connecting });
140
- try {
141
- await walletManager.connect(walletName, chainName, (uri) => {
142
- set(draft => {
143
- draft.walletConnectQRCodeUri = uri;
144
- });
145
- });
146
- set(draft => {
147
- draft.currentChainName = chainName;
148
- draft.currentWalletName = walletName;
149
- });
150
- get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Connected });
151
- }
152
- catch (error) {
153
- if (error.message === 'Request rejected') {
154
- get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Rejected, errorMessage: error.message });
155
- return;
156
- }
157
- get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Disconnected, errorMessage: error.message });
158
- }
159
- },
160
- disconnect: async (walletName, chainName) => {
161
- try {
162
- await walletManager.disconnect(walletName, chainName);
163
- get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Disconnected, account: null });
164
- }
165
- catch (error) {
166
- }
167
- },
168
- getAccount: async (walletName, chainName) => {
169
- const account = await walletManager.getAccount(walletName, chainName);
170
- get().updateChainWalletState(walletName, chainName, { account });
171
- return account;
172
- },
173
- getRpcEndpoint: async (walletName, chainName) => {
174
- const exist = get().getChainWalletState(walletName, chainName).rpcEndpoint;
175
- if (exist)
176
- return exist;
177
- const rpcEndpoint = await walletManager.getRpcEndpoint(walletName, chainName);
178
- get().updateChainWalletState(walletName, chainName, { rpcEndpoint });
179
- return rpcEndpoint;
180
- },
181
- getChainLogoUrl(chainName) {
182
- return walletManager.getChainLogoUrl(chainName);
183
- },
184
- getChainByName(chainName) {
185
- return walletManager.getChainByName(chainName);
186
- },
187
- getAssetListByName(chainName) {
188
- return walletManager.getAssetListByName(chainName);
189
- },
190
- getDownloadLink(walletName) {
191
- return walletManager.getDownloadLink(walletName);
192
- },
193
- getOfflineSigner(walletName, chainName) {
194
- return walletManager.getOfflineSigner(walletName, chainName);
195
- },
196
- getPreferSignType(chainName) {
197
- const result = walletManager.getPreferSignType(chainName);
198
- set(immerSyncUp(walletManager));
199
- return result;
200
- },
201
- getSignerOptions(chainName) {
202
- const result = walletManager.getSignerOptions(chainName);
203
- set(immerSyncUp(walletManager));
204
- return result;
205
- },
206
- getWalletByName(walletName) {
207
- return walletManager.getWalletByName(walletName);
208
- },
209
- getSigningClient(walletName, chainName) {
210
- return walletManager.getSigningClient(walletName, chainName);
211
- },
212
- getEnv() {
213
- return walletManager.getEnv();
214
- },
215
- })), {
216
- name: 'interchain-kit-store',
217
- storage: (0, middleware_1.createJSONStorage)(() => localStorage),
218
- partialize: state => ({
219
- chainWalletState: state.chainWalletState,
220
- currentWalletName: state.currentWalletName,
221
- currentChainName: state.currentChainName
222
- }),
223
- onRehydrateStorage: (state) => {
224
- // console.log('interchain-kit store hydration starts')
225
- // optional
226
- return (state, error) => {
227
- if (error) {
228
- console.log('an error happened during hydration', error);
229
- }
230
- else {
231
- // console.log('interchain-kit store hydration finished')
232
- }
233
- };
234
- },
235
- }));
236
- };
237
- exports.createInterchainStore = createInterchainStore;
238
17
  __exportStar(require("./chain-wallet"), exports);
239
18
  __exportStar(require("./store"), exports);
package/store/store.d.ts CHANGED
@@ -1,20 +1,19 @@
1
1
  import { AssetList, Chain } from "@chain-registry/v2-types";
2
2
  import { BaseWallet, EndpointOptions, SignerOptions, WalletAccount, WalletManager, WalletState } from "@interchain-kit/core";
3
- import { SignerOptions as InterchainSignerOptions } from '@interchainjs/cosmos/types/signing-client';
4
3
  import { HttpEndpoint } from '@interchainjs/types';
5
- type ChainWalletState = {
4
+ export type ChainWalletState = {
6
5
  chainName: string;
7
6
  walletName: string;
8
7
  walletState: WalletState;
9
8
  rpcEndpoint: string | HttpEndpoint;
10
9
  errorMessage: string;
11
- signerOption: InterchainSignerOptions;
12
10
  account: WalletAccount;
13
11
  };
14
12
  export interface InterchainStore extends WalletManager {
15
13
  chainWalletState: ChainWalletState[];
16
14
  currentWalletName: string;
17
15
  currentChainName: string;
16
+ walletConnectQRCodeUri: string;
18
17
  setCurrentChainName: (chainName: string) => void;
19
18
  setCurrentWalletName: (walletName: string) => void;
20
19
  getDraftChainWalletState: (state: InterchainStore, walletName: string, chainName: string) => ChainWalletState;
@@ -42,4 +41,3 @@ export declare const createInterchainStore: (walletManager: WalletManager) => Om
42
41
  setState(nextStateOrUpdater: InterchainStore | Partial<InterchainStore> | ((state: import("immer").WritableDraft<InterchainStore>) => void), shouldReplace?: false): void;
43
42
  setState(nextStateOrUpdater: InterchainStore | ((state: import("immer").WritableDraft<InterchainStore>) => void), shouldReplace: true): void;
44
43
  };
45
- export {};
package/store/store.js CHANGED
@@ -20,22 +20,8 @@ const immerSyncUp = (newWalletManager) => {
20
20
  const createInterchainStore = (walletManager) => {
21
21
  const { chains, assetLists, wallets, signerOptions, endpointOptions } = walletManager;
22
22
  // const walletManager = new WalletManager(chains, assetLists, wallets, signerOptions, endpointOptions)
23
- const chainWalletState = [];
24
- wallets.forEach(wallet => {
25
- chains.forEach(chain => {
26
- chainWalletState.push({
27
- chainName: chain.chainName,
28
- walletName: wallet.info.name,
29
- walletState: core_1.WalletState.Disconnected,
30
- rpcEndpoint: "",
31
- errorMessage: "",
32
- signerOption: undefined,
33
- account: undefined
34
- });
35
- });
36
- });
37
23
  return (0, zustand_1.createStore)((0, middleware_1.persist)((0, immer_1.immer)((set, get) => ({
38
- chainWalletState,
24
+ chainWalletState: [],
39
25
  currentWalletName: '',
40
26
  currentChainName: '',
41
27
  chains: [...walletManager.chains],
@@ -46,13 +32,59 @@ const createInterchainStore = (walletManager) => {
46
32
  preferredSignTypeMap: { ...walletManager.preferredSignTypeMap },
47
33
  signerOptionMap: { ...walletManager.signerOptionMap },
48
34
  endpointOptionsMap: { ...walletManager.endpointOptionsMap },
35
+ walletConnectQRCodeUri: '',
49
36
  updateChainWalletState: (walletName, chainName, data) => {
50
37
  set(draft => {
51
38
  let targetIndex = draft.chainWalletState.findIndex(cws => cws.walletName === walletName && cws.chainName === chainName);
52
39
  draft.chainWalletState[targetIndex] = { ...draft.chainWalletState[targetIndex], ...data };
53
40
  });
54
41
  },
55
- init: () => walletManager.init(),
42
+ init: async () => {
43
+ const existedChainWalletStatesMap = new Map(get().chainWalletState.map(cws => [cws.walletName + cws.chainName, cws]));
44
+ wallets.forEach(wallet => {
45
+ chains.forEach(chain => {
46
+ if (!existedChainWalletStatesMap.has(wallet.info.name + chain.chainName)) {
47
+ set(draft => {
48
+ draft.chainWalletState.push({
49
+ chainName: chain.chainName,
50
+ walletName: wallet.info.name,
51
+ walletState: core_1.WalletState.Disconnected,
52
+ rpcEndpoint: "",
53
+ errorMessage: "",
54
+ account: undefined
55
+ });
56
+ });
57
+ }
58
+ });
59
+ });
60
+ const NotExistWallets = [];
61
+ const ExistWallets = [];
62
+ await Promise.all(get().wallets.map(async (wallet) => {
63
+ try {
64
+ await wallet.init();
65
+ ExistWallets.push(wallet.info.name);
66
+ }
67
+ catch (error) {
68
+ if (error === core_1.clientNotExistError) {
69
+ NotExistWallets.push(wallet.info.name);
70
+ }
71
+ }
72
+ }));
73
+ set(draft => {
74
+ draft.chainWalletState = draft.chainWalletState.map(cws => {
75
+ if (NotExistWallets.includes(cws.walletName)) {
76
+ return { ...cws, walletState: core_1.WalletState.NotExist };
77
+ }
78
+ return cws;
79
+ });
80
+ draft.chainWalletState = draft.chainWalletState.map(cws => {
81
+ if (ExistWallets.includes(cws.walletName)) {
82
+ return { ...cws, walletState: cws.walletState === core_1.WalletState.NotExist ? core_1.WalletState.Disconnected : cws.walletState };
83
+ }
84
+ return cws;
85
+ });
86
+ });
87
+ },
56
88
  setCurrentChainName: (chainName) => {
57
89
  set(draft => { draft.currentChainName = chainName; });
58
90
  },
@@ -85,25 +117,41 @@ const createInterchainStore = (walletManager) => {
85
117
  chainName: newChain.chainName,
86
118
  walletName: w.info.name,
87
119
  walletState: core_1.WalletState.Disconnected,
88
- rpcEndpoint: endpointOptions?.endpoints?.[newChain.chainName]?.rpc?.[0],
120
+ rpcEndpoint: endpointOptions?.endpoints[newChain.chainName]?.rpc?.[0] || '',
89
121
  errorMessage: "",
90
- signerOption: signerOptions?.signing?.(newChain.chainName),
91
122
  account: undefined
92
123
  });
93
124
  });
94
125
  }
126
+ else {
127
+ draft.updateChainWalletState(newChain.chainName, newChain.chainName, {
128
+ rpcEndpoint: endpointOptions?.endpoints[newChain.chainName]?.rpc?.[0] || '',
129
+ });
130
+ }
95
131
  draft.signerOptionMap[newChain.chainName] = signerOptions?.signing?.(newChain.chainName);
96
132
  draft.endpointOptionsMap[newChain.chainName] = endpointOptions?.endpoints?.[newChain.chainName];
97
133
  });
98
134
  });
99
135
  },
100
136
  connect: async (walletName, chainName) => {
101
- get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Connecting });
137
+ const state = get().getChainWalletState(walletName, chainName)?.walletState;
138
+ if (state === core_1.WalletState.NotExist) {
139
+ return;
140
+ }
141
+ if (walletName === 'WalletConnect' && state === core_1.WalletState.Connected) {
142
+ return;
143
+ }
144
+ set(draft => {
145
+ draft.currentChainName = chainName;
146
+ draft.currentWalletName = walletName;
147
+ draft.walletConnectQRCodeUri = '';
148
+ });
149
+ get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Connecting, errorMessage: '' });
102
150
  try {
103
- await walletManager.connect(walletName, chainName);
104
- set(draft => {
105
- draft.currentChainName = chainName;
106
- draft.currentWalletName = walletName;
151
+ await walletManager.connect(walletName, chainName, (uri) => {
152
+ set(draft => {
153
+ draft.walletConnectQRCodeUri = uri;
154
+ });
107
155
  });
108
156
  get().updateChainWalletState(walletName, chainName, { walletState: core_1.WalletState.Connected });
109
157
  }
@@ -186,7 +234,7 @@ const createInterchainStore = (walletManager) => {
186
234
  console.log('an error happened during hydration', error);
187
235
  }
188
236
  else {
189
- console.log('interchain-kit store hydration finished');
237
+ // console.log('interchain-kit store hydration finished')
190
238
  }
191
239
  };
192
240
  },
package/utils/wallet.d.ts CHANGED
@@ -5,3 +5,29 @@ export declare const getWalletInfo: (wallet: BaseWallet) => {
5
5
  logo: string;
6
6
  mobileDisabled: boolean;
7
7
  };
8
+ export declare const transferToWalletUISchema: (w: BaseWallet) => {
9
+ name: string;
10
+ prettyName: string;
11
+ logo: string;
12
+ mobileDisabled: boolean;
13
+ shape: "list";
14
+ originalWallet: {
15
+ session: import("@walletconnect/types").SessionTypes.Struct;
16
+ info: import("@interchain-kit/core").Wallet;
17
+ errorMessage: string;
18
+ walletState: import("@interchain-kit/core").WalletState;
19
+ events: import("events")<import("@interchain-kit/core").WalletEvents>;
20
+ chainMap: Map<import("@chain-registry/v2-types").Chain["chainId"], import("@chain-registry/v2-types").Chain>;
21
+ assetLists: import("@chain-registry/v2-types").AssetList[];
22
+ client: any;
23
+ };
24
+ subLogo: string;
25
+ } | {
26
+ name: string;
27
+ prettyName: string;
28
+ logo: string;
29
+ mobileDisabled: boolean;
30
+ shape: "list";
31
+ originalWallet: BaseWallet;
32
+ subLogo?: undefined;
33
+ };
package/utils/wallet.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWalletInfo = void 0;
3
+ exports.transferToWalletUISchema = exports.getWalletInfo = void 0;
4
4
  const getWalletInfo = (wallet) => {
5
5
  return {
6
6
  name: wallet?.info?.name,
@@ -10,3 +10,28 @@ const getWalletInfo = (wallet) => {
10
10
  };
11
11
  };
12
12
  exports.getWalletInfo = getWalletInfo;
13
+ const transferToWalletUISchema = (w) => {
14
+ if (w.info.mode === "wallet-connect") {
15
+ const wc = w;
16
+ if (wc.session) {
17
+ return {
18
+ name: wc.session?.peer.metadata?.name,
19
+ prettyName: `${wc.session?.peer.metadata?.name} - Mobile`,
20
+ logo: wc.session?.peer.metadata?.icons?.[0],
21
+ mobileDisabled: true,
22
+ shape: "list",
23
+ originalWallet: { ...w, session: wc.session },
24
+ subLogo: w.info.logo,
25
+ };
26
+ }
27
+ }
28
+ return {
29
+ name: w.info.name,
30
+ prettyName: w.info.prettyName,
31
+ logo: w.info.logo,
32
+ mobileDisabled: true,
33
+ shape: "list",
34
+ originalWallet: w,
35
+ };
36
+ };
37
+ exports.transferToWalletUISchema = transferToWalletUISchema;
@@ -1,39 +0,0 @@
1
- import { useEffect, useMemo, useState } from "react";
2
- import { WalletManagerState, WalletState } from "@interchain-kit/core";
3
- import { useWalletManager } from './useWalletManager';
4
- export const useAccount = (chainName, walletName) => {
5
- const walletManager = useWalletManager();
6
- const [isFetching, setIsFetching] = useState(false);
7
- const wallet = useMemo(() => {
8
- return walletManager.wallets.find(w => w.info.name === walletName);
9
- }, [walletManager, walletName]);
10
- const [account, setAccount] = useState(null);
11
- const chain = useMemo(() => {
12
- return walletManager.chains.find(c => c.chainName === chainName);
13
- }, [walletManager, chainName]);
14
- const getAccount = async () => {
15
- if (wallet && chain) {
16
- if (wallet.walletState === WalletState.Connected && account === null && !isFetching) {
17
- setIsFetching(true);
18
- const account = await walletManager.getAccount(walletName, chainName);
19
- setAccount(account);
20
- setIsFetching(false);
21
- }
22
- if (wallet.walletState === WalletState.Disconnected) {
23
- setAccount(null);
24
- }
25
- }
26
- if (!wallet) {
27
- setAccount(null);
28
- }
29
- };
30
- useEffect(() => {
31
- if (wallet && walletManager.state === WalletManagerState.Initialized) {
32
- wallet.events.on('accountChanged', getAccount);
33
- }
34
- }, [wallet, walletManager.state]);
35
- useEffect(() => {
36
- getAccount();
37
- }, [wallet, chainName, wallet?.walletState]);
38
- return account;
39
- };
@@ -1,2 +0,0 @@
1
- import { WalletAccount } from "@interchain-kit/core";
2
- export declare const useAccount: (chainName: string, walletName: string) => WalletAccount | null;
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useAccount = void 0;
4
- const react_1 = require("react");
5
- const core_1 = require("@interchain-kit/core");
6
- const useWalletManager_1 = require("./useWalletManager");
7
- const useAccount = (chainName, walletName) => {
8
- const walletManager = (0, useWalletManager_1.useWalletManager)();
9
- const [isFetching, setIsFetching] = (0, react_1.useState)(false);
10
- const wallet = (0, react_1.useMemo)(() => {
11
- return walletManager.wallets.find(w => w.info.name === walletName);
12
- }, [walletManager, walletName]);
13
- const [account, setAccount] = (0, react_1.useState)(null);
14
- const chain = (0, react_1.useMemo)(() => {
15
- return walletManager.chains.find(c => c.chainName === chainName);
16
- }, [walletManager, chainName]);
17
- const getAccount = async () => {
18
- if (wallet && chain) {
19
- if (wallet.walletState === core_1.WalletState.Connected && account === null && !isFetching) {
20
- setIsFetching(true);
21
- const account = await walletManager.getAccount(walletName, chainName);
22
- setAccount(account);
23
- setIsFetching(false);
24
- }
25
- if (wallet.walletState === core_1.WalletState.Disconnected) {
26
- setAccount(null);
27
- }
28
- }
29
- if (!wallet) {
30
- setAccount(null);
31
- }
32
- };
33
- (0, react_1.useEffect)(() => {
34
- if (wallet && walletManager.state === core_1.WalletManagerState.Initialized) {
35
- wallet.events.on('accountChanged', getAccount);
36
- }
37
- }, [wallet, walletManager.state]);
38
- (0, react_1.useEffect)(() => {
39
- getAccount();
40
- }, [wallet, chainName, wallet?.walletState]);
41
- return account;
42
- };
43
- exports.useAccount = useAccount;