@interchain-kit/react 0.0.1-beta.52 → 0.0.1-beta.53

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 (56) hide show
  1. package/esm/hooks/index.js +0 -6
  2. package/esm/hooks/useChain.js +31 -65
  3. package/esm/hooks/useChainWallet.js +25 -36
  4. package/esm/hooks/useWalletManager.js +3 -3
  5. package/esm/index.js +1 -0
  6. package/esm/modal/modal.js +31 -35
  7. package/esm/modal/views/Connected.js +11 -13
  8. package/esm/modal/views/QRCode.js +7 -8
  9. package/esm/modal/views/Reject.js +3 -1
  10. package/esm/provider.js +7 -10
  11. package/esm/store/index.js +163 -0
  12. package/esm/utils/wallet.js +3 -3
  13. package/hooks/index.d.ts +0 -6
  14. package/hooks/index.js +0 -6
  15. package/hooks/useChain.js +30 -64
  16. package/hooks/useChainWallet.js +25 -36
  17. package/hooks/useWalletManager.d.ts +1 -2
  18. package/hooks/useWalletManager.js +3 -3
  19. package/index.d.ts +1 -0
  20. package/index.js +1 -0
  21. package/modal/modal.js +28 -32
  22. package/modal/views/Connected.d.ts +3 -1
  23. package/modal/views/Connected.js +10 -12
  24. package/modal/views/QRCode.js +6 -7
  25. package/modal/views/Reject.js +3 -1
  26. package/package.json +6 -5
  27. package/provider.d.ts +4 -4
  28. package/provider.js +5 -8
  29. package/store/index.d.ts +35 -0
  30. package/store/index.js +167 -0
  31. package/types/chain.d.ts +0 -8
  32. package/utils/wallet.js +3 -3
  33. package/esm/hooks/useAccount.js +0 -26
  34. package/esm/hooks/useConfig.js +0 -10
  35. package/esm/hooks/useConnect.js +0 -11
  36. package/esm/hooks/useCurrentChainWallet.js +0 -12
  37. package/esm/hooks/useCurrentWallet.js +0 -18
  38. package/esm/hooks/useInterchainClient.js +0 -20
  39. package/esm/hooks/useOfflineSigner.js +0 -20
  40. package/esm/hooks/useRpcEndpoint.js +0 -26
  41. package/hooks/useAccount.d.ts +0 -6
  42. package/hooks/useAccount.js +0 -30
  43. package/hooks/useConfig.d.ts +0 -8
  44. package/hooks/useConfig.js +0 -14
  45. package/hooks/useConnect.d.ts +0 -1
  46. package/hooks/useConnect.js +0 -15
  47. package/hooks/useCurrentChainWallet.d.ts +0 -2
  48. package/hooks/useCurrentChainWallet.js +0 -16
  49. package/hooks/useCurrentWallet.d.ts +0 -2
  50. package/hooks/useCurrentWallet.js +0 -22
  51. package/hooks/useInterchainClient.d.ts +0 -6
  52. package/hooks/useInterchainClient.js +0 -24
  53. package/hooks/useOfflineSigner.d.ts +0 -6
  54. package/hooks/useOfflineSigner.js +0 -24
  55. package/hooks/useRpcEndpoint.d.ts +0 -6
  56. package/hooks/useRpcEndpoint.js +0 -30
package/hooks/useChain.js CHANGED
@@ -1,82 +1,48 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useChain = void 0;
4
- const useWalletManager_1 = require("./useWalletManager");
5
- const useAccount_1 = require("./useAccount");
6
- const useInterchainClient_1 = require("./useInterchainClient");
7
4
  const modal_1 = require("../modal");
8
- const useRpcEndpoint_1 = require("./useRpcEndpoint");
5
+ const useWalletManager_1 = require("./useWalletManager");
9
6
  const core_1 = require("@interchain-kit/core");
10
- const useCurrentChainWallet_1 = require("./useCurrentChainWallet");
11
7
  const useChain = (chainName) => {
12
- const walletManager = (0, useWalletManager_1.useWalletManager)();
13
- const chainAccount = (0, useCurrentChainWallet_1.useCurrentChainWallet)();
14
- const chain = walletManager.getChainByName(chainName);
15
- walletManager.currentChainName = chainName;
16
- const walletName = chainAccount?.info?.name;
17
- const rpcEndpointHook = (0, useRpcEndpoint_1.useRpcEndpoint)(chainName, walletName);
18
- const accountHook = (0, useAccount_1.useAccount)(chainName, walletName);
19
- const signingClientHook = (0, useInterchainClient_1.useInterchainClient)(chainName, walletName);
8
+ const { assetLists, currentWalletName, disconnect, setCurrentChainName, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = (0, useWalletManager_1.useWalletManager)();
9
+ const chain = getChainByName(chainName);
10
+ if (!chain) {
11
+ throw new core_1.ChainNameNotExist(chainName);
12
+ }
13
+ const assetList = assetLists.find(a => a.chainName === chainName);
14
+ const wallet = getWalletByName(currentWalletName);
15
+ const chainWalletStateToShow = getChainWalletState(currentWalletName, chainName);
20
16
  const { open, close } = (0, modal_1.useWalletModal)();
21
- const cosmosKitUserChainReturnType = {
17
+ console.log({ chainName, chain });
18
+ return {
19
+ //for migration cosmos kit
22
20
  connect: () => {
23
- if (chainAccount?.walletState === core_1.WalletState.Connected) {
24
- return;
25
- }
26
- walletManager.currentChainName = chainName;
21
+ setCurrentChainName(chainName);
27
22
  open();
28
23
  },
29
- disconnect: async () => {
30
- walletManager.currentChainName = chainName;
31
- await chainAccount?.disconnect();
32
- },
24
+ disconnect: async () => disconnect(currentWalletName, chainName),
33
25
  openView: () => {
34
- walletManager.currentChainName = chainName;
26
+ setCurrentChainName(chainName);
35
27
  open();
36
28
  },
37
29
  closeView: close,
38
- getRpcEndpoint: () => chainAccount.getRpcEndpoint(),
39
- status: chainAccount?.walletState,
40
- username: accountHook.account?.username,
41
- message: chainAccount?.errorMessage
42
- };
43
- if (chainAccount && chainAccount?.walletState === core_1.WalletState.Connected) {
44
- return {
45
- logoUrl: walletManager.getChainLogoUrl(chainName),
46
- chain,
47
- assetList: chainAccount?.assetList,
48
- address: accountHook.account?.address,
49
- wallet: chainAccount,
50
- rpcEndpoint: rpcEndpointHook.rpcEndpoint,
51
- ...cosmosKitUserChainReturnType, //for migration cosmos kit
52
- signingClient: signingClientHook.signingClient,
53
- getSigningClient: () => signingClientHook.getSigningClient(),
54
- isRpcEndpointLoading: rpcEndpointHook.isLoading,
55
- isAccountLoading: accountHook.isLoading,
56
- isSigningClientLoading: signingClientHook.isLoading,
57
- isLoading: rpcEndpointHook.isLoading || accountHook.isLoading || signingClientHook.isLoading,
58
- getRpcEndpointError: rpcEndpointHook.error,
59
- getSigningClientError: signingClientHook.error,
60
- getAccountError: accountHook.error
61
- };
62
- }
63
- return {
64
- logoUrl: walletManager.getChainLogoUrl(chainName),
30
+ getRpcEndpoint: () => getRpcEndpoint(currentWalletName, chainName),
31
+ status: chainWalletStateToShow?.walletState,
32
+ username: chainWalletStateToShow?.account?.username,
33
+ message: chainWalletStateToShow?.errorMessage,
34
+ // new api
35
+ logoUrl: getChainLogoUrl(chainName),
65
36
  chain,
66
- assetList: chainAccount?.assetList,
67
- address: accountHook.account?.address,
68
- wallet: chainAccount,
69
- rpcEndpoint: rpcEndpointHook.rpcEndpoint,
70
- ...cosmosKitUserChainReturnType, //for migration cosmos kit
71
- signingClient: signingClientHook.signingClient,
72
- getSigningClient: () => signingClientHook.getSigningClient(),
73
- isRpcEndpointLoading: rpcEndpointHook.isLoading,
74
- isAccountLoading: accountHook.isLoading,
75
- isSigningClientLoading: signingClientHook.isLoading,
76
- isLoading: rpcEndpointHook.isLoading || accountHook.isLoading || signingClientHook.isLoading,
77
- getRpcEndpointError: rpcEndpointHook.error,
78
- getSigningClientError: signingClientHook.error,
79
- getAccountError: accountHook.error
37
+ assetList,
38
+ address: chainWalletStateToShow?.account?.address,
39
+ wallet: wallet ? Object.assign({}, wallet, {
40
+ walletState: chainWalletStateToShow?.walletState,
41
+ connect: () => connect(currentWalletName, chainName),
42
+ getAccount: () => getAccount(currentWalletName, chainName)
43
+ }) : undefined,
44
+ rpcEndpoint: chainWalletStateToShow?.rpcEndpoint,
45
+ getSigningClient: () => getSigningClient(currentWalletName, chainName),
80
46
  };
81
47
  };
82
48
  exports.useChain = useChain;
@@ -2,44 +2,33 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useChainWallet = void 0;
4
4
  const useWalletManager_1 = require("./useWalletManager");
5
- const useAccount_1 = require("./useAccount");
6
- const useInterchainClient_1 = require("./useInterchainClient");
7
- const useRpcEndpoint_1 = require("./useRpcEndpoint");
8
- const core_1 = require("@interchain-kit/core");
9
5
  const useChainWallet = (chainName, walletName) => {
10
- const walletManager = (0, useWalletManager_1.useWalletManager)();
11
- const walletRepository = walletManager.getWalletRepositoryByName(walletName);
12
- const chainAccount = walletRepository.getChainAccountByName(chainName);
13
- const rpcEndpointHook = (0, useRpcEndpoint_1.useRpcEndpoint)(chainName, walletName);
14
- const accountHook = (0, useAccount_1.useAccount)(chainName, walletName);
15
- const signingClientHook = (0, useInterchainClient_1.useInterchainClient)(chainName, walletName);
6
+ const { assetLists, disconnect, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = (0, useWalletManager_1.useWalletManager)();
7
+ const chain = getChainByName(chainName);
8
+ const wallet = getWalletByName(walletName);
9
+ const assetList = assetLists.find(a => a.chainName === chainName);
10
+ const chainWalletStateToShow = getChainWalletState(walletName, chainName);
16
11
  return {
17
- connect: () => {
18
- if (!chainAccount && chainAccount.walletState === core_1.WalletState.Connected) {
19
- return;
20
- }
21
- chainAccount.connect();
22
- },
23
- disconnect: () => chainAccount.disconnect(),
24
- getRpcEndpoint: () => chainAccount.getRpcEndpoint(),
25
- status: chainAccount.walletState,
26
- username: accountHook.account?.username,
27
- message: chainAccount.errorMessage,
28
- logoUrl: walletManager.getChainLogoUrl(chainName),
29
- rpcEndpoint: rpcEndpointHook.rpcEndpoint,
30
- chain: chainAccount.chain,
31
- assetList: chainAccount.assetList,
32
- address: accountHook.account?.address,
33
- wallet: walletRepository,
34
- signingClient: signingClientHook.signingClient,
35
- getSigningClient: () => signingClientHook.getSigningClient(),
36
- isRpcEndpointLoading: rpcEndpointHook.isLoading,
37
- isAccountLoading: accountHook.isLoading,
38
- isSigningClientLoading: signingClientHook.isLoading,
39
- isLoading: rpcEndpointHook.isLoading || accountHook.isLoading || signingClientHook.isLoading,
40
- getRpcEndpointError: rpcEndpointHook.error,
41
- getSigningClientError: signingClientHook.error,
42
- getAccountError: accountHook.error
12
+ //for migration cosmos kit
13
+ connect: () => connect(walletName, chainName),
14
+ disconnect: () => disconnect(walletName, chainName),
15
+ getRpcEndpoint: () => getRpcEndpoint(walletName, chainName),
16
+ status: chainWalletStateToShow?.walletState,
17
+ username: chainWalletStateToShow?.account?.username,
18
+ message: chainWalletStateToShow?.errorMessage,
19
+ // new api
20
+ logoUrl: getChainLogoUrl(chainName),
21
+ chain,
22
+ assetList,
23
+ address: chainWalletStateToShow?.account?.address,
24
+ wallet: wallet ? Object.assign({}, wallet, {
25
+ walletState: chainWalletStateToShow?.walletState,
26
+ connect: () => connect(walletName, chainName),
27
+ disconnect: () => disconnect(walletName, chainName),
28
+ getAccount: () => getAccount(walletName, chainName)
29
+ }) : undefined,
30
+ rpcEndpoint: chainWalletStateToShow?.rpcEndpoint,
31
+ getSigningClient: () => getSigningClient(walletName, chainName),
43
32
  };
44
33
  };
45
34
  exports.useChainWallet = useChainWallet;
@@ -1,2 +1 @@
1
- import { WalletManager } from '@interchain-kit/core';
2
- export declare const useWalletManager: () => WalletManager;
1
+ export declare const useWalletManager: () => import("..").InterchainStore;
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useWalletManager = void 0;
4
4
  const provider_1 = require("../provider");
5
- const helpers_1 = require("../utils/helpers");
5
+ const zustand_1 = require("zustand");
6
6
  const useWalletManager = () => {
7
- const { walletManager } = (0, provider_1.useInterchainWalletContext)();
8
- return (0, helpers_1.bindAllMethodsToContext)(walletManager);
7
+ const store = (0, provider_1.useInterchainWalletContext)();
8
+ return (0, zustand_1.useStore)(store);
9
9
  };
10
10
  exports.useWalletManager = useWalletManager;
package/index.d.ts CHANGED
@@ -3,3 +3,4 @@ export * from './hooks';
3
3
  export * from './types';
4
4
  export * from './enum';
5
5
  export * from './modal';
6
+ export * from './store';
package/index.js CHANGED
@@ -19,3 +19,4 @@ __exportStar(require("./hooks"), exports);
19
19
  __exportStar(require("./types"), exports);
20
20
  __exportStar(require("./enum"), exports);
21
21
  __exportStar(require("./modal"), exports);
22
+ __exportStar(require("./store"), exports);
package/modal/modal.js CHANGED
@@ -8,73 +8,69 @@ const hooks_1 = require("../hooks");
8
8
  const react_1 = require("react");
9
9
  const core_1 = require("@interchain-kit/core");
10
10
  const react_2 = require("@interchain-ui/react");
11
- const useCurrentChainWallet_1 = require("../hooks/useCurrentChainWallet");
12
11
  const WalletModal = () => {
13
12
  const { modalIsOpen, open, close } = (0, provider_1.useWalletModal)();
14
- const walletManager = (0, hooks_1.useWalletManager)();
15
- const handleSelectWallet = async (wallet) => {
16
- walletManager.currentWalletName = wallet.info.name;
17
- const currentWallet = walletManager
18
- .getWalletRepositoryByName(wallet.info.name)
19
- .getChainAccountByName(walletManager.currentChainName);
20
- console.log(wallet.info.name, walletManager.currentChainName, Boolean(currentWallet));
13
+ const { currentWalletName, currentChainName, wallets, setCurrentWalletName, connect, getAccount, getWalletByName, } = (0, hooks_1.useWalletManager)();
14
+ const handleSelectWallet = async (selectedWallet) => {
15
+ const walletToView = wallets.find((w) => w.info.name === selectedWallet.info.name);
16
+ setCurrentWalletName(selectedWallet.info.name);
21
17
  setModalView({
22
- header: (0, jsx_runtime_1.jsx)(views_1.ConnectingHeader, { wallet: wallet, onBack: gotoWalletList }),
23
- content: (0, jsx_runtime_1.jsx)(views_1.ConnectingContent, { wallet: wallet }),
18
+ header: ((0, jsx_runtime_1.jsx)(views_1.ConnectingHeader, { wallet: walletToView, onBack: gotoWalletList })),
19
+ content: (0, jsx_runtime_1.jsx)(views_1.ConnectingContent, { wallet: walletToView }),
24
20
  });
25
- if (currentWallet?.wallet?.info.mode === "extension" &&
26
- !(currentWallet?.wallet).isExtensionInstalled) {
21
+ if (walletToView?.info.mode === "extension" &&
22
+ !walletToView.isExtensionInstalled) {
27
23
  setModalView({
28
- header: ((0, jsx_runtime_1.jsx)(views_1.NotExistHeader, { wallet: currentWallet, onBack: gotoWalletList })),
29
- content: (0, jsx_runtime_1.jsx)(views_1.NotExistContent, { wallet: currentWallet }),
24
+ header: ((0, jsx_runtime_1.jsx)(views_1.NotExistHeader, { wallet: walletToView, onBack: gotoWalletList })),
25
+ content: (0, jsx_runtime_1.jsx)(views_1.NotExistContent, { wallet: walletToView }),
30
26
  });
31
27
  return;
32
28
  }
33
29
  try {
34
- if (currentWallet?.wallet?.info.mode === "wallet-connect") {
35
- (currentWallet?.wallet).setOnPairingUriCreatedCallback(() => {
30
+ if (walletToView?.info.mode === "wallet-connect") {
31
+ walletToView.setOnPairingUriCreatedCallback(() => {
36
32
  setModalView({
37
33
  header: (0, jsx_runtime_1.jsx)(views_1.QRCodeHeader, { onBack: gotoWalletList }),
38
34
  content: (0, jsx_runtime_1.jsx)(views_1.QRCodeContent, {}),
39
35
  });
40
36
  });
41
- (currentWallet?.wallet).setPairingToConnect(wallet.pairing);
37
+ walletToView.setPairingToConnect(wallet.pairing);
42
38
  }
43
- await currentWallet?.connect();
44
- await currentWallet?.getAccount();
39
+ console.log({ currentChainName });
40
+ await connect(selectedWallet.info.name, currentChainName);
41
+ await getAccount(selectedWallet.info.name, currentChainName);
45
42
  setModalView({
46
- header: (0, jsx_runtime_1.jsx)(views_1.ConnectedHeader, { onBack: gotoWalletList }),
43
+ header: ((0, jsx_runtime_1.jsx)(views_1.ConnectedHeader, { wallet: walletToView, onBack: gotoWalletList })),
47
44
  content: (0, jsx_runtime_1.jsx)(views_1.ConnectedContent, {}),
48
45
  });
49
46
  }
50
47
  catch (error) {
51
48
  console.log(error);
52
49
  setModalView({
53
- header: (0, jsx_runtime_1.jsx)(views_1.RejectHeader, { wallet: wallet, onBack: gotoWalletList }),
54
- content: (0, jsx_runtime_1.jsx)(views_1.RejectContent, { wallet: wallet }),
50
+ header: (0, jsx_runtime_1.jsx)(views_1.RejectHeader, { wallet: walletToView, onBack: gotoWalletList }),
51
+ content: (0, jsx_runtime_1.jsx)(views_1.RejectContent, { wallet: walletToView }),
55
52
  });
56
53
  }
57
54
  };
58
- const defaultModalView = (0, react_1.useMemo)(() => {
59
- return {
60
- header: (0, jsx_runtime_1.jsx)(views_1.WalletListHeader, {}),
61
- content: (0, jsx_runtime_1.jsx)(views_1.WalletListContent, { onSelectWallet: handleSelectWallet }),
62
- };
63
- }, []);
55
+ const defaultModalView = {
56
+ header: (0, jsx_runtime_1.jsx)(views_1.WalletListHeader, {}),
57
+ content: (0, jsx_runtime_1.jsx)(views_1.WalletListContent, { onSelectWallet: handleSelectWallet }),
58
+ };
64
59
  const [modalView, setModalView] = (0, react_1.useState)(defaultModalView);
65
60
  const gotoWalletList = () => setModalView(defaultModalView);
66
- const currentWallet = (0, useCurrentChainWallet_1.useCurrentChainWallet)();
61
+ const { status } = (0, hooks_1.useChainWallet)(currentChainName, currentWalletName);
67
62
  (0, react_1.useEffect)(() => {
68
- if (modalIsOpen && currentWallet?.walletState === core_1.WalletState.Connected) {
63
+ const currentWallet = getWalletByName(currentWalletName);
64
+ if (modalIsOpen && status === core_1.WalletState.Connected) {
69
65
  setModalView({
70
- header: (0, jsx_runtime_1.jsx)(views_1.ConnectedHeader, { onBack: gotoWalletList }),
66
+ header: ((0, jsx_runtime_1.jsx)(views_1.ConnectedHeader, { wallet: currentWallet, onBack: gotoWalletList })),
71
67
  content: (0, jsx_runtime_1.jsx)(views_1.ConnectedContent, {}),
72
68
  });
73
69
  }
74
70
  else {
75
71
  setModalView(defaultModalView);
76
72
  }
77
- }, [modalIsOpen]);
73
+ }, [modalIsOpen, status]);
78
74
  return ((0, jsx_runtime_1.jsx)(react_2.ConnectModal, { isOpen: modalIsOpen, header: modalView.header, onOpen: open, onClose: close, children: modalView.content }));
79
75
  };
80
76
  exports.WalletModal = WalletModal;
@@ -1,4 +1,6 @@
1
- export declare const ConnectedHeader: ({ onBack }: {
1
+ import { BaseWallet } from "@interchain-kit/core";
2
+ export declare const ConnectedHeader: ({ wallet, onBack, }: {
3
+ wallet: BaseWallet;
2
4
  onBack: () => void;
3
5
  }) => import("react/jsx-runtime").JSX.Element;
4
6
  export declare const ConnectedContent: () => import("react/jsx-runtime").JSX.Element;
@@ -7,31 +7,29 @@ const hooks_1 = require("../../hooks");
7
7
  const provider_1 = require("../provider");
8
8
  const utils_1 = require("../../utils");
9
9
  const Astronaut_1 = require("./Astronaut");
10
- const useCurrentChainWallet_1 = require("../../hooks/useCurrentChainWallet");
11
- const ConnectedHeader = ({ onBack }) => {
12
- const currentWallet = (0, useCurrentChainWallet_1.useCurrentChainWallet)();
10
+ const ConnectedHeader = ({ wallet, onBack, }) => {
13
11
  const { close } = (0, provider_1.useWalletModal)();
14
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: currentWallet?.info?.prettyName || "", hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
12
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: wallet?.info?.prettyName || "", hasBackButton: true, onClose: close, onBack: onBack, closeButtonProps: { onClick: close } }));
15
13
  };
16
14
  exports.ConnectedHeader = ConnectedHeader;
17
15
  const ConnectedContent = () => {
18
- const currentWallet = (0, useCurrentChainWallet_1.useCurrentChainWallet)();
19
- const walletManager = (0, hooks_1.useWalletManager)();
20
- const { account } = (0, hooks_1.useAccount)(walletManager.currentChainName, currentWallet?.info?.name);
16
+ const { currentChainName, currentWalletName } = (0, hooks_1.useWalletManager)();
17
+ console.log({ currentChainName, currentWalletName });
18
+ const { address, username, wallet } = (0, hooks_1.useChainWallet)(currentChainName, currentWalletName);
21
19
  const { close } = (0, provider_1.useWalletModal)();
22
- if (!currentWallet) {
20
+ if (!wallet) {
23
21
  return null;
24
22
  }
25
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { wallet: (0, utils_1.getWalletInfo)(currentWallet), status: "Connected", connectedInfo: {
26
- name: account?.username || "Wallet",
23
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { wallet: (0, utils_1.getWalletInfo)(wallet), status: "Connected", connectedInfo: {
24
+ name: username || "Wallet",
27
25
  avatar: ((0, jsx_runtime_1.jsx)(Astronaut_1.AstronautSvg, { style: {
28
26
  fontSize: "inherit",
29
27
  width: "100%",
30
28
  height: "100%",
31
29
  } })),
32
- address: account?.address,
30
+ address: address,
33
31
  }, onDisconnect: async () => {
34
- await currentWallet.disconnect();
32
+ await wallet.disconnect(currentChainName);
35
33
  close();
36
34
  } }));
37
35
  };
@@ -6,20 +6,19 @@ const react_1 = require("@interchain-ui/react");
6
6
  const hooks_1 = require("../../hooks");
7
7
  const provider_1 = require("../provider");
8
8
  const QRCodeHeader = ({ onBack }) => {
9
- const currentWallet = (0, hooks_1.useCurrentWallet)();
10
- const walletManager = (0, hooks_1.useWalletManager)();
9
+ const { currentChainName, currentWalletName, getWalletByName, disconnect } = (0, hooks_1.useWalletManager)();
11
10
  const { close } = (0, provider_1.useWalletModal)();
11
+ const currentWallet = getWalletByName(currentWalletName);
12
12
  return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalHead, { title: currentWallet?.info?.prettyName || "", hasBackButton: true, onClose: () => void 0, onBack: async () => {
13
- await walletManager.disconnect(currentWallet?.info?.name || "");
13
+ await disconnect(currentWallet?.info?.name || "", currentChainName);
14
14
  onBack();
15
15
  }, closeButtonProps: { onClick: close } }));
16
16
  };
17
17
  exports.QRCodeHeader = QRCodeHeader;
18
18
  const QRCodeContent = () => {
19
- const currentWalletRepository = (0, hooks_1.useCurrentWallet)();
20
- const currentWallet = currentWalletRepository.wallet;
21
- const walletManager = (0, hooks_1.useWalletManager)();
19
+ const { currentChainName, currentWalletName, getWalletByName, connect } = (0, hooks_1.useWalletManager)();
20
+ const currentWallet = getWalletByName(currentWalletName);
22
21
  const data = currentWallet.pairingUri;
23
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalQRCode, { status: data ? "Done" : "Pending", link: data, description: "Open App to connect", errorTitle: "errorTitle", errorDesc: currentWallet.errorMessage || "", onRefresh: () => walletManager.connect(currentWallet?.info?.name || "") }));
22
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalQRCode, { status: data ? "Done" : "Pending", link: data, description: "Open App to connect", errorTitle: "errorTitle", errorDesc: currentWallet.errorMessage || "", onRefresh: () => connect(currentWallet?.info?.name || "", currentChainName) }));
24
23
  };
25
24
  exports.QRCodeContent = QRCodeContent;
@@ -14,6 +14,8 @@ exports.RejectHeader = RejectHeader;
14
14
  const RejectContent = ({ wallet }) => {
15
15
  const walletManager = (0, hooks_1.useWalletManager)();
16
16
  const { close } = (0, provider_1.useWalletModal)();
17
- return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { status: "Rejected", wallet: (0, utils_1.getWalletInfo)(wallet), contentHeader: "Request Rejected", contentDesc: wallet.errorMessage || "Connection permission is denied.", onConnect: () => walletManager.connect(wallet.info.name).then(close) }));
17
+ return ((0, jsx_runtime_1.jsx)(react_1.ConnectModalStatus, { status: "Rejected", wallet: (0, utils_1.getWalletInfo)(wallet), contentHeader: "Request Rejected", contentDesc: wallet.errorMessage || "Connection permission is denied.", onConnect: () => walletManager
18
+ .connect(wallet.info.name, walletManager.currentChainName)
19
+ .then(close) }));
18
20
  };
19
21
  exports.RejectContent = RejectContent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interchain-kit/react",
3
- "version": "0.0.1-beta.52",
3
+ "version": "0.0.1-beta.53",
4
4
  "author": "cosmology-tech <developers@cosmology.zone>",
5
5
  "description": "interchain-kit wallet connector react package",
6
6
  "main": "index.js",
@@ -28,12 +28,12 @@
28
28
  "lint": "eslint . --fix",
29
29
  "test": "jest",
30
30
  "test:watch": "jest --watch",
31
- "dev": "tsc -w --preserveWatchOutput"
31
+ "dev": "tsc -w --preserveWatchOutput -p tsconfig.esm.json"
32
32
  },
33
33
  "keywords": [],
34
34
  "dependencies": {
35
35
  "@chain-registry/v2-types": "^0.53.40",
36
- "@interchain-kit/core": "0.0.1-beta.52",
36
+ "@interchain-kit/core": "0.0.1-beta.53",
37
37
  "@interchain-ui/react": "1.26.1",
38
38
  "@interchainjs/cosmos": "1.6.3",
39
39
  "@interchainjs/cosmos-types": "1.6.3",
@@ -46,7 +46,8 @@
46
46
  "interchainjs": "1.6.3",
47
47
  "observable-slim": "^0.1.6",
48
48
  "react": "^18.3.1",
49
- "react-dom": "^18.3.1"
49
+ "react-dom": "^18.3.1",
50
+ "zustand": "^5.0.3"
50
51
  },
51
- "gitHead": "b88068536c1230bf52e8288237862416a42adf7c"
52
+ "gitHead": "cb214404a1917de214d4db94b86a34db986e3d3a"
52
53
  }
package/provider.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
- import { BaseWallet, SignerOptions, WalletManager, EndpointOptions } from "@interchain-kit/core";
2
+ import { BaseWallet, SignerOptions, EndpointOptions } from "@interchain-kit/core";
3
3
  import { AssetList, Chain } from "@chain-registry/v2-types";
4
- type InterchainWalletContextType = {
5
- walletManager: WalletManager;
6
- };
4
+ import { InterchainStore } from "./store";
5
+ import { StoreApi } from "zustand";
6
+ type InterchainWalletContextType = StoreApi<InterchainStore>;
7
7
  type InterchainWalletProviderProps = {
8
8
  chains: Chain[];
9
9
  assetLists: AssetList[];
package/provider.js CHANGED
@@ -6,19 +6,16 @@ const react_1 = require("react");
6
6
  const react_2 = require("react");
7
7
  const core_1 = require("@interchain-kit/core");
8
8
  const modal_1 = require("./modal");
9
+ const store_1 = require("./store");
9
10
  const InterchainWalletContext = (0, react_2.createContext)(null);
10
11
  const ChainProvider = ({ chains, assetLists, wallets, signerOptions, endpointOptions, children, }) => {
11
- const [_, forceRender] = (0, react_1.useState)({});
12
- const walletManager = (0, react_1.useMemo)(() => {
13
- return new core_1.WalletManager(chains, assetLists, wallets, signerOptions, endpointOptions, () => forceRender({}));
14
- }, []);
12
+ // const [_, forceRender] = useState({});
13
+ const walletManager = new core_1.WalletManager(chains, assetLists, wallets, signerOptions, endpointOptions);
14
+ const store = (0, react_1.useRef)((0, store_1.createInterchainStore)(walletManager));
15
15
  (0, react_1.useEffect)(() => {
16
16
  walletManager.init();
17
17
  }, []);
18
- if (walletManager.state === core_1.WalletManagerState.Initializing) {
19
- return (0, jsx_runtime_1.jsx)("div", { children: "Interchain Kit Initializing..." });
20
- }
21
- return ((0, jsx_runtime_1.jsx)(InterchainWalletContext.Provider, { value: { walletManager }, children: (0, jsx_runtime_1.jsx)(modal_1.WalletModalProvider, { children: children }) }));
18
+ return ((0, jsx_runtime_1.jsx)(InterchainWalletContext.Provider, { value: store.current, children: (0, jsx_runtime_1.jsx)(modal_1.WalletModalProvider, { children: children }) }));
22
19
  };
23
20
  exports.ChainProvider = ChainProvider;
24
21
  const useInterchainWalletContext = () => {
@@ -0,0 +1,35 @@
1
+ import { AssetList, Chain } from "@chain-registry/v2-types";
2
+ import { BaseWallet, EndpointOptions, SignerOptions, WalletAccount, WalletManager, WalletState } from "@interchain-kit/core";
3
+ import { SignerOptions as InterchainSignerOptions } from '@interchainjs/cosmos/types/signing-client';
4
+ import { HttpEndpoint } from '@interchainjs/types';
5
+ type ChainWalletState = {
6
+ chainName: string;
7
+ walletName: string;
8
+ walletState: WalletState;
9
+ rpcEndpoint: string | HttpEndpoint;
10
+ errorMessage: string;
11
+ signerOption: InterchainSignerOptions;
12
+ account: WalletAccount;
13
+ };
14
+ export interface InterchainStore extends WalletManager {
15
+ chainWalletState: ChainWalletState[];
16
+ currentWalletName: string;
17
+ currentChainName: string;
18
+ setCurrentChainName: (chainName: string) => void;
19
+ setCurrentWalletName: (walletName: string) => void;
20
+ getDraftChainWalletState: (state: InterchainStore, walletName: string, chainName: string) => ChainWalletState;
21
+ getChainWalletState: (walletName: string, chainName: string) => ChainWalletState | undefined;
22
+ updateChainWalletState: (walletName: string, chainName: string, data: Partial<ChainWalletState>) => void;
23
+ }
24
+ export type InterchainStoreData = {
25
+ chains: Chain[];
26
+ assetLists: AssetList[];
27
+ wallets: BaseWallet[];
28
+ signerOptions: SignerOptions;
29
+ endpointOptions: EndpointOptions;
30
+ };
31
+ export declare const createInterchainStore: (walletManager: WalletManager) => Omit<import("zustand").StoreApi<InterchainStore>, "setState"> & {
32
+ setState(nextStateOrUpdater: InterchainStore | Partial<InterchainStore> | ((state: import("immer").WritableDraft<InterchainStore>) => void), shouldReplace?: false): void;
33
+ setState(nextStateOrUpdater: InterchainStore | ((state: import("immer").WritableDraft<InterchainStore>) => void), shouldReplace: true): void;
34
+ };
35
+ export {};