@interchain-kit/react 0.0.1-beta.57 → 0.0.1-beta.59

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.
@@ -1,6 +1,7 @@
1
1
  import { useWalletModal } from "../modal";
2
2
  import { useWalletManager } from './useWalletManager';
3
3
  import { ChainNameNotExist } from '@interchain-kit/core';
4
+ import { ChainWallet } from '../store/chain-wallet';
4
5
  export const useChain = (chainName) => {
5
6
  const { assetLists, currentWalletName, disconnect, setCurrentChainName, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = useWalletManager();
6
7
  const chain = getChainByName(chainName);
@@ -33,12 +34,7 @@ export const useChain = (chainName) => {
33
34
  chain,
34
35
  assetList,
35
36
  address: chainWalletStateToShow?.account?.address,
36
- wallet: wallet ? Object.assign(wallet, {
37
- walletState: chainWalletStateToShow?.walletState,
38
- connect: () => connect(currentWalletName, chainName),
39
- disconnect: () => disconnect(currentWalletName, chainName),
40
- getAccount: () => getAccount(currentWalletName, chainName)
41
- }) : undefined,
37
+ wallet: new ChainWallet(wallet, () => connect(currentWalletName, chainName), () => disconnect(currentWalletName, chainName), () => getAccount(currentWalletName, chainName)),
42
38
  rpcEndpoint: chainWalletStateToShow?.rpcEndpoint,
43
39
  getSigningClient: () => getSigningClient(currentWalletName, chainName),
44
40
  };
@@ -1,6 +1,7 @@
1
1
  import { useWalletManager } from "./useWalletManager";
2
+ import { ChainWallet } from "../store/chain-wallet";
2
3
  export const useChainWallet = (chainName, walletName) => {
3
- const { assetLists, disconnect, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = useWalletManager();
4
+ const { assetLists, disconnect, setCurrentChainName, setCurrentWalletName, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = useWalletManager();
4
5
  const chain = getChainByName(chainName);
5
6
  const wallet = getWalletByName(walletName);
6
7
  const assetList = assetLists.find(a => a.chainName === chainName);
@@ -9,6 +10,8 @@ export const useChainWallet = (chainName, walletName) => {
9
10
  //for migration cosmos kit
10
11
  connect: async () => {
11
12
  await connect(walletName, chainName);
13
+ setCurrentWalletName(walletName);
14
+ setCurrentChainName(chainName);
12
15
  await getAccount(walletName, chainName);
13
16
  },
14
17
  disconnect: () => disconnect(walletName, chainName),
@@ -21,12 +24,7 @@ export const useChainWallet = (chainName, walletName) => {
21
24
  chain,
22
25
  assetList,
23
26
  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,
27
+ wallet: new ChainWallet(wallet, () => connect(walletName, chainName), () => disconnect(walletName, chainName), () => getAccount(currentWalletName, chainName)),
30
28
  rpcEndpoint: chainWalletStateToShow?.rpcEndpoint,
31
29
  getSigningClient: () => getSigningClient(walletName, chainName),
32
30
  };
@@ -5,7 +5,7 @@ import { useChainWallet, useWalletManager } from "../hooks";
5
5
  import { useEffect, useState } from "react";
6
6
  import { WalletState } from "@interchain-kit/core";
7
7
  import { ConnectModal } from "@interchain-ui/react";
8
- export const WalletModal = () => {
8
+ const WalletModal = () => {
9
9
  const { modalIsOpen, open, close } = useWalletModal();
10
10
  const { currentWalletName, currentChainName, wallets, setCurrentWalletName, connect, getAccount, getWalletByName, } = useWalletManager();
11
11
  const handleSelectWallet = async (selectedWallet) => {
@@ -64,9 +64,13 @@ export const WalletModal = () => {
64
64
  content: _jsx(ConnectedContent, {}),
65
65
  });
66
66
  }
67
- else {
68
- setModalView(defaultModalView);
67
+ else if (modalIsOpen && status === WalletState.Disconnected) {
68
+ setModalView({
69
+ header: _jsx(WalletListHeader, {}),
70
+ content: _jsx(WalletListContent, { onSelectWallet: handleSelectWallet }),
71
+ });
69
72
  }
70
73
  }, [modalIsOpen, status]);
71
74
  return (_jsx(ConnectModal, { isOpen: modalIsOpen, header: modalView.header, onOpen: open, onClose: close, children: modalView.content }));
72
75
  };
76
+ export default WalletModal;
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { createContext, useContext, useState } from "react";
3
- import { WalletModal } from "./modal";
2
+ import { createContext, lazy, useContext, useState } from "react";
3
+ const WalletModal = lazy(() => import(/*webpackChunkName: "interchain-kit-modal" */ "./modal"));
4
4
  const WalletModalContext = createContext(null);
5
- export const WalletModalProvider = ({ children }) => {
5
+ export const WalletModalProvider = ({ children, }) => {
6
6
  const [modalIsOpen, setModalIsOpen] = useState(false);
7
7
  const open = () => setModalIsOpen(true);
8
8
  const close = () => setModalIsOpen(false);
@@ -11,7 +11,7 @@ export const WalletModalProvider = ({ children }) => {
11
11
  export const useWalletModal = () => {
12
12
  const context = useContext(WalletModalContext);
13
13
  if (!context) {
14
- throw new Error('useWalletModal must be used within a WalletModalProvider');
14
+ throw new Error("useWalletModal must be used within a WalletModalProvider");
15
15
  }
16
16
  return context;
17
17
  };
@@ -0,0 +1,59 @@
1
+ import { BaseWallet } from "@interchain-kit/core";
2
+ export class ChainWallet extends BaseWallet {
3
+ originalWallet;
4
+ connectWithState;
5
+ disconnectWithState;
6
+ getAccountWithState;
7
+ constructor(originalWallet, connectWithState, disconnectWithState, getAccountWithState) {
8
+ super(originalWallet?.info);
9
+ this.originalWallet = originalWallet;
10
+ this.connectWithState = connectWithState;
11
+ this.disconnectWithState = disconnectWithState;
12
+ this.getAccountWithState = getAccountWithState;
13
+ }
14
+ async init(meta) {
15
+ return this.originalWallet.init(meta);
16
+ }
17
+ async connect(chainId) {
18
+ return this.connectWithState(chainId);
19
+ }
20
+ async disconnect(chainId) {
21
+ return this.disconnectWithState(chainId);
22
+ }
23
+ async getAccount(chainId) {
24
+ return this.getAccountWithState(chainId);
25
+ }
26
+ async getAccounts(chainIds) {
27
+ return this.originalWallet.getAccounts(chainIds);
28
+ }
29
+ async getSimpleAccount(chainId) {
30
+ return this.originalWallet.getSimpleAccount(chainId);
31
+ }
32
+ getOfflineSigner(chainId) {
33
+ return this.originalWallet.getOfflineSigner(chainId);
34
+ }
35
+ getOfflineSignerAmino(chainId) {
36
+ return this.originalWallet.getOfflineSignerAmino(chainId);
37
+ }
38
+ getOfflineSignerDirect(chainId) {
39
+ return this.originalWallet.getOfflineSignerDirect(chainId);
40
+ }
41
+ async signAmino(chainId, signer, signDoc, signOptions) {
42
+ return this.originalWallet.signAmino(chainId, signer, signDoc, signOptions);
43
+ }
44
+ async signArbitrary(chainId, signer, data) {
45
+ return this.originalWallet.signArbitrary(chainId, signer, data);
46
+ }
47
+ async verifyArbitrary(chainId, signer, data) {
48
+ return this.originalWallet.verifyArbitrary(chainId, signer, data);
49
+ }
50
+ async signDirect(chainId, signer, signDoc, signOptions) {
51
+ return this.originalWallet.signDirect(chainId, signer, signDoc, signOptions);
52
+ }
53
+ async sendTx(chainId, tx, mode) {
54
+ return this.originalWallet.sendTx(chainId, tx, mode);
55
+ }
56
+ async addSuggestChain(chain, assetLists) {
57
+ return this.originalWallet.addSuggestChain(chain, assetLists);
58
+ }
59
+ }
@@ -23,7 +23,7 @@ export const createInterchainStore = (walletManager) => {
23
23
  chainWalletState.push({
24
24
  chainName: chain.chainName,
25
25
  walletName: wallet.info.name,
26
- walletState: null,
26
+ walletState: WalletState.Disconnected,
27
27
  rpcEndpoint: "",
28
28
  errorMessage: "",
29
29
  signerOption: undefined,
@@ -77,18 +77,18 @@ export const createInterchainStore = (walletManager) => {
77
77
  draft.chains.push(newChain);
78
78
  const assetList = assetLists.find(a => a.chainName === newChain.chainName);
79
79
  draft.assetLists.push(assetList);
80
- }
81
- draft.wallets.forEach(w => {
82
- draft.chainWalletState.push({
83
- chainName: newChain.chainName,
84
- walletName: w.info.name,
85
- walletState: WalletState.Disconnected,
86
- rpcEndpoint: "",
87
- errorMessage: "",
88
- signerOption: undefined,
89
- account: undefined
80
+ draft.wallets.forEach(w => {
81
+ draft.chainWalletState.push({
82
+ chainName: newChain.chainName,
83
+ walletName: w.info.name,
84
+ walletState: WalletState.Disconnected,
85
+ rpcEndpoint: "",
86
+ errorMessage: "",
87
+ signerOption: signerOptions?.signing?.(newChain.chainName),
88
+ account: undefined
89
+ });
90
90
  });
91
- });
91
+ }
92
92
  draft.signerOptionMap[newChain.chainName] = signerOptions?.signing?.(newChain.chainName);
93
93
  draft.endpointOptionsMap[newChain.chainName] = endpointOptions?.endpoints?.[newChain.chainName];
94
94
  });
@@ -122,6 +122,9 @@ export const createInterchainStore = (walletManager) => {
122
122
  return account;
123
123
  },
124
124
  getRpcEndpoint: async (walletName, chainName) => {
125
+ const exist = get().getChainWalletState(walletName, chainName).rpcEndpoint;
126
+ if (exist)
127
+ return exist;
125
128
  const rpcEndpoint = await walletManager.getRpcEndpoint(walletName, chainName);
126
129
  get().updateChainWalletState(walletName, chainName, { rpcEndpoint });
127
130
  return rpcEndpoint;
@@ -1,2 +1 @@
1
- export * from './wallet';
2
1
  export * from './sign-client';
package/hooks/useChain.js CHANGED
@@ -4,6 +4,7 @@ exports.useChain = void 0;
4
4
  const modal_1 = require("../modal");
5
5
  const useWalletManager_1 = require("./useWalletManager");
6
6
  const core_1 = require("@interchain-kit/core");
7
+ const chain_wallet_1 = require("../store/chain-wallet");
7
8
  const useChain = (chainName) => {
8
9
  const { assetLists, currentWalletName, disconnect, setCurrentChainName, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = (0, useWalletManager_1.useWalletManager)();
9
10
  const chain = getChainByName(chainName);
@@ -36,12 +37,7 @@ const useChain = (chainName) => {
36
37
  chain,
37
38
  assetList,
38
39
  address: chainWalletStateToShow?.account?.address,
39
- wallet: wallet ? Object.assign(wallet, {
40
- walletState: chainWalletStateToShow?.walletState,
41
- connect: () => connect(currentWalletName, chainName),
42
- disconnect: () => disconnect(currentWalletName, chainName),
43
- getAccount: () => getAccount(currentWalletName, chainName)
44
- }) : undefined,
40
+ wallet: new chain_wallet_1.ChainWallet(wallet, () => connect(currentWalletName, chainName), () => disconnect(currentWalletName, chainName), () => getAccount(currentWalletName, chainName)),
45
41
  rpcEndpoint: chainWalletStateToShow?.rpcEndpoint,
46
42
  getSigningClient: () => getSigningClient(currentWalletName, chainName),
47
43
  };
@@ -2,8 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useChainWallet = void 0;
4
4
  const useWalletManager_1 = require("./useWalletManager");
5
+ const chain_wallet_1 = require("../store/chain-wallet");
5
6
  const useChainWallet = (chainName, walletName) => {
6
- const { assetLists, disconnect, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = (0, useWalletManager_1.useWalletManager)();
7
+ const { assetLists, disconnect, setCurrentChainName, setCurrentWalletName, getChainByName, getWalletByName, getChainWalletState, getChainLogoUrl, connect, getSigningClient, getRpcEndpoint, getAccount } = (0, useWalletManager_1.useWalletManager)();
7
8
  const chain = getChainByName(chainName);
8
9
  const wallet = getWalletByName(walletName);
9
10
  const assetList = assetLists.find(a => a.chainName === chainName);
@@ -12,6 +13,8 @@ const useChainWallet = (chainName, walletName) => {
12
13
  //for migration cosmos kit
13
14
  connect: async () => {
14
15
  await connect(walletName, chainName);
16
+ setCurrentWalletName(walletName);
17
+ setCurrentChainName(chainName);
15
18
  await getAccount(walletName, chainName);
16
19
  },
17
20
  disconnect: () => disconnect(walletName, chainName),
@@ -24,12 +27,7 @@ const useChainWallet = (chainName, walletName) => {
24
27
  chain,
25
28
  assetList,
26
29
  address: chainWalletStateToShow?.account?.address,
27
- wallet: wallet ? Object.assign(wallet, {
28
- walletState: chainWalletStateToShow?.walletState,
29
- connect: () => connect(walletName, chainName),
30
- disconnect: () => disconnect(walletName, chainName),
31
- getAccount: () => getAccount(walletName, chainName)
32
- }) : undefined,
30
+ wallet: new chain_wallet_1.ChainWallet(wallet, () => connect(walletName, chainName), () => disconnect(walletName, chainName), () => getAccount(currentWalletName, chainName)),
33
31
  rpcEndpoint: chainWalletStateToShow?.rpcEndpoint,
34
32
  getSigningClient: () => getSigningClient(walletName, chainName),
35
33
  };
package/modal/modal.d.ts CHANGED
@@ -1 +1,2 @@
1
- export declare const WalletModal: () => import("react/jsx-runtime").JSX.Element;
1
+ declare const WalletModal: () => import("react/jsx-runtime").JSX.Element;
2
+ export default WalletModal;
package/modal/modal.js CHANGED
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WalletModal = void 0;
4
3
  const jsx_runtime_1 = require("react/jsx-runtime");
5
4
  const views_1 = require("./views");
6
5
  const provider_1 = require("./provider");
@@ -67,10 +66,13 @@ const WalletModal = () => {
67
66
  content: (0, jsx_runtime_1.jsx)(views_1.ConnectedContent, {}),
68
67
  });
69
68
  }
70
- else {
71
- setModalView(defaultModalView);
69
+ else if (modalIsOpen && status === core_1.WalletState.Disconnected) {
70
+ setModalView({
71
+ header: (0, jsx_runtime_1.jsx)(views_1.WalletListHeader, {}),
72
+ content: (0, jsx_runtime_1.jsx)(views_1.WalletListContent, { onSelectWallet: handleSelectWallet }),
73
+ });
72
74
  }
73
75
  }, [modalIsOpen, status]);
74
76
  return ((0, jsx_runtime_1.jsx)(react_2.ConnectModal, { isOpen: modalIsOpen, header: modalView.header, onOpen: open, onClose: close, children: modalView.content }));
75
77
  };
76
- exports.WalletModal = WalletModal;
78
+ exports.default = WalletModal;
@@ -3,7 +3,7 @@ type WalletModalContextType = {
3
3
  open: () => void;
4
4
  close: () => void;
5
5
  };
6
- export declare const WalletModalProvider: ({ children }: {
6
+ export declare const WalletModalProvider: ({ children, }: {
7
7
  children: React.ReactNode;
8
8
  }) => import("react/jsx-runtime").JSX.Element;
9
9
  export declare const useWalletModal: () => WalletModalContextType;
package/modal/provider.js CHANGED
@@ -1,21 +1,54 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.useWalletModal = exports.WalletModalProvider = void 0;
4
37
  const jsx_runtime_1 = require("react/jsx-runtime");
5
38
  const react_1 = require("react");
6
- const modal_1 = require("./modal");
39
+ const WalletModal = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require(/*webpackChunkName: "interchain-kit-modal" */ "./modal"))));
7
40
  const WalletModalContext = (0, react_1.createContext)(null);
8
- const WalletModalProvider = ({ children }) => {
41
+ const WalletModalProvider = ({ children, }) => {
9
42
  const [modalIsOpen, setModalIsOpen] = (0, react_1.useState)(false);
10
43
  const open = () => setModalIsOpen(true);
11
44
  const close = () => setModalIsOpen(false);
12
- return ((0, jsx_runtime_1.jsxs)(WalletModalContext.Provider, { value: { modalIsOpen, open, close }, children: [children, (0, jsx_runtime_1.jsx)(modal_1.WalletModal, {})] }));
45
+ return ((0, jsx_runtime_1.jsxs)(WalletModalContext.Provider, { value: { modalIsOpen, open, close }, children: [children, (0, jsx_runtime_1.jsx)(WalletModal, {})] }));
13
46
  };
14
47
  exports.WalletModalProvider = WalletModalProvider;
15
48
  const useWalletModal = () => {
16
49
  const context = (0, react_1.useContext)(WalletModalContext);
17
50
  if (!context) {
18
- throw new Error('useWalletModal must be used within a WalletModalProvider');
51
+ throw new Error("useWalletModal must be used within a WalletModalProvider");
19
52
  }
20
53
  return context;
21
54
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interchain-kit/react",
3
- "version": "0.0.1-beta.57",
3
+ "version": "0.0.1-beta.59",
4
4
  "author": "cosmology-tech <developers@cosmology.zone>",
5
5
  "description": "interchain-kit wallet connector react package",
6
6
  "main": "index.js",
@@ -33,7 +33,7 @@
33
33
  "keywords": [],
34
34
  "dependencies": {
35
35
  "@chain-registry/v2-types": "^0.53.40",
36
- "@interchain-kit/core": "0.0.1-beta.57",
36
+ "@interchain-kit/core": "0.0.1-beta.59",
37
37
  "@interchain-ui/react": "1.26.1",
38
38
  "@interchainjs/cosmos": "1.6.3",
39
39
  "@interchainjs/cosmos-types": "1.6.3",
@@ -46,5 +46,5 @@
46
46
  "react-dom": "^18.3.1",
47
47
  "zustand": "^5.0.3"
48
48
  },
49
- "gitHead": "7a34f9aff73cea139a65acaa2eae91948e26e281"
49
+ "gitHead": "ac86d1a418797180f0376335a82402594c823627"
50
50
  }
@@ -0,0 +1,26 @@
1
+ import { Chain, AssetList } from "@chain-registry/v2-types";
2
+ import { BaseWallet, BroadcastMode, DirectSignDoc, SignOptions, SimpleAccount, WalletAccount } from "@interchain-kit/core";
3
+ import { OfflineSigner, OfflineAminoSigner, OfflineDirectSigner, AminoSignResponse, StdSignature, DirectSignResponse } from "@interchainjs/cosmos/types/wallet";
4
+ import { StdSignDoc } from "@interchainjs/types";
5
+ export declare class ChainWallet<TWallet extends BaseWallet> extends BaseWallet {
6
+ originalWallet: TWallet;
7
+ connectWithState: TWallet['connect'];
8
+ disconnectWithState: TWallet['disconnect'];
9
+ getAccountWithState: TWallet['getAccount'];
10
+ constructor(originalWallet: TWallet, connectWithState: TWallet['connect'], disconnectWithState: TWallet['disconnect'], getAccountWithState: TWallet['getAccount']);
11
+ init(meta?: unknown): Promise<void>;
12
+ connect(chainId: string | string[]): Promise<void>;
13
+ disconnect(chainId: string | string[]): Promise<void>;
14
+ getAccount(chainId: string): Promise<WalletAccount>;
15
+ getAccounts(chainIds: string[]): Promise<WalletAccount[]>;
16
+ getSimpleAccount(chainId: string): Promise<SimpleAccount>;
17
+ getOfflineSigner(chainId: string): OfflineSigner;
18
+ getOfflineSignerAmino(chainId: string): OfflineAminoSigner;
19
+ getOfflineSignerDirect(chainId: string): OfflineDirectSigner;
20
+ signAmino(chainId: string, signer: string, signDoc: StdSignDoc, signOptions?: SignOptions): Promise<AminoSignResponse>;
21
+ signArbitrary(chainId: string, signer: string, data: string | Uint8Array): Promise<StdSignature>;
22
+ verifyArbitrary(chainId: string, signer: string, data: string | Uint8Array): Promise<boolean>;
23
+ signDirect(chainId: string, signer: string, signDoc: DirectSignDoc, signOptions?: SignOptions): Promise<DirectSignResponse>;
24
+ sendTx(chainId: string, tx: Uint8Array, mode: BroadcastMode): Promise<Uint8Array>;
25
+ addSuggestChain(chain: Chain, assetLists: AssetList[]): Promise<void>;
26
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainWallet = void 0;
4
+ const core_1 = require("@interchain-kit/core");
5
+ class ChainWallet extends core_1.BaseWallet {
6
+ originalWallet;
7
+ connectWithState;
8
+ disconnectWithState;
9
+ getAccountWithState;
10
+ constructor(originalWallet, connectWithState, disconnectWithState, getAccountWithState) {
11
+ super(originalWallet?.info);
12
+ this.originalWallet = originalWallet;
13
+ this.connectWithState = connectWithState;
14
+ this.disconnectWithState = disconnectWithState;
15
+ this.getAccountWithState = getAccountWithState;
16
+ }
17
+ async init(meta) {
18
+ return this.originalWallet.init(meta);
19
+ }
20
+ async connect(chainId) {
21
+ return this.connectWithState(chainId);
22
+ }
23
+ async disconnect(chainId) {
24
+ return this.disconnectWithState(chainId);
25
+ }
26
+ async getAccount(chainId) {
27
+ return this.getAccountWithState(chainId);
28
+ }
29
+ async getAccounts(chainIds) {
30
+ return this.originalWallet.getAccounts(chainIds);
31
+ }
32
+ async getSimpleAccount(chainId) {
33
+ return this.originalWallet.getSimpleAccount(chainId);
34
+ }
35
+ getOfflineSigner(chainId) {
36
+ return this.originalWallet.getOfflineSigner(chainId);
37
+ }
38
+ getOfflineSignerAmino(chainId) {
39
+ return this.originalWallet.getOfflineSignerAmino(chainId);
40
+ }
41
+ getOfflineSignerDirect(chainId) {
42
+ return this.originalWallet.getOfflineSignerDirect(chainId);
43
+ }
44
+ async signAmino(chainId, signer, signDoc, signOptions) {
45
+ return this.originalWallet.signAmino(chainId, signer, signDoc, signOptions);
46
+ }
47
+ async signArbitrary(chainId, signer, data) {
48
+ return this.originalWallet.signArbitrary(chainId, signer, data);
49
+ }
50
+ async verifyArbitrary(chainId, signer, data) {
51
+ return this.originalWallet.verifyArbitrary(chainId, signer, data);
52
+ }
53
+ async signDirect(chainId, signer, signDoc, signOptions) {
54
+ return this.originalWallet.signDirect(chainId, signer, signDoc, signOptions);
55
+ }
56
+ async sendTx(chainId, tx, mode) {
57
+ return this.originalWallet.sendTx(chainId, tx, mode);
58
+ }
59
+ async addSuggestChain(chain, assetLists) {
60
+ return this.originalWallet.addSuggestChain(chain, assetLists);
61
+ }
62
+ }
63
+ exports.ChainWallet = ChainWallet;
package/store/index.js CHANGED
@@ -26,7 +26,7 @@ const createInterchainStore = (walletManager) => {
26
26
  chainWalletState.push({
27
27
  chainName: chain.chainName,
28
28
  walletName: wallet.info.name,
29
- walletState: null,
29
+ walletState: core_1.WalletState.Disconnected,
30
30
  rpcEndpoint: "",
31
31
  errorMessage: "",
32
32
  signerOption: undefined,
@@ -80,18 +80,18 @@ const createInterchainStore = (walletManager) => {
80
80
  draft.chains.push(newChain);
81
81
  const assetList = assetLists.find(a => a.chainName === newChain.chainName);
82
82
  draft.assetLists.push(assetList);
83
- }
84
- draft.wallets.forEach(w => {
85
- draft.chainWalletState.push({
86
- chainName: newChain.chainName,
87
- walletName: w.info.name,
88
- walletState: core_1.WalletState.Disconnected,
89
- rpcEndpoint: "",
90
- errorMessage: "",
91
- signerOption: undefined,
92
- account: undefined
83
+ draft.wallets.forEach(w => {
84
+ draft.chainWalletState.push({
85
+ chainName: newChain.chainName,
86
+ walletName: w.info.name,
87
+ walletState: core_1.WalletState.Disconnected,
88
+ rpcEndpoint: "",
89
+ errorMessage: "",
90
+ signerOption: signerOptions?.signing?.(newChain.chainName),
91
+ account: undefined
92
+ });
93
93
  });
94
- });
94
+ }
95
95
  draft.signerOptionMap[newChain.chainName] = signerOptions?.signing?.(newChain.chainName);
96
96
  draft.endpointOptionsMap[newChain.chainName] = endpointOptions?.endpoints?.[newChain.chainName];
97
97
  });
@@ -125,6 +125,9 @@ const createInterchainStore = (walletManager) => {
125
125
  return account;
126
126
  },
127
127
  getRpcEndpoint: async (walletName, chainName) => {
128
+ const exist = get().getChainWalletState(walletName, chainName).rpcEndpoint;
129
+ if (exist)
130
+ return exist;
128
131
  const rpcEndpoint = await walletManager.getRpcEndpoint(walletName, chainName);
129
132
  get().updateChainWalletState(walletName, chainName, { rpcEndpoint });
130
133
  return rpcEndpoint;
package/types/index.d.ts CHANGED
@@ -1,2 +1 @@
1
- export * from './wallet';
2
1
  export * from './sign-client';
package/types/index.js CHANGED
@@ -14,5 +14,4 @@ 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
- __exportStar(require("./wallet"), exports);
18
17
  __exportStar(require("./sign-client"), exports);
@@ -1 +0,0 @@
1
- export {};
@@ -1,11 +0,0 @@
1
- export function bindAllMethodsToContext(context) {
2
- return new Proxy(context, {
3
- get(target, prop, receiver) {
4
- const value = Reflect.get(target, prop, receiver);
5
- if (typeof value === 'function') {
6
- return value.bind(context);
7
- }
8
- return value;
9
- }
10
- });
11
- }
package/types/wallet.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import { BaseWallet } from "@interchain-kit/core";
2
- import { ConnectState } from "../enum";
3
- export type UseWalletReturnType = {
4
- wallet: BaseWallet;
5
- connect: (chainId: string | string[]) => void;
6
- connectState: ConnectState;
7
- };
8
- export type WalletState = {
9
- name: string;
10
- connectState: ConnectState;
11
- };
package/types/wallet.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +0,0 @@
1
- export declare function bindAllMethodsToContext<T extends object>(context: T): T;
package/utils/helpers.js DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bindAllMethodsToContext = bindAllMethodsToContext;
4
- function bindAllMethodsToContext(context) {
5
- return new Proxy(context, {
6
- get(target, prop, receiver) {
7
- const value = Reflect.get(target, prop, receiver);
8
- if (typeof value === 'function') {
9
- return value.bind(context);
10
- }
11
- return value;
12
- }
13
- });
14
- }