thirdweb 5.105.25 → 5.105.26-nightly-b86d520f3c05c4c3741d9f3071f40d13cebe24dd-20250801000425
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/bridge/Token.js +15 -2
- package/dist/cjs/bridge/Token.js.map +1 -1
- package/dist/cjs/react/core/hooks/contract/useContractEvents.js +1 -1
- package/dist/cjs/react/core/hooks/contract/useContractEvents.js.map +1 -1
- package/dist/cjs/utils/abi/decodeError.js +6 -1
- package/dist/cjs/utils/abi/decodeError.js.map +1 -1
- package/dist/cjs/utils/abi/decodeFunctionData.js +6 -1
- package/dist/cjs/utils/abi/decodeFunctionData.js.map +1 -1
- package/dist/cjs/utils/abi/decodeFunctionResult.js +6 -1
- package/dist/cjs/utils/abi/decodeFunctionResult.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/wallet-connect/controller.js +69 -26
- package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/esm/bridge/Token.js +15 -2
- package/dist/esm/bridge/Token.js.map +1 -1
- package/dist/esm/react/core/hooks/contract/useContractEvents.js +1 -1
- package/dist/esm/react/core/hooks/contract/useContractEvents.js.map +1 -1
- package/dist/esm/utils/abi/decodeError.js +6 -1
- package/dist/esm/utils/abi/decodeError.js.map +1 -1
- package/dist/esm/utils/abi/decodeFunctionData.js +6 -1
- package/dist/esm/utils/abi/decodeFunctionData.js.map +1 -1
- package/dist/esm/utils/abi/decodeFunctionResult.js +6 -1
- package/dist/esm/utils/abi/decodeFunctionResult.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/wallet-connect/controller.js +69 -26
- package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/types/bridge/Token.d.ts +15 -2
- package/dist/types/bridge/Token.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeError.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeFunctionData.d.ts +1 -2
- package/dist/types/utils/abi/decodeFunctionData.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeFunctionResult.d.ts +1 -2
- package/dist/types/utils/abi/decodeFunctionResult.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/wallet-connect/controller.d.ts +4 -3
- package/dist/types/wallets/wallet-connect/controller.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/bridge/Token.ts +15 -2
- package/src/react/core/hooks/contract/useContractEvents.ts +1 -1
- package/src/react/web/ui/MediaRenderer/MediaRenderer.test.tsx +1 -1
- package/src/utils/abi/decodeError.ts +8 -1
- package/src/utils/abi/decodeFunctionData.test.ts +25 -0
- package/src/utils/abi/decodeFunctionData.ts +9 -1
- package/src/utils/abi/decodeFunctionResult.ts +11 -1
- package/src/version.ts +1 -1
- package/src/wallets/wallet-connect/controller.ts +96 -19
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
RequestArguments,
|
|
3
|
+
UniversalProvider,
|
|
4
|
+
} from "@walletconnect/universal-provider";
|
|
2
5
|
import type { Address } from "abitype";
|
|
3
6
|
import {
|
|
4
7
|
getTypesForEIP712Domain,
|
|
@@ -39,6 +42,7 @@ import type { DisconnectFn, SwitchChainFn } from "../types.js";
|
|
|
39
42
|
import { getDefaultAppMetadata } from "../utils/defaultDappMetadata.js";
|
|
40
43
|
import { normalizeChainId } from "../utils/normalizeChainId.js";
|
|
41
44
|
import type { WalletEmitter } from "../wallet-emitter.js";
|
|
45
|
+
import type { WalletInfo } from "../wallet-info.js";
|
|
42
46
|
import type { WalletId } from "../wallet-types.js";
|
|
43
47
|
import { DEFAULT_PROJECT_ID, NAMESPACE } from "./constants.js";
|
|
44
48
|
import type { WCAutoConnectOptions, WCConnectOptions } from "./types.js";
|
|
@@ -78,16 +82,16 @@ export async function connectWC(
|
|
|
78
82
|
emitter: WalletEmitter<WCSupportedWalletIds>,
|
|
79
83
|
walletId: WCSupportedWalletIds | "walletConnect",
|
|
80
84
|
storage: AsyncStorage,
|
|
81
|
-
sessionHandler?: (uri: string) => void
|
|
85
|
+
sessionHandler?: (uri: string) => void | Promise<void>,
|
|
82
86
|
): Promise<ReturnType<typeof onConnect>> {
|
|
83
87
|
const provider = await initProvider(options, walletId, sessionHandler);
|
|
84
88
|
const wcOptions = options.walletConnect;
|
|
85
89
|
|
|
86
90
|
let { onDisplayUri } = wcOptions || {};
|
|
91
|
+
const walletInfo = await getWalletInfo(walletId);
|
|
87
92
|
|
|
88
93
|
// use default sessionHandler unless onDisplayUri is explicitly provided
|
|
89
94
|
if (!onDisplayUri && sessionHandler) {
|
|
90
|
-
const walletInfo = await getWalletInfo(walletId);
|
|
91
95
|
const deeplinkHandler = (uri: string) => {
|
|
92
96
|
const appUrl = walletInfo.mobile.native || walletInfo.mobile.universal;
|
|
93
97
|
if (!appUrl) {
|
|
@@ -185,7 +189,16 @@ export async function connectWC(
|
|
|
185
189
|
provider.events.removeListener("display_uri", wcOptions.onDisplayUri);
|
|
186
190
|
}
|
|
187
191
|
|
|
188
|
-
return onConnect(
|
|
192
|
+
return onConnect(
|
|
193
|
+
address,
|
|
194
|
+
chain,
|
|
195
|
+
provider,
|
|
196
|
+
emitter,
|
|
197
|
+
storage,
|
|
198
|
+
options.client,
|
|
199
|
+
walletInfo,
|
|
200
|
+
sessionHandler,
|
|
201
|
+
);
|
|
189
202
|
}
|
|
190
203
|
|
|
191
204
|
/**
|
|
@@ -197,12 +210,14 @@ export async function autoConnectWC(
|
|
|
197
210
|
emitter: WalletEmitter<WCSupportedWalletIds>,
|
|
198
211
|
walletId: WCSupportedWalletIds | "walletConnect",
|
|
199
212
|
storage: AsyncStorage,
|
|
200
|
-
sessionHandler?: (uri: string) => void
|
|
213
|
+
sessionHandler?: (uri: string) => void | Promise<void>,
|
|
201
214
|
): Promise<ReturnType<typeof onConnect>> {
|
|
202
215
|
const savedConnectParams: SavedConnectParams | null = storage
|
|
203
216
|
? await getSavedConnectParamsFromStorage(storage, walletId)
|
|
204
217
|
: null;
|
|
205
218
|
|
|
219
|
+
const walletInfo = await getWalletInfo(walletId);
|
|
220
|
+
|
|
206
221
|
const provider = await initProvider(
|
|
207
222
|
savedConnectParams
|
|
208
223
|
? {
|
|
@@ -243,7 +258,16 @@ export async function autoConnectWC(
|
|
|
243
258
|
? options.chain
|
|
244
259
|
: getCachedChain(providerChainId);
|
|
245
260
|
|
|
246
|
-
return onConnect(
|
|
261
|
+
return onConnect(
|
|
262
|
+
address,
|
|
263
|
+
chain,
|
|
264
|
+
provider,
|
|
265
|
+
emitter,
|
|
266
|
+
storage,
|
|
267
|
+
options.client,
|
|
268
|
+
walletInfo,
|
|
269
|
+
sessionHandler,
|
|
270
|
+
);
|
|
247
271
|
}
|
|
248
272
|
|
|
249
273
|
// Connection utils -----------------------------------------------------------------------------------------------
|
|
@@ -284,6 +308,10 @@ async function initProvider(
|
|
|
284
308
|
],
|
|
285
309
|
name: wcOptions?.appMetadata?.name || getDefaultAppMetadata().name,
|
|
286
310
|
url: wcOptions?.appMetadata?.url || getDefaultAppMetadata().url,
|
|
311
|
+
redirect: {
|
|
312
|
+
native: walletInfo.mobile.native || undefined,
|
|
313
|
+
universal: walletInfo.mobile.universal || undefined,
|
|
314
|
+
},
|
|
287
315
|
},
|
|
288
316
|
projectId: wcOptions?.projectId || DEFAULT_PROJECT_ID,
|
|
289
317
|
});
|
|
@@ -321,17 +349,22 @@ function createAccount({
|
|
|
321
349
|
address,
|
|
322
350
|
client,
|
|
323
351
|
chain,
|
|
352
|
+
sessionRequestHandler,
|
|
353
|
+
walletInfo,
|
|
324
354
|
}: {
|
|
325
355
|
provider: WCProvider;
|
|
326
356
|
address: string;
|
|
327
357
|
client: ThirdwebClient;
|
|
328
358
|
chain: Chain;
|
|
359
|
+
sessionRequestHandler?: (uri: string) => void | Promise<void>;
|
|
360
|
+
walletInfo: WalletInfo;
|
|
329
361
|
}) {
|
|
330
362
|
const account: Account = {
|
|
331
363
|
address: getAddress(address),
|
|
332
364
|
async sendTransaction(tx: SendTransactionOption) {
|
|
333
|
-
const transactionHash = (await
|
|
334
|
-
|
|
365
|
+
const transactionHash = (await requestAndOpenWallet({
|
|
366
|
+
provider,
|
|
367
|
+
payload: {
|
|
335
368
|
method: "eth_sendTransaction",
|
|
336
369
|
params: [
|
|
337
370
|
{
|
|
@@ -343,8 +376,10 @@ function createAccount({
|
|
|
343
376
|
},
|
|
344
377
|
],
|
|
345
378
|
},
|
|
346
|
-
`eip155:${tx.chainId}`,
|
|
347
|
-
|
|
379
|
+
chain: `eip155:${tx.chainId}`,
|
|
380
|
+
walletInfo,
|
|
381
|
+
sessionRequestHandler,
|
|
382
|
+
})) as Hex;
|
|
348
383
|
|
|
349
384
|
trackTransaction({
|
|
350
385
|
chainId: tx.chainId,
|
|
@@ -370,13 +405,16 @@ function createAccount({
|
|
|
370
405
|
}
|
|
371
406
|
return message.raw;
|
|
372
407
|
})();
|
|
373
|
-
return
|
|
374
|
-
|
|
408
|
+
return requestAndOpenWallet({
|
|
409
|
+
provider,
|
|
410
|
+
payload: {
|
|
375
411
|
method: "personal_sign",
|
|
376
412
|
params: [messageToSign, this.address],
|
|
377
413
|
},
|
|
378
|
-
`eip155:${chain.id}`,
|
|
379
|
-
|
|
414
|
+
chain: `eip155:${chain.id}`,
|
|
415
|
+
walletInfo,
|
|
416
|
+
sessionRequestHandler,
|
|
417
|
+
});
|
|
380
418
|
},
|
|
381
419
|
async signTypedData(_data) {
|
|
382
420
|
const data = parseTypedData(_data);
|
|
@@ -399,19 +437,47 @@ function createAccount({
|
|
|
399
437
|
types,
|
|
400
438
|
});
|
|
401
439
|
|
|
402
|
-
return await
|
|
403
|
-
|
|
440
|
+
return await requestAndOpenWallet({
|
|
441
|
+
provider,
|
|
442
|
+
payload: {
|
|
404
443
|
method: "eth_signTypedData_v4",
|
|
405
444
|
params: [this.address, typedData],
|
|
406
445
|
},
|
|
407
|
-
`eip155:${chain.id}`,
|
|
408
|
-
|
|
446
|
+
chain: `eip155:${chain.id}`,
|
|
447
|
+
walletInfo,
|
|
448
|
+
sessionRequestHandler,
|
|
449
|
+
});
|
|
409
450
|
},
|
|
410
451
|
};
|
|
411
452
|
|
|
412
453
|
return account;
|
|
413
454
|
}
|
|
414
455
|
|
|
456
|
+
async function requestAndOpenWallet(args: {
|
|
457
|
+
provider: WCProvider;
|
|
458
|
+
payload: RequestArguments;
|
|
459
|
+
chain?: string;
|
|
460
|
+
walletInfo: WalletInfo;
|
|
461
|
+
sessionRequestHandler?: (uri: string) => void | Promise<void>;
|
|
462
|
+
}) {
|
|
463
|
+
const { provider, payload, chain, walletInfo, sessionRequestHandler } = args;
|
|
464
|
+
const resultPromise: Promise<`0x${string}`> = provider.request(
|
|
465
|
+
payload,
|
|
466
|
+
chain,
|
|
467
|
+
);
|
|
468
|
+
|
|
469
|
+
const walletLinkToOpen =
|
|
470
|
+
provider.session?.peer?.metadata?.redirect?.native ||
|
|
471
|
+
walletInfo.mobile.native ||
|
|
472
|
+
walletInfo.mobile.universal;
|
|
473
|
+
|
|
474
|
+
if (sessionRequestHandler && walletLinkToOpen) {
|
|
475
|
+
await sessionRequestHandler(walletLinkToOpen);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
return resultPromise;
|
|
479
|
+
}
|
|
480
|
+
|
|
415
481
|
function onConnect(
|
|
416
482
|
address: string,
|
|
417
483
|
chain: Chain,
|
|
@@ -419,8 +485,17 @@ function onConnect(
|
|
|
419
485
|
emitter: WalletEmitter<WCSupportedWalletIds>,
|
|
420
486
|
storage: AsyncStorage,
|
|
421
487
|
client: ThirdwebClient,
|
|
488
|
+
walletInfo: WalletInfo,
|
|
489
|
+
sessionRequestHandler?: (uri: string) => void | Promise<void>,
|
|
422
490
|
): [Account, Chain, DisconnectFn, SwitchChainFn] {
|
|
423
|
-
const account = createAccount({
|
|
491
|
+
const account = createAccount({
|
|
492
|
+
address,
|
|
493
|
+
chain,
|
|
494
|
+
client,
|
|
495
|
+
provider,
|
|
496
|
+
sessionRequestHandler,
|
|
497
|
+
walletInfo,
|
|
498
|
+
});
|
|
424
499
|
|
|
425
500
|
async function disconnect() {
|
|
426
501
|
provider.removeListener("accountsChanged", onAccountsChanged);
|
|
@@ -444,6 +519,8 @@ function onConnect(
|
|
|
444
519
|
chain,
|
|
445
520
|
client,
|
|
446
521
|
provider,
|
|
522
|
+
sessionRequestHandler,
|
|
523
|
+
walletInfo,
|
|
447
524
|
});
|
|
448
525
|
emitter.emit("accountChanged", newAccount);
|
|
449
526
|
emitter.emit("accountsChanged", accounts);
|