thirdweb 5.98.2 → 5.99.1-nightly-1985de89aae5196233789221ad06f1b6554d27fc-20250513000404
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/dist/cjs/exports/react.js +11 -8
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/exports/react.native.js +11 -8
- package/dist/cjs/exports/react.native.js.map +1 -1
- package/dist/cjs/exports/storage.js +3 -1
- package/dist/cjs/exports/storage.js.map +1 -1
- package/dist/cjs/exports/wallets/eip5792.js +7 -3
- package/dist/cjs/exports/wallets/eip5792.js.map +1 -1
- package/dist/cjs/react/core/hooks/wallets/useCapabilities.js +5 -6
- package/dist/cjs/react/core/hooks/wallets/useCapabilities.js.map +1 -1
- package/dist/cjs/react/core/hooks/wallets/useSendAndConfirmCalls.js +99 -0
- package/dist/cjs/react/core/hooks/wallets/useSendAndConfirmCalls.js.map +1 -0
- package/dist/cjs/react/core/hooks/wallets/useSendCalls.js +32 -40
- package/dist/cjs/react/core/hooks/wallets/useSendCalls.js.map +1 -1
- package/dist/cjs/react/core/hooks/wallets/useWaitForCallsReceipt.js +38 -0
- package/dist/cjs/react/core/hooks/wallets/useWaitForCallsReceipt.js.map +1 -0
- package/dist/cjs/react/core/providers/thirdweb-provider.js +4 -3
- package/dist/cjs/react/core/providers/thirdweb-provider.js.map +1 -1
- package/dist/cjs/utils/storage/inMemoryStorage.js +16 -0
- package/dist/cjs/utils/storage/inMemoryStorage.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/coinbase/coinbase-web.js +2 -85
- package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-calls-status.js +54 -15
- package/dist/cjs/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/cjs/wallets/eip5792/get-capabilities.js +21 -8
- package/dist/cjs/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/cjs/wallets/eip5792/send-and-confirm-calls.js +41 -0
- package/dist/cjs/wallets/eip5792/send-and-confirm-calls.js.map +1 -0
- package/dist/cjs/wallets/eip5792/send-calls.js +27 -14
- package/dist/cjs/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/cjs/wallets/eip5792/show-calls-status.js +8 -7
- package/dist/cjs/wallets/eip5792/show-calls-status.js.map +1 -1
- package/dist/cjs/wallets/eip5792/{wait-for-bundle.js → wait-for-calls-receipt.js} +23 -10
- package/dist/cjs/wallets/eip5792/wait-for-calls-receipt.js.map +1 -0
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js +15 -10
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +13 -3
- package/dist/cjs/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/in-app.js +5 -1
- package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js +4 -2
- package/dist/cjs/wallets/smart/lib/smart-wallet-capabilities.js.map +1 -1
- package/dist/esm/exports/react.js +5 -3
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/exports/react.native.js +5 -3
- package/dist/esm/exports/react.native.js.map +1 -1
- package/dist/esm/exports/storage.js +1 -0
- package/dist/esm/exports/storage.js.map +1 -1
- package/dist/esm/exports/wallets/eip5792.js +3 -1
- package/dist/esm/exports/wallets/eip5792.js.map +1 -1
- package/dist/esm/react/core/hooks/wallets/useCapabilities.js +5 -6
- package/dist/esm/react/core/hooks/wallets/useCapabilities.js.map +1 -1
- package/dist/esm/react/core/hooks/wallets/useSendAndConfirmCalls.js +96 -0
- package/dist/esm/react/core/hooks/wallets/useSendAndConfirmCalls.js.map +1 -0
- package/dist/esm/react/core/hooks/wallets/useSendCalls.js +32 -40
- package/dist/esm/react/core/hooks/wallets/useSendCalls.js.map +1 -1
- package/dist/esm/react/core/hooks/wallets/useWaitForCallsReceipt.js +35 -0
- package/dist/esm/react/core/hooks/wallets/useWaitForCallsReceipt.js.map +1 -0
- package/dist/esm/react/core/providers/thirdweb-provider.js +4 -3
- package/dist/esm/react/core/providers/thirdweb-provider.js.map +1 -1
- package/dist/esm/utils/storage/inMemoryStorage.js +13 -0
- package/dist/esm/utils/storage/inMemoryStorage.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/coinbase/coinbase-web.js +2 -81
- package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-calls-status.js +54 -15
- package/dist/esm/wallets/eip5792/get-calls-status.js.map +1 -1
- package/dist/esm/wallets/eip5792/get-capabilities.js +22 -9
- package/dist/esm/wallets/eip5792/get-capabilities.js.map +1 -1
- package/dist/esm/wallets/eip5792/send-and-confirm-calls.js +38 -0
- package/dist/esm/wallets/eip5792/send-and-confirm-calls.js.map +1 -0
- package/dist/esm/wallets/eip5792/send-calls.js +28 -15
- package/dist/esm/wallets/eip5792/send-calls.js.map +1 -1
- package/dist/esm/wallets/eip5792/show-calls-status.js +9 -8
- package/dist/esm/wallets/eip5792/show-calls-status.js.map +1 -1
- package/dist/esm/wallets/eip5792/{wait-for-bundle.js → wait-for-calls-receipt.js} +22 -9
- package/dist/esm/wallets/eip5792/wait-for-calls-receipt.js.map +1 -0
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js +15 -10
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-calls.js.map +1 -1
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js +13 -3
- package/dist/esm/wallets/in-app/core/eip5972/in-app-wallet-capabilities.js.map +1 -1
- package/dist/esm/wallets/in-app/web/in-app.js +5 -1
- package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
- package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js +4 -2
- package/dist/esm/wallets/smart/lib/smart-wallet-capabilities.js.map +1 -1
- package/dist/types/exports/react.d.ts +4 -3
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/exports/react.native.d.ts +4 -3
- package/dist/types/exports/react.native.d.ts.map +1 -1
- package/dist/types/exports/storage.d.ts +1 -0
- package/dist/types/exports/storage.d.ts.map +1 -1
- package/dist/types/exports/wallets/eip5792.d.ts +3 -1
- package/dist/types/exports/wallets/eip5792.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useCapabilities.d.ts +1 -0
- package/dist/types/react/core/hooks/wallets/useCapabilities.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useSendAndConfirmCalls.d.ts +66 -0
- package/dist/types/react/core/hooks/wallets/useSendAndConfirmCalls.d.ts.map +1 -0
- package/dist/types/react/core/hooks/wallets/useSendCalls.d.ts +8 -11
- package/dist/types/react/core/hooks/wallets/useSendCalls.d.ts.map +1 -1
- package/dist/types/react/core/hooks/wallets/useWaitForCallsReceipt.d.ts +32 -0
- package/dist/types/react/core/hooks/wallets/useWaitForCallsReceipt.d.ts.map +1 -0
- package/dist/types/react/core/providers/thirdweb-provider.d.ts.map +1 -1
- package/dist/types/utils/storage/inMemoryStorage.d.ts +3 -0
- package/dist/types/utils/storage/inMemoryStorage.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/coinbase/coinbase-web.d.ts +2 -30
- package/dist/types/wallets/coinbase/coinbase-web.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/get-calls-status.d.ts +5 -6
- package/dist/types/wallets/eip5792/get-calls-status.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/get-capabilities.d.ts +2 -1
- package/dist/types/wallets/eip5792/get-capabilities.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/send-and-confirm-calls.d.ts +39 -0
- package/dist/types/wallets/eip5792/send-and-confirm-calls.d.ts.map +1 -0
- package/dist/types/wallets/eip5792/send-calls.d.ts +12 -5
- package/dist/types/wallets/eip5792/send-calls.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/show-calls-status.d.ts +2 -2
- package/dist/types/wallets/eip5792/show-calls-status.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/types.d.ts +33 -4
- package/dist/types/wallets/eip5792/types.d.ts.map +1 -1
- package/dist/types/wallets/eip5792/{wait-for-bundle.d.ts → wait-for-calls-receipt.d.ts} +21 -9
- package/dist/types/wallets/eip5792/wait-for-calls-receipt.d.ts.map +1 -0
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts +3 -3
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-calls.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts +3 -3
- package/dist/types/wallets/in-app/core/eip5972/in-app-wallet-capabilities.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts +5 -1
- package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts +2 -2
- package/dist/types/wallets/smart/lib/smart-wallet-capabilities.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/react.native.ts +6 -3
- package/src/exports/react.ts +6 -3
- package/src/exports/storage.ts +1 -0
- package/src/exports/wallets/eip5792.ts +5 -3
- package/src/react/core/hooks/wallets/useCapabilities.ts +6 -6
- package/src/react/core/hooks/wallets/useSendAndConfirmCalls.ts +114 -0
- package/src/react/core/hooks/wallets/useSendCalls.ts +33 -50
- package/src/react/core/hooks/wallets/useWaitForCallsReceipt.ts +43 -0
- package/src/react/core/providers/thirdweb-provider.tsx +4 -3
- package/src/utils/storage/inMemoryStorage.ts +15 -0
- package/src/version.ts +1 -1
- package/src/wallets/coinbase/coinbase-web.ts +6 -117
- package/src/wallets/eip5792/get-calls-status.test.ts +27 -33
- package/src/wallets/eip5792/get-calls-status.ts +68 -19
- package/src/wallets/eip5792/get-capabilities.test.ts +10 -10
- package/src/wallets/eip5792/get-capabilities.ts +33 -11
- package/src/wallets/eip5792/send-and-confirm-calls.ts +48 -0
- package/src/wallets/eip5792/send-calls.test.ts +7 -7
- package/src/wallets/eip5792/send-calls.ts +43 -21
- package/src/wallets/eip5792/show-calls-status.test.ts +3 -3
- package/src/wallets/eip5792/show-calls-status.ts +13 -12
- package/src/wallets/eip5792/types.ts +43 -4
- package/src/wallets/eip5792/{wait-for-bundle.test.ts → wait-for-calls-receipt.test.ts} +19 -9
- package/src/wallets/eip5792/{wait-for-bundle.ts → wait-for-calls-receipt.ts} +26 -16
- package/src/wallets/in-app/core/eip5972/in-app-wallet-calls.ts +17 -16
- package/src/wallets/in-app/core/eip5972/in-app-wallet-capabilities.ts +14 -3
- package/src/wallets/in-app/web/in-app.ts +5 -1
- package/src/wallets/in-app/web/lib/in-app-backend.test.ts +27 -0
- package/src/wallets/smart/lib/smart-wallet-capabilities.ts +5 -2
- package/dist/cjs/react/core/hooks/wallets/useCallsStatus.js +0 -41
- package/dist/cjs/react/core/hooks/wallets/useCallsStatus.js.map +0 -1
- package/dist/cjs/wallets/eip5792/wait-for-bundle.js.map +0 -1
- package/dist/esm/react/core/hooks/wallets/useCallsStatus.js +0 -38
- package/dist/esm/react/core/hooks/wallets/useCallsStatus.js.map +0 -1
- package/dist/esm/wallets/eip5792/wait-for-bundle.js.map +0 -1
- package/dist/types/react/core/hooks/wallets/useCallsStatus.d.ts +0 -26
- package/dist/types/react/core/hooks/wallets/useCallsStatus.d.ts.map +0 -1
- package/dist/types/wallets/eip5792/wait-for-bundle.d.ts.map +0 -1
- package/src/react/core/hooks/wallets/useCallsStatus.ts +0 -48
@@ -3,16 +3,16 @@ import { ANVIL_CHAIN } from "../../../test/src/chains.js";
|
|
3
3
|
import { TEST_CLIENT } from "../../../test/src/test-clients.js";
|
4
4
|
import { TEST_ACCOUNT_A } from "../../../test/src/test-wallets.js";
|
5
5
|
import * as watchBlockNumberExports from "../../rpc/watchBlockNumber.js";
|
6
|
-
import * as getCallsStatusExports from "../../wallets/eip5792/get-calls-status.js";
|
7
6
|
import { METAMASK } from "../constants.js";
|
8
7
|
import { createWallet } from "../create-wallet.js";
|
8
|
+
import * as getCallsStatusExports from "./get-calls-status.js";
|
9
9
|
import type { GetCallsStatusResponse } from "./types.js";
|
10
|
-
import {
|
10
|
+
import { waitForCallsReceipt } from "./wait-for-calls-receipt.js";
|
11
11
|
|
12
|
-
const
|
12
|
+
const MOCK_CALL_ID = "0x1234567890abcdef";
|
13
13
|
|
14
14
|
const MOCK_SUCCESS_RECEIPT: GetCallsStatusResponse = {
|
15
|
-
status: "
|
15
|
+
status: "success",
|
16
16
|
receipts: [
|
17
17
|
{
|
18
18
|
logs: [],
|
@@ -25,11 +25,21 @@ const MOCK_SUCCESS_RECEIPT: GetCallsStatusResponse = {
|
|
25
25
|
gasUsed: 12345n,
|
26
26
|
},
|
27
27
|
],
|
28
|
+
atomic: false,
|
29
|
+
chainId: 1,
|
30
|
+
id: MOCK_CALL_ID,
|
31
|
+
version: "2.0.0",
|
32
|
+
statusCode: 200,
|
28
33
|
};
|
29
34
|
|
30
35
|
const MOCK_PENDING_RECEIPT: GetCallsStatusResponse = {
|
31
|
-
status: "
|
36
|
+
status: "pending",
|
32
37
|
receipts: [],
|
38
|
+
atomic: false,
|
39
|
+
chainId: 1,
|
40
|
+
id: MOCK_CALL_ID,
|
41
|
+
version: "2.0.0",
|
42
|
+
statusCode: 100,
|
33
43
|
};
|
34
44
|
|
35
45
|
const mockGetCallsStatus = vi.spyOn(getCallsStatusExports, "getCallsStatus");
|
@@ -61,10 +71,10 @@ describe("waitForBundle", () => {
|
|
61
71
|
mockGetCallsStatus.mockResolvedValueOnce(MOCK_SUCCESS_RECEIPT);
|
62
72
|
|
63
73
|
// can't `await` here because we still need to be able to increment the block number below
|
64
|
-
const res =
|
74
|
+
const res = waitForCallsReceipt({
|
65
75
|
chain: ANVIL_CHAIN,
|
66
76
|
client: TEST_CLIENT,
|
67
|
-
|
77
|
+
id: MOCK_CALL_ID,
|
68
78
|
wallet,
|
69
79
|
});
|
70
80
|
|
@@ -76,10 +86,10 @@ describe("waitForBundle", () => {
|
|
76
86
|
it("should reject with an error when bundle is not complete after waiting 10 blocks", async () => {
|
77
87
|
mockGetCallsStatus.mockRejectedValue(MOCK_PENDING_RECEIPT);
|
78
88
|
|
79
|
-
const result =
|
89
|
+
const result = waitForCallsReceipt({
|
80
90
|
chain: ANVIL_CHAIN,
|
81
91
|
client: TEST_CLIENT,
|
82
|
-
|
92
|
+
id: MOCK_CALL_ID,
|
83
93
|
wallet,
|
84
94
|
maxBlocksWaitTime: 10,
|
85
95
|
});
|
@@ -4,20 +4,18 @@ import { watchBlockNumber } from "../../rpc/watchBlockNumber.js";
|
|
4
4
|
import type { Prettify } from "../../utils/type-utils.js";
|
5
5
|
import type { Wallet } from "../interfaces/wallet.js";
|
6
6
|
import { getCallsStatus } from "./get-calls-status.js";
|
7
|
-
import type { GetCallsStatusResponse
|
8
|
-
|
7
|
+
import type { GetCallsStatusResponse } from "./types.js";
|
9
8
|
const DEFAULT_MAX_BLOCKS_WAIT_TIME = 100;
|
10
9
|
|
11
10
|
const map = new Map<string, Promise<GetCallsStatusResponse>>();
|
12
11
|
|
13
|
-
export type
|
14
|
-
|
15
|
-
wallet: Wallet;
|
12
|
+
export type WaitForCallsReceiptOptions = Prettify<{
|
13
|
+
id: string;
|
16
14
|
client: ThirdwebClient;
|
17
15
|
chain: Chain;
|
16
|
+
wallet: Wallet;
|
18
17
|
maxBlocksWaitTime?: number;
|
19
18
|
}>;
|
20
|
-
|
21
19
|
/**
|
22
20
|
* Waits for the [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792) bundle to be confirmed.
|
23
21
|
*
|
@@ -30,23 +28,35 @@ export type WaitForBundleOptions = Prettify<{
|
|
30
28
|
* @beta
|
31
29
|
* @example
|
32
30
|
* ```ts
|
33
|
-
* import {
|
34
|
-
* const result = await
|
31
|
+
* import { waitForCallsReceipt } from "thirdweb/wallets/eip5792";
|
32
|
+
* const result = await waitForCallsReceipt({
|
33
|
+
* client,
|
34
|
+
* chain,
|
35
|
+
* wallet,
|
36
|
+
* id: "0x123...",
|
37
|
+
* });
|
38
|
+
* ```
|
39
|
+
*
|
40
|
+
* Example with useSendCalls:
|
41
|
+
* ```ts
|
42
|
+
* const sendResult = await sendCalls({
|
35
43
|
* client,
|
36
44
|
* chain,
|
37
45
|
* wallet,
|
38
|
-
*
|
46
|
+
* calls: [...],
|
39
47
|
* });
|
48
|
+
* const confirmResult = await waitForCallsReceipt(sendResult);
|
49
|
+
* console.log("Transaction confirmed: ", confirmResult.receipts?.[0].transactionHash);
|
40
50
|
* ```
|
41
51
|
* @extension EIP5792
|
42
52
|
*/
|
43
|
-
export function
|
44
|
-
options:
|
53
|
+
export function waitForCallsReceipt(
|
54
|
+
options: WaitForCallsReceiptOptions,
|
45
55
|
): Promise<GetCallsStatusResponse> {
|
46
|
-
const {
|
56
|
+
const { id, chain, wallet, client } = options;
|
47
57
|
|
48
58
|
const chainId = chain.id;
|
49
|
-
const key = `${chainId}:calls_${
|
59
|
+
const key = `${chainId}:calls_${id}`;
|
50
60
|
const maxBlocksWaitTime =
|
51
61
|
options.maxBlocksWaitTime ?? DEFAULT_MAX_BLOCKS_WAIT_TIME;
|
52
62
|
|
@@ -74,14 +84,14 @@ export function waitForBundle(
|
|
74
84
|
const result = await getCallsStatus({
|
75
85
|
wallet,
|
76
86
|
client,
|
77
|
-
|
87
|
+
id,
|
78
88
|
});
|
79
|
-
|
80
|
-
if (result.status === "CONFIRMED") {
|
89
|
+
if (result.status === "success" || result.status === "failure") {
|
81
90
|
// stop the polling
|
82
91
|
unwatch();
|
83
92
|
// resolve the top level promise with the result
|
84
93
|
resolve(result);
|
94
|
+
return;
|
85
95
|
}
|
86
96
|
} catch {
|
87
97
|
// noop, we'll try again on the next blocks
|
@@ -10,7 +10,6 @@ import type { PreparedSendCall } from "../../../eip5792/send-calls.js";
|
|
10
10
|
import type {
|
11
11
|
GetCallsStatusResponse,
|
12
12
|
WalletCallReceipt,
|
13
|
-
WalletSendCallsId,
|
14
13
|
} from "../../../eip5792/types.js";
|
15
14
|
import type { Account, Wallet } from "../../../interfaces/wallet.js";
|
16
15
|
|
@@ -22,19 +21,19 @@ const bundlesToTransactions = new LruMap<Hex[]>(1000);
|
|
22
21
|
export async function inAppWalletSendCalls(args: {
|
23
22
|
account: Account;
|
24
23
|
calls: PreparedSendCall[];
|
25
|
-
}): Promise<
|
24
|
+
}): Promise<string> {
|
26
25
|
const { account, calls } = args;
|
27
26
|
|
28
27
|
const hashes: Hex[] = [];
|
29
|
-
const
|
30
|
-
bundlesToTransactions.set(
|
28
|
+
const id = randomBytesHex(65);
|
29
|
+
bundlesToTransactions.set(id, hashes);
|
31
30
|
if (account.sendBatchTransaction) {
|
32
31
|
const receipt = await sendBatchTransaction({
|
33
32
|
account,
|
34
33
|
transactions: calls,
|
35
34
|
});
|
36
35
|
hashes.push(receipt.transactionHash);
|
37
|
-
bundlesToTransactions.set(
|
36
|
+
bundlesToTransactions.set(id, hashes);
|
38
37
|
} else {
|
39
38
|
for (const tx of calls) {
|
40
39
|
const receipt = await sendAndConfirmTransaction({
|
@@ -42,11 +41,11 @@ export async function inAppWalletSendCalls(args: {
|
|
42
41
|
transaction: tx,
|
43
42
|
});
|
44
43
|
hashes.push(receipt.transactionHash);
|
45
|
-
bundlesToTransactions.set(
|
44
|
+
bundlesToTransactions.set(id, hashes);
|
46
45
|
}
|
47
46
|
}
|
48
47
|
|
49
|
-
return
|
48
|
+
return id;
|
50
49
|
}
|
51
50
|
|
52
51
|
/**
|
@@ -55,22 +54,22 @@ export async function inAppWalletSendCalls(args: {
|
|
55
54
|
export async function inAppWalletGetCallsStatus(args: {
|
56
55
|
wallet: Wallet;
|
57
56
|
client: ThirdwebClient;
|
58
|
-
|
57
|
+
id: string;
|
59
58
|
}): Promise<GetCallsStatusResponse> {
|
60
|
-
const { wallet, client,
|
59
|
+
const { wallet, client, id } = args;
|
61
60
|
|
62
61
|
const chain = wallet.getChain();
|
63
62
|
if (!chain) {
|
64
63
|
throw new Error("Failed to get calls status, no active chain found");
|
65
64
|
}
|
66
65
|
|
67
|
-
const bundle = bundlesToTransactions.get(
|
66
|
+
const bundle = bundlesToTransactions.get(id);
|
68
67
|
if (!bundle) {
|
69
68
|
throw new Error("Failed to get calls status, unknown bundle id");
|
70
69
|
}
|
71
70
|
|
72
71
|
const request = getRpcClient({ client, chain });
|
73
|
-
let status: "
|
72
|
+
let status: "pending" | "success" | "failure" = "success";
|
74
73
|
const receipts: (WalletCallReceipt<bigint, "success" | "reverted"> | null)[] =
|
75
74
|
await Promise.all(
|
76
75
|
bundle.map((hash) =>
|
@@ -88,7 +87,7 @@ export async function inAppWalletGetCallsStatus(args: {
|
|
88
87
|
transactionHash: receipt.transactionHash,
|
89
88
|
}))
|
90
89
|
.catch(() => {
|
91
|
-
status = "
|
90
|
+
status = "pending";
|
92
91
|
return null; // Return null if there's an error to filter out later
|
93
92
|
}),
|
94
93
|
),
|
@@ -96,9 +95,11 @@ export async function inAppWalletGetCallsStatus(args: {
|
|
96
95
|
|
97
96
|
return {
|
98
97
|
status,
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
98
|
+
statusCode: 200,
|
99
|
+
atomic: false,
|
100
|
+
chainId: chain.id,
|
101
|
+
id,
|
102
|
+
version: "2.0.0",
|
103
|
+
receipts: receipts.filter((r) => r !== null),
|
103
104
|
};
|
104
105
|
}
|
@@ -21,15 +21,26 @@ export function inAppWalletGetCapabilities(args: {
|
|
21
21
|
const sponsorGas =
|
22
22
|
config?.smartAccount && "sponsorGas" in config.smartAccount
|
23
23
|
? config.smartAccount.sponsorGas
|
24
|
-
:
|
24
|
+
: config?.executionMode
|
25
|
+
? config.executionMode.mode === "EIP4337" &&
|
26
|
+
config.executionMode.smartAccount &&
|
27
|
+
"sponsorGas" in config.executionMode.smartAccount
|
28
|
+
? config.executionMode.smartAccount.sponsorGas
|
29
|
+
: config.executionMode.mode === "EIP7702"
|
30
|
+
? config.executionMode.sponsorGas
|
31
|
+
: false
|
32
|
+
: false;
|
25
33
|
|
26
34
|
return {
|
27
35
|
[chain.id]: {
|
28
36
|
paymasterService: {
|
29
37
|
supported: sponsorGas,
|
30
38
|
},
|
31
|
-
|
32
|
-
|
39
|
+
atomic: {
|
40
|
+
status:
|
41
|
+
account?.sendBatchTransaction !== undefined
|
42
|
+
? "supported"
|
43
|
+
: "unsupported",
|
33
44
|
},
|
34
45
|
},
|
35
46
|
};
|
@@ -141,10 +141,14 @@ import type { InAppWalletCreationOptions } from "../core/wallet/types.js";
|
|
141
141
|
*
|
142
142
|
* ### Connect to a backend account
|
143
143
|
*
|
144
|
+
* for usage in backends, you might also need to provide a 'storage' to store auth tokens. In-memory usually works for most purposes.
|
145
|
+
*
|
144
146
|
* ```ts
|
145
147
|
* import { inAppWallet } from "thirdweb/wallets";
|
146
148
|
*
|
147
|
-
* const wallet = inAppWallet(
|
149
|
+
* const wallet = inAppWallet({
|
150
|
+
* storage: inMemoryStorage, // for usage in backends/scripts
|
151
|
+
* });
|
148
152
|
*
|
149
153
|
* const account = await wallet.connect({
|
150
154
|
* client,
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
2
|
+
import { TEST_CLIENT } from "~test/test-clients.js";
|
3
|
+
import { sepolia } from "../../../../chains/chain-definitions/sepolia.js";
|
4
|
+
import { inMemoryStorage } from "../../../../utils/storage/inMemoryStorage.js";
|
5
|
+
import { inAppWallet } from "../in-app.js";
|
6
|
+
|
7
|
+
describe("InAppWallet", () => {
|
8
|
+
it("should sign a message with backend strategy", async () => {
|
9
|
+
const wallet = inAppWallet({
|
10
|
+
smartAccount: {
|
11
|
+
chain: sepolia,
|
12
|
+
sponsorGas: true,
|
13
|
+
},
|
14
|
+
storage: inMemoryStorage,
|
15
|
+
});
|
16
|
+
const account = await wallet.connect({
|
17
|
+
client: TEST_CLIENT,
|
18
|
+
strategy: "backend",
|
19
|
+
walletSecret: "test-secret",
|
20
|
+
});
|
21
|
+
expect(account.address).toBeDefined();
|
22
|
+
const message = await account.signMessage({
|
23
|
+
message: "Hello, world!",
|
24
|
+
});
|
25
|
+
expect(message).toBeDefined();
|
26
|
+
});
|
27
|
+
});
|
@@ -23,8 +23,11 @@ export function smartWalletGetCapabilities(args: {
|
|
23
23
|
paymasterService: {
|
24
24
|
supported: "sponsorGas" in config ? config.sponsorGas : false,
|
25
25
|
},
|
26
|
-
|
27
|
-
|
26
|
+
atomic: {
|
27
|
+
status:
|
28
|
+
account?.sendBatchTransaction !== undefined
|
29
|
+
? "supported"
|
30
|
+
: "unsupported",
|
28
31
|
},
|
29
32
|
},
|
30
33
|
};
|
@@ -1,41 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.useCallsStatus = useCallsStatus;
|
4
|
-
const react_query_1 = require("@tanstack/react-query");
|
5
|
-
const get_calls_status_js_1 = require("../../../../wallets/eip5792/get-calls-status.js");
|
6
|
-
const useActiveWallet_js_1 = require("./useActiveWallet.js");
|
7
|
-
/**
|
8
|
-
* A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
|
9
|
-
*
|
10
|
-
* This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
|
11
|
-
*
|
12
|
-
* @returns a React Query object.
|
13
|
-
* @beta
|
14
|
-
* @example
|
15
|
-
* ```tsx
|
16
|
-
* import { useCallsStatus } from "thirdweb/react";
|
17
|
-
* const { data: status, isLoading } = useCallsStatus({ bundleId, client });
|
18
|
-
* ```
|
19
|
-
* @extension EIP5792
|
20
|
-
*/
|
21
|
-
function useCallsStatus(options) {
|
22
|
-
const { client, bundleId } = options;
|
23
|
-
const wallet = (0, useActiveWallet_js_1.useActiveWallet)();
|
24
|
-
return (0, react_query_1.useQuery)({
|
25
|
-
queryKey: [
|
26
|
-
"getCapabilities",
|
27
|
-
wallet?.getChain()?.id || -1,
|
28
|
-
wallet?.id,
|
29
|
-
],
|
30
|
-
queryFn: async () => {
|
31
|
-
if (!wallet) {
|
32
|
-
throw new Error("Failed to get calls status, no wallet connected");
|
33
|
-
}
|
34
|
-
return (0, get_calls_status_js_1.getCallsStatus)({ wallet, client, bundleId });
|
35
|
-
},
|
36
|
-
retry: false,
|
37
|
-
enabled: !!bundleId && wallet !== undefined,
|
38
|
-
...options.queryOptions,
|
39
|
-
});
|
40
|
-
}
|
41
|
-
//# sourceMappingURL=useCallsStatus.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useCallsStatus.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useCallsStatus.ts"],"names":[],"mappings":";;AAoBA,wCA2BC;AA/CD,uDAAsE;AAEtE,yFAAiF;AAEjF,6DAAuD;AAEvD;;;;;;;;;;;;;GAaG;AACH,SAAgB,cAAc,CAAC,OAO9B;IACC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,IAAA,oCAAe,GAAE,CAAC;IAEjC,OAAO,IAAA,sBAAQ,EAAC;QACd,QAAQ,EAAE;YACR,iBAAiB;YACjB,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5B,MAAM,EAAE,EAAE;SACF;QACV,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,IAAA,oCAAc,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,MAAM,KAAK,SAAS;QAC3C,GAAG,OAAO,CAAC,YAAY;KACxB,CAAC,CAAC;AACL,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"wait-for-bundle.js","sourceRoot":"","sources":["../../../../src/wallets/eip5792/wait-for-bundle.ts"],"names":[],"mappings":";;AA0CA,sCAuDC;AA/FD,uEAAiE;AAGjE,+DAAuD;AAGvD,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2C,CAAC;AAU/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,OAAO,UAAU,QAAQ,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GACrB,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAC;IAE5D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,mGAAmG;QACnG,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtE,oDAAoD;QACpD,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,IAAA,sCAAgB,EAAC;YAC/B,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,YAAY,EAAE,CAAC;gBACf,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;oBACtC,OAAO,EAAE,CAAC;oBACV,MAAM,CACJ,IAAI,KAAK,CAAC,8BAA8B,iBAAiB,SAAS,CAAC,CACpE,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAc,EAAC;wBAClC,MAAM;wBACN,MAAM;wBACN,QAAQ;qBACT,CAAC,CAAC;oBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,mBAAmB;wBACnB,OAAO,EAAE,CAAC;wBACV,gDAAgD;wBAChD,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;gBAC7C,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,wEAAwE;IAC1E,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
@@ -1,38 +0,0 @@
|
|
1
|
-
import { useQuery } from "@tanstack/react-query";
|
2
|
-
import { getCallsStatus } from "../../../../wallets/eip5792/get-calls-status.js";
|
3
|
-
import { useActiveWallet } from "./useActiveWallet.js";
|
4
|
-
/**
|
5
|
-
* A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
|
6
|
-
*
|
7
|
-
* This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
|
8
|
-
*
|
9
|
-
* @returns a React Query object.
|
10
|
-
* @beta
|
11
|
-
* @example
|
12
|
-
* ```tsx
|
13
|
-
* import { useCallsStatus } from "thirdweb/react";
|
14
|
-
* const { data: status, isLoading } = useCallsStatus({ bundleId, client });
|
15
|
-
* ```
|
16
|
-
* @extension EIP5792
|
17
|
-
*/
|
18
|
-
export function useCallsStatus(options) {
|
19
|
-
const { client, bundleId } = options;
|
20
|
-
const wallet = useActiveWallet();
|
21
|
-
return useQuery({
|
22
|
-
queryKey: [
|
23
|
-
"getCapabilities",
|
24
|
-
wallet?.getChain()?.id || -1,
|
25
|
-
wallet?.id,
|
26
|
-
],
|
27
|
-
queryFn: async () => {
|
28
|
-
if (!wallet) {
|
29
|
-
throw new Error("Failed to get calls status, no wallet connected");
|
30
|
-
}
|
31
|
-
return getCallsStatus({ wallet, client, bundleId });
|
32
|
-
},
|
33
|
-
retry: false,
|
34
|
-
enabled: !!bundleId && wallet !== undefined,
|
35
|
-
...options.queryOptions,
|
36
|
-
});
|
37
|
-
}
|
38
|
-
//# sourceMappingURL=useCallsStatus.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useCallsStatus.js","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useCallsStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,OAO9B;IACC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE;YACR,iBAAiB;YACjB,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5B,MAAM,EAAE,EAAE;SACF;QACV,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,MAAM,KAAK,SAAS;QAC3C,GAAG,OAAO,CAAC,YAAY;KACxB,CAAC,CAAC;AACL,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"wait-for-bundle.js","sourceRoot":"","sources":["../../../../src/wallets/eip5792/wait-for-bundle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAA2C,CAAC;AAU/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,GAAG,OAAO,UAAU,QAAQ,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GACrB,OAAO,CAAC,iBAAiB,IAAI,4BAA4B,CAAC;IAE5D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,mGAAmG;QACnG,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACvB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtE,oDAAoD;QACpD,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;QAEtB,MAAM,OAAO,GAAG,gBAAgB,CAAC;YAC/B,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,KAAK,IAAI,EAAE;gBAC3B,YAAY,EAAE,CAAC;gBACf,IAAI,YAAY,IAAI,iBAAiB,EAAE,CAAC;oBACtC,OAAO,EAAE,CAAC;oBACV,MAAM,CACJ,IAAI,KAAK,CAAC,8BAA8B,iBAAiB,SAAS,CAAC,CACpE,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;wBAClC,MAAM;wBACN,MAAM;wBACN,QAAQ;qBACT,CAAC,CAAC;oBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,mBAAmB;wBACnB,OAAO,EAAE,CAAC;wBACV,gDAAgD;wBAChD,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;gBAC7C,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QACH,wEAAwE;IAC1E,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACtB,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
import { type UseQueryResult } from "@tanstack/react-query";
|
2
|
-
import type { ThirdwebClient } from "../../../../client/client.js";
|
3
|
-
import type { GetCallsStatusResponse } from "../../../../wallets/eip5792/types.js";
|
4
|
-
/**
|
5
|
-
* A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
|
6
|
-
*
|
7
|
-
* This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
|
8
|
-
*
|
9
|
-
* @returns a React Query object.
|
10
|
-
* @beta
|
11
|
-
* @example
|
12
|
-
* ```tsx
|
13
|
-
* import { useCallsStatus } from "thirdweb/react";
|
14
|
-
* const { data: status, isLoading } = useCallsStatus({ bundleId, client });
|
15
|
-
* ```
|
16
|
-
* @extension EIP5792
|
17
|
-
*/
|
18
|
-
export declare function useCallsStatus(options: {
|
19
|
-
bundleId: string;
|
20
|
-
client: ThirdwebClient;
|
21
|
-
queryOptions?: {
|
22
|
-
enabled?: boolean;
|
23
|
-
retry?: number;
|
24
|
-
};
|
25
|
-
}): UseQueryResult<GetCallsStatusResponse>;
|
26
|
-
//# sourceMappingURL=useCallsStatus.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useCallsStatus.d.ts","sourceRoot":"","sources":["../../../../../../src/react/core/hooks/wallets/useCallsStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAY,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAGnF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAoBzC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"wait-for-bundle.d.ts","sourceRoot":"","sources":["../../../../src/wallets/eip5792/wait-for-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM5E,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAqDjC"}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
import { type UseQueryResult, useQuery } from "@tanstack/react-query";
|
2
|
-
import type { ThirdwebClient } from "../../../../client/client.js";
|
3
|
-
import { getCallsStatus } from "../../../../wallets/eip5792/get-calls-status.js";
|
4
|
-
import type { GetCallsStatusResponse } from "../../../../wallets/eip5792/types.js";
|
5
|
-
import { useActiveWallet } from "./useActiveWallet.js";
|
6
|
-
|
7
|
-
/**
|
8
|
-
* A hook to get a call bundle's current status according to [EIP-5792](https://eips.ethereum.org/EIPS/eip-5792).
|
9
|
-
*
|
10
|
-
* This function is dependent on the wallet's support for EIP-5792 and could throw an error if it's not supported.
|
11
|
-
*
|
12
|
-
* @returns a React Query object.
|
13
|
-
* @beta
|
14
|
-
* @example
|
15
|
-
* ```tsx
|
16
|
-
* import { useCallsStatus } from "thirdweb/react";
|
17
|
-
* const { data: status, isLoading } = useCallsStatus({ bundleId, client });
|
18
|
-
* ```
|
19
|
-
* @extension EIP5792
|
20
|
-
*/
|
21
|
-
export function useCallsStatus(options: {
|
22
|
-
bundleId: string;
|
23
|
-
client: ThirdwebClient;
|
24
|
-
queryOptions?: {
|
25
|
-
enabled?: boolean;
|
26
|
-
retry?: number;
|
27
|
-
};
|
28
|
-
}): UseQueryResult<GetCallsStatusResponse> {
|
29
|
-
const { client, bundleId } = options;
|
30
|
-
const wallet = useActiveWallet();
|
31
|
-
|
32
|
-
return useQuery({
|
33
|
-
queryKey: [
|
34
|
-
"getCapabilities",
|
35
|
-
wallet?.getChain()?.id || -1,
|
36
|
-
wallet?.id,
|
37
|
-
] as const,
|
38
|
-
queryFn: async () => {
|
39
|
-
if (!wallet) {
|
40
|
-
throw new Error("Failed to get calls status, no wallet connected");
|
41
|
-
}
|
42
|
-
return getCallsStatus({ wallet, client, bundleId });
|
43
|
-
},
|
44
|
-
retry: false,
|
45
|
-
enabled: !!bundleId && wallet !== undefined,
|
46
|
-
...options.queryOptions,
|
47
|
-
});
|
48
|
-
}
|