@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.
- package/esm/hooks/useSigningClient.js +2 -2
- package/esm/store/store.js +37 -5
- package/hooks/useSigningClient.js +2 -2
- package/package.json +7 -7
- package/store/store.js +37 -5
|
@@ -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 {
|
package/esm/store/store.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
37
|
+
"@interchain-kit/core": "^0.3.31",
|
|
38
38
|
"@interchain-ui/react": "1.26.1",
|
|
39
|
-
"@interchainjs/cosmos": "1.11.
|
|
40
|
-
"@interchainjs/cosmos-types": "1.11.
|
|
41
|
-
"@interchainjs/types": "1.11.
|
|
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.
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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();
|