@interchain-kit/react 0.3.30 → 0.3.31

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.
@@ -2,7 +2,7 @@ import { useWalletManager } from "./useWalletManager";
2
2
  import { useAsync } from "./useAsync";
3
3
  import { WalletState } from "@interchain-kit/core";
4
4
  export const useSigningClient = (chainName, walletName) => {
5
- const { getSigningClient, getChainWalletState, getRpcEndpoint } = useWalletManager();
5
+ const { getSigningClient, getChainWalletState, getRpcEndpoint, isReady } = useWalletManager();
6
6
  const chainWalletState = getChainWalletState(walletName, chainName);
7
7
  const { data, isLoading, error } = useAsync({
8
8
  queryKey: `signing-client-${chainName}-${walletName}`,
@@ -13,7 +13,7 @@ export const useSigningClient = (chainName, walletName) => {
13
13
  return getSigningClient(walletName, chainName);
14
14
  }
15
15
  },
16
- enabled: chainWalletState?.walletState === WalletState.Connected,
16
+ enabled: chainWalletState?.walletState === WalletState.Connected && isReady,
17
17
  disableCache: true,
18
18
  });
19
19
  return {
@@ -1,9 +1,11 @@
1
+ import { SigningClient } from '@interchainjs/cosmos/signing-client';
1
2
  import { clientNotExistError, WalletState } from "@interchain-kit/core";
2
3
  import { createStore } from "zustand";
3
4
  import { immer } from "zustand/middleware/immer";
4
5
  import { persist, createJSONStorage } from 'zustand/middleware';
5
6
  import { dedupeAsync } from '../utils';
6
7
  import { StatefulWallet } from './stateful-wallet';
8
+ import { AminoGenericOfflineSigner, DirectGenericOfflineSigner } from '@interchainjs/cosmos/types/wallet';
7
9
  const immerSyncUp = (newWalletManager) => {
8
10
  return (draft) => {
9
11
  draft.chains = newWalletManager.chains;
@@ -235,6 +237,10 @@ export const createInterchainStore = (walletManager) => {
235
237
  }
236
238
  const existedAccount = get().chainWalletState.find(cws => cws.walletName === walletName && cws.chainName === chainName)?.account;
237
239
  if (existedAccount) {
240
+ if (typeof existedAccount.pubkey === 'object') {
241
+ // return from localstorage need to restructure to uinit8Array
242
+ return { ...existedAccount, pubkey: Uint8Array.from({ ...existedAccount.pubkey, length: Object.keys(existedAccount.pubkey).length }) };
243
+ }
238
244
  return existedAccount;
239
245
  }
240
246
  return wallet.getAccount(chain.chainId);
@@ -260,17 +266,39 @@ export const createInterchainStore = (walletManager) => {
260
266
  getDownloadLink(walletName) {
261
267
  return walletManager.getDownloadLink(walletName);
262
268
  },
263
- getOfflineSigner(walletName, chainName) {
264
- return walletManager.getOfflineSigner(walletName, chainName);
269
+ async getOfflineSigner(walletName, chainName) {
270
+ const chain = get().chains.find(c => c.chainName === chainName);
271
+ const wallet = get().getStatefulWalletByName(walletName);
272
+ const walletToUse = wallet.originalWallet;
273
+ console.log(await get().getAccount(walletName, chainName));
274
+ const preferSignType = get().getPreferSignType(chainName);
275
+ let offlineSigner;
276
+ if (preferSignType === 'amino') {
277
+ offlineSigner = new AminoGenericOfflineSigner({
278
+ getAccounts: async () => [await get().getAccount(walletName, chainName)],
279
+ signAmino(signerAddress, signDoc) {
280
+ return walletToUse.signAmino(chain.chainId, signerAddress, signDoc, walletToUse.defaultSignOptions);
281
+ },
282
+ });
283
+ }
284
+ else if (preferSignType === 'direct') {
285
+ offlineSigner = new DirectGenericOfflineSigner({
286
+ getAccounts: async () => [await get().getAccount(walletName, chainName)],
287
+ signDirect(signerAddress, signDoc) {
288
+ return walletToUse.signDirect(chain.chainId, signerAddress, signDoc, walletToUse.defaultSignOptions);
289
+ }
290
+ });
291
+ }
292
+ return offlineSigner;
265
293
  },
266
294
  getPreferSignType(chainName) {
267
295
  const result = walletManager.getPreferSignType(chainName);
268
- set(immerSyncUp(walletManager));
296
+ // set(immerSyncUp(walletManager))
269
297
  return result;
270
298
  },
271
299
  getSignerOptions(chainName) {
272
300
  const result = walletManager.getSignerOptions(chainName);
273
- set(immerSyncUp(walletManager));
301
+ // set(immerSyncUp(walletManager))
274
302
  return result;
275
303
  },
276
304
  getWalletByName(walletName) {
@@ -280,7 +308,11 @@ export const createInterchainStore = (walletManager) => {
280
308
  return get().wallets.find(w => w.info.name === walletName);
281
309
  },
282
310
  async getSigningClient(walletName, chainName) {
283
- return walletManager.getSigningClient(walletName, chainName);
311
+ const chainWalletState = get().getChainWalletState(walletName, chainName);
312
+ const signerOptions = await get().getSignerOptions(chainName);
313
+ const offlineSigner = await get().getOfflineSigner(walletName, chainName);
314
+ const signingClient = await SigningClient.connectWithSigner(chainWalletState.rpcEndpoint, offlineSigner, signerOptions);
315
+ return signingClient;
284
316
  },
285
317
  getEnv() {
286
318
  return walletManager.getEnv();
@@ -5,7 +5,7 @@ const useWalletManager_1 = require("./useWalletManager");
5
5
  const useAsync_1 = require("./useAsync");
6
6
  const core_1 = require("@interchain-kit/core");
7
7
  const useSigningClient = (chainName, walletName) => {
8
- const { getSigningClient, getChainWalletState, getRpcEndpoint } = (0, useWalletManager_1.useWalletManager)();
8
+ const { getSigningClient, getChainWalletState, getRpcEndpoint, isReady } = (0, useWalletManager_1.useWalletManager)();
9
9
  const chainWalletState = getChainWalletState(walletName, chainName);
10
10
  const { data, isLoading, error } = (0, useAsync_1.useAsync)({
11
11
  queryKey: `signing-client-${chainName}-${walletName}`,
@@ -16,7 +16,7 @@ const useSigningClient = (chainName, walletName) => {
16
16
  return getSigningClient(walletName, chainName);
17
17
  }
18
18
  },
19
- enabled: chainWalletState?.walletState === core_1.WalletState.Connected,
19
+ enabled: chainWalletState?.walletState === core_1.WalletState.Connected && isReady,
20
20
  disableCache: true,
21
21
  });
22
22
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interchain-kit/react",
3
- "version": "0.3.30",
3
+ "version": "0.3.31",
4
4
  "author": "Hyperweb <developers@hyperweb.io>",
5
5
  "description": "interchain-kit wallet connector react package",
6
6
  "main": "index.js",
@@ -34,14 +34,14 @@
34
34
  "keywords": [],
35
35
  "dependencies": {
36
36
  "@chain-registry/v2-types": "^0.53.40",
37
- "@interchain-kit/core": "^0.3.30",
37
+ "@interchain-kit/core": "^0.3.31",
38
38
  "@interchain-ui/react": "1.26.1",
39
- "@interchainjs/cosmos": "1.11.9",
40
- "@interchainjs/cosmos-types": "1.11.9",
41
- "@interchainjs/types": "1.11.9",
39
+ "@interchainjs/cosmos": "1.11.11",
40
+ "@interchainjs/cosmos-types": "1.11.11",
41
+ "@interchainjs/types": "1.11.11",
42
42
  "@react-icons/all-files": "^4.1.0",
43
43
  "@walletconnect/types": "^2.17.3",
44
- "interchainjs": "1.11.9",
44
+ "interchainjs": "1.11.11",
45
45
  "zustand": "^5.0.3"
46
46
  },
47
47
  "devDependencies": {
@@ -64,5 +64,5 @@
64
64
  "react": "^19.0.0",
65
65
  "react-dom": "^19.0.0"
66
66
  },
67
- "gitHead": "82fcd0ffecf471e1ecb4c288b6752d04aa4f1777"
67
+ "gitHead": "ec8719da721263a2b3f1474aa106ce0da2425bf6"
68
68
  }
package/store/store.js CHANGED
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createInterchainStore = void 0;
4
+ const signing_client_1 = require("@interchainjs/cosmos/signing-client");
4
5
  const core_1 = require("@interchain-kit/core");
5
6
  const zustand_1 = require("zustand");
6
7
  const immer_1 = require("zustand/middleware/immer");
7
8
  const middleware_1 = require("zustand/middleware");
8
9
  const utils_1 = require("../utils");
9
10
  const stateful_wallet_1 = require("./stateful-wallet");
11
+ const wallet_1 = require("@interchainjs/cosmos/types/wallet");
10
12
  const immerSyncUp = (newWalletManager) => {
11
13
  return (draft) => {
12
14
  draft.chains = newWalletManager.chains;
@@ -238,6 +240,10 @@ const createInterchainStore = (walletManager) => {
238
240
  }
239
241
  const existedAccount = get().chainWalletState.find(cws => cws.walletName === walletName && cws.chainName === chainName)?.account;
240
242
  if (existedAccount) {
243
+ if (typeof existedAccount.pubkey === 'object') {
244
+ // return from localstorage need to restructure to uinit8Array
245
+ return { ...existedAccount, pubkey: Uint8Array.from({ ...existedAccount.pubkey, length: Object.keys(existedAccount.pubkey).length }) };
246
+ }
241
247
  return existedAccount;
242
248
  }
243
249
  return wallet.getAccount(chain.chainId);
@@ -263,17 +269,39 @@ const createInterchainStore = (walletManager) => {
263
269
  getDownloadLink(walletName) {
264
270
  return walletManager.getDownloadLink(walletName);
265
271
  },
266
- getOfflineSigner(walletName, chainName) {
267
- return walletManager.getOfflineSigner(walletName, chainName);
272
+ async getOfflineSigner(walletName, chainName) {
273
+ const chain = get().chains.find(c => c.chainName === chainName);
274
+ const wallet = get().getStatefulWalletByName(walletName);
275
+ const walletToUse = wallet.originalWallet;
276
+ console.log(await get().getAccount(walletName, chainName));
277
+ const preferSignType = get().getPreferSignType(chainName);
278
+ let offlineSigner;
279
+ if (preferSignType === 'amino') {
280
+ offlineSigner = new wallet_1.AminoGenericOfflineSigner({
281
+ getAccounts: async () => [await get().getAccount(walletName, chainName)],
282
+ signAmino(signerAddress, signDoc) {
283
+ return walletToUse.signAmino(chain.chainId, signerAddress, signDoc, walletToUse.defaultSignOptions);
284
+ },
285
+ });
286
+ }
287
+ else if (preferSignType === 'direct') {
288
+ offlineSigner = new wallet_1.DirectGenericOfflineSigner({
289
+ getAccounts: async () => [await get().getAccount(walletName, chainName)],
290
+ signDirect(signerAddress, signDoc) {
291
+ return walletToUse.signDirect(chain.chainId, signerAddress, signDoc, walletToUse.defaultSignOptions);
292
+ }
293
+ });
294
+ }
295
+ return offlineSigner;
268
296
  },
269
297
  getPreferSignType(chainName) {
270
298
  const result = walletManager.getPreferSignType(chainName);
271
- set(immerSyncUp(walletManager));
299
+ // set(immerSyncUp(walletManager))
272
300
  return result;
273
301
  },
274
302
  getSignerOptions(chainName) {
275
303
  const result = walletManager.getSignerOptions(chainName);
276
- set(immerSyncUp(walletManager));
304
+ // set(immerSyncUp(walletManager))
277
305
  return result;
278
306
  },
279
307
  getWalletByName(walletName) {
@@ -283,7 +311,11 @@ const createInterchainStore = (walletManager) => {
283
311
  return get().wallets.find(w => w.info.name === walletName);
284
312
  },
285
313
  async getSigningClient(walletName, chainName) {
286
- return walletManager.getSigningClient(walletName, chainName);
314
+ const chainWalletState = get().getChainWalletState(walletName, chainName);
315
+ const signerOptions = await get().getSignerOptions(chainName);
316
+ const offlineSigner = await get().getOfflineSigner(walletName, chainName);
317
+ const signingClient = await signing_client_1.SigningClient.connectWithSigner(chainWalletState.rpcEndpoint, offlineSigner, signerOptions);
318
+ return signingClient;
287
319
  },
288
320
  getEnv() {
289
321
  return walletManager.getEnv();