@suilend/sui-fe-next 2.0.28 → 2.0.29
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/contexts/WalletContext.jsx +119 -373
- package/lib/connector.d.ts +2 -9
- package/lib/connector.js +31 -56
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -61,13 +61,12 @@ import { createDAppKit, getWalletUniqueIdentifier, } from "@mysten/dapp-kit-core
|
|
|
61
61
|
import { DAppKitProvider, useCurrentAccount, useCurrentWallet, useDAppKit, useWalletConnection, useWallets, } from "@mysten/dapp-kit-react";
|
|
62
62
|
import { SuiJsonRpcClient, } from "@mysten/sui/jsonRpc";
|
|
63
63
|
import { Transaction } from "@mysten/sui/transactions";
|
|
64
|
-
import { SUI_DECIMALS,
|
|
65
|
-
import { getWallets } from "@wallet-standard/app";
|
|
64
|
+
import { SUI_DECIMALS, toBase64 } from "@mysten/sui/utils";
|
|
66
65
|
import BigNumber from "bignumber.js";
|
|
67
66
|
import { useLDClient } from "launchdarkly-react-client-sdk";
|
|
68
67
|
import { useLocalStorage } from "usehooks-ts";
|
|
69
68
|
import { API_URL, formatAddress, isInMsafeApp } from "@suilend/sui-fe";
|
|
70
|
-
import {
|
|
69
|
+
import { getUniversalConnector } from "../lib/connector";
|
|
71
70
|
import { showErrorToast, showInfoToast } from "../lib/toasts";
|
|
72
71
|
import { useSettingsContext } from "./SettingsContext";
|
|
73
72
|
export var WalletType;
|
|
@@ -212,50 +211,34 @@ export var useWalletContext = function () { return useContext(WalletContext); };
|
|
|
212
211
|
function Inner(_a) {
|
|
213
212
|
var _b;
|
|
214
213
|
var _this = this;
|
|
215
|
-
var _c, _d;
|
|
214
|
+
var _c, _d, _e, _f, _g;
|
|
216
215
|
var appName = _a.appName, children = _a.children;
|
|
217
216
|
var router = useRouter();
|
|
218
217
|
var queryParams = (_b = {},
|
|
219
218
|
_b[WalletContextQueryParams.WALLET] = router.query[WalletContextQueryParams.WALLET],
|
|
220
219
|
_b);
|
|
221
|
-
var
|
|
222
|
-
//
|
|
223
|
-
|
|
224
|
-
var
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
var _a, _b, _c;
|
|
230
|
-
var raw = (_c = (_b = (_a = wcSession === null || wcSession === void 0 ? void 0 : wcSession.namespaces) === null || _a === void 0 ? void 0 : _a.sui) === null || _b === void 0 ? void 0 : _b.accounts) === null || _c === void 0 ? void 0 : _c[0];
|
|
231
|
-
if (!raw)
|
|
232
|
-
return undefined;
|
|
233
|
-
return raw.split(":").pop();
|
|
234
|
-
}, [wcSession]);
|
|
235
|
-
// Normalised Sui address (zero-padded to 32 bytes) for on-chain use:
|
|
236
|
-
// transaction sender, RPC queries, etc.
|
|
237
|
-
var sessionAddress = useMemo(function () {
|
|
238
|
-
if (!wcRawAddress)
|
|
239
|
-
return undefined;
|
|
240
|
-
var normalized = normalizeSuiAddress(wcRawAddress);
|
|
241
|
-
return isValidSuiAddress(normalized) ? normalized : undefined;
|
|
242
|
-
}, [wcRawAddress]);
|
|
220
|
+
var _h = useSettingsContext(), rpc = _h.rpc, suiClient = _h.suiClient;
|
|
221
|
+
// Only used for wallet connect
|
|
222
|
+
var _j = useState(), universalConnector = _j[0], setUniversalConnector = _j[1];
|
|
223
|
+
var _k = useState(), session = _k[0], setSession = _k[1];
|
|
224
|
+
var sessionAddressWithout0x = (_e = (_d = (_c = session === null || session === void 0 ? void 0 : session.namespaces) === null || _c === void 0 ? void 0 : _c.sui) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e[0];
|
|
225
|
+
var sessionAddress = sessionAddressWithout0x
|
|
226
|
+
? sessionAddressWithout0x.split(":").pop()
|
|
227
|
+
: undefined;
|
|
243
228
|
useEffect(function () {
|
|
244
229
|
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
245
|
-
var
|
|
230
|
+
var connector;
|
|
246
231
|
return __generator(this, function (_a) {
|
|
247
232
|
switch (_a.label) {
|
|
248
|
-
case 0: return [4 /*yield*/,
|
|
233
|
+
case 0: return [4 /*yield*/, getUniversalConnector(rpc.url)];
|
|
249
234
|
case 1:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
setWcSession(provider.session);
|
|
253
|
-
}
|
|
235
|
+
connector = _a.sent();
|
|
236
|
+
setUniversalConnector(connector);
|
|
254
237
|
return [2 /*return*/];
|
|
255
238
|
}
|
|
256
239
|
});
|
|
257
240
|
}); })();
|
|
258
|
-
}, []);
|
|
241
|
+
}, [rpc.url]);
|
|
259
242
|
// Impersonated address
|
|
260
243
|
var impersonatedAddress = queryParams[WalletContextQueryParams.WALLET];
|
|
261
244
|
// Wallets
|
|
@@ -369,7 +352,7 @@ function Inner(_a) {
|
|
|
369
352
|
wallets__web,
|
|
370
353
|
]);
|
|
371
354
|
// Wallet
|
|
372
|
-
var
|
|
355
|
+
var _l = useState(false), isConnectWalletDropdownOpen = _l[0], setIsConnectWalletDropdownOpen = _l[1];
|
|
373
356
|
var rawWallet = useCurrentWallet();
|
|
374
357
|
var wallet = useMemo(function () {
|
|
375
358
|
if (sessionAddress) {
|
|
@@ -383,23 +366,17 @@ function Inner(_a) {
|
|
|
383
366
|
var disconnectWallet = dAppKit.disconnectWallet;
|
|
384
367
|
var signPersonalMessageRaw = dAppKit.signPersonalMessage;
|
|
385
368
|
var walletConnectSignPersonalMessage = useCallback(function (message) { return __awaiter(_this, void 0, void 0, function () {
|
|
386
|
-
var
|
|
369
|
+
var res;
|
|
387
370
|
return __generator(this, function (_a) {
|
|
388
371
|
switch (_a.label) {
|
|
389
372
|
case 0:
|
|
390
|
-
if (!sessionAddress)
|
|
373
|
+
if (!sessionAddress || !universalConnector)
|
|
391
374
|
throw new Error("Wallet not connected");
|
|
392
|
-
return [4 /*yield*/,
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
return [4 /*yield*/, provider.request({
|
|
396
|
-
method: WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
|
|
397
|
-
params: {
|
|
398
|
-
message: message.toString(),
|
|
399
|
-
account: wcRawAddress !== null && wcRawAddress !== void 0 ? wcRawAddress : sessionAddress,
|
|
400
|
-
},
|
|
375
|
+
return [4 /*yield*/, universalConnector.request({
|
|
376
|
+
method: "sui_signPersonalMessage",
|
|
377
|
+
params: { message: message.toString() },
|
|
401
378
|
}, "sui:mainnet")];
|
|
402
|
-
case
|
|
379
|
+
case 1:
|
|
403
380
|
res = _a.sent();
|
|
404
381
|
return [2 /*return*/, {
|
|
405
382
|
signature: res.signature,
|
|
@@ -407,122 +384,49 @@ function Inner(_a) {
|
|
|
407
384
|
}];
|
|
408
385
|
}
|
|
409
386
|
});
|
|
410
|
-
}); }, [sessionAddress,
|
|
411
|
-
var connectWalletWrapper = useCallback(function (_wallet) {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
case 1:
|
|
420
|
-
provider = _c.sent();
|
|
421
|
-
return [4 /*yield*/, getWalletConnectModal(rpc.url)];
|
|
422
|
-
case 2:
|
|
423
|
-
modal = _c.sent();
|
|
424
|
-
modal.open();
|
|
425
|
-
_c.label = 3;
|
|
426
|
-
case 3:
|
|
427
|
-
_c.trys.push([3, , 5, 6]);
|
|
428
|
-
return [4 /*yield*/, provider.connect({
|
|
429
|
-
namespaces: {
|
|
430
|
-
sui: {
|
|
431
|
-
methods: [
|
|
432
|
-
WC_SUI_METHODS.SIGN_TRANSACTION,
|
|
433
|
-
WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
|
|
434
|
-
WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
|
|
435
|
-
],
|
|
436
|
-
chains: ["sui:mainnet"],
|
|
437
|
-
events: [],
|
|
438
|
-
},
|
|
439
|
-
},
|
|
440
|
-
})];
|
|
441
|
-
case 4:
|
|
442
|
-
_c.sent();
|
|
443
|
-
return [3 /*break*/, 6];
|
|
444
|
-
case 5:
|
|
445
|
-
modal.close();
|
|
446
|
-
return [7 /*endfinally*/];
|
|
447
|
-
case 6:
|
|
448
|
-
_c.trys.push([6, 8, , 9]);
|
|
449
|
-
return [4 /*yield*/, disconnectWallet()];
|
|
450
|
-
case 7:
|
|
451
|
-
_c.sent();
|
|
452
|
-
return [3 /*break*/, 9];
|
|
453
|
-
case 8:
|
|
454
|
-
_a = _c.sent();
|
|
455
|
-
return [3 /*break*/, 9];
|
|
456
|
-
case 9:
|
|
457
|
-
setWcSession(provider.session);
|
|
458
|
-
return [2 /*return*/];
|
|
459
|
-
case 10:
|
|
460
|
-
if (!_wallet.raw)
|
|
461
|
-
throw new Error("Missing wallet");
|
|
462
|
-
return [4 /*yield*/, connectWallet({ wallet: _wallet.raw })];
|
|
463
|
-
case 11:
|
|
464
|
-
_c.sent();
|
|
465
|
-
_c.label = 12;
|
|
466
|
-
case 12:
|
|
467
|
-
_c.trys.push([12, 15, , 16]);
|
|
468
|
-
return [4 /*yield*/, getWalletConnectProvider()];
|
|
469
|
-
case 13:
|
|
470
|
-
provider = _c.sent();
|
|
471
|
-
return [4 /*yield*/, provider.disconnect()];
|
|
472
|
-
case 14:
|
|
473
|
-
_c.sent();
|
|
474
|
-
return [3 /*break*/, 16];
|
|
475
|
-
case 15:
|
|
476
|
-
_b = _c.sent();
|
|
477
|
-
return [3 /*break*/, 16];
|
|
478
|
-
case 16:
|
|
479
|
-
setWcSession(null);
|
|
480
|
-
showInfoToast("Connected ".concat(_wallet.name));
|
|
481
|
-
setIsConnectWalletDropdownOpen(false);
|
|
482
|
-
return [3 /*break*/, 18];
|
|
483
|
-
case 17:
|
|
484
|
-
err_1 = _c.sent();
|
|
485
|
-
showErrorToast("Failed to connect ".concat(_wallet.name), err_1);
|
|
486
|
-
console.error(err_1);
|
|
487
|
-
return [3 /*break*/, 18];
|
|
488
|
-
case 18: return [2 /*return*/];
|
|
387
|
+
}); }, [sessionAddress, universalConnector]);
|
|
388
|
+
var connectWalletWrapper = useCallback(function (_wallet) {
|
|
389
|
+
try {
|
|
390
|
+
if (_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect) {
|
|
391
|
+
universalConnector.connect().then(function (res) {
|
|
392
|
+
disconnectWallet();
|
|
393
|
+
setSession(res.session);
|
|
394
|
+
});
|
|
395
|
+
return;
|
|
489
396
|
}
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
case 4:
|
|
509
|
-
_a.sent();
|
|
510
|
-
showInfoToast("Disconnected wallet");
|
|
511
|
-
_a.label = 5;
|
|
512
|
-
case 5: return [3 /*break*/, 7];
|
|
513
|
-
case 6:
|
|
514
|
-
err_2 = _a.sent();
|
|
515
|
-
showErrorToast("Failed to disconnect wallet", err_2);
|
|
516
|
-
console.error(err_2);
|
|
517
|
-
return [3 /*break*/, 7];
|
|
518
|
-
case 7: return [2 /*return*/];
|
|
397
|
+
if (!_wallet.raw)
|
|
398
|
+
throw new Error("Missing wallet");
|
|
399
|
+
connectWallet({ wallet: _wallet.raw });
|
|
400
|
+
universalConnector.disconnect();
|
|
401
|
+
setSession(null);
|
|
402
|
+
showInfoToast("Connected ".concat(_wallet.name));
|
|
403
|
+
setIsConnectWalletDropdownOpen(false);
|
|
404
|
+
}
|
|
405
|
+
catch (err) {
|
|
406
|
+
showErrorToast("Failed to connect ".concat(_wallet.name), err);
|
|
407
|
+
console.error(err);
|
|
408
|
+
}
|
|
409
|
+
}, [connectWallet, disconnectWallet, universalConnector]);
|
|
410
|
+
var disconnectWalletWrapper = useCallback(function () {
|
|
411
|
+
try {
|
|
412
|
+
if (sessionAddress) {
|
|
413
|
+
universalConnector.disconnect();
|
|
414
|
+
setSession(null);
|
|
519
415
|
}
|
|
520
|
-
|
|
521
|
-
|
|
416
|
+
else {
|
|
417
|
+
disconnectWallet();
|
|
418
|
+
showInfoToast("Disconnected wallet");
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
catch (err) {
|
|
422
|
+
showErrorToast("Failed to disconnect wallet", err);
|
|
423
|
+
console.error(err);
|
|
424
|
+
}
|
|
425
|
+
}, [sessionAddress, universalConnector, disconnectWallet]);
|
|
522
426
|
// Accounts
|
|
523
427
|
var walletConnection = useWalletConnection();
|
|
524
|
-
var accountsRes = useMemo(function () { var _a, _b; return (_b = (_a = walletConnection.wallet) === null || _a === void 0 ? void 0 : _a.accounts) !== null && _b !== void 0 ? _b : []; }, [(
|
|
525
|
-
var accountRes = (
|
|
428
|
+
var accountsRes = useMemo(function () { var _a, _b; return (_b = (_a = walletConnection.wallet) === null || _a === void 0 ? void 0 : _a.accounts) !== null && _b !== void 0 ? _b : []; }, [(_f = walletConnection.wallet) === null || _f === void 0 ? void 0 : _f.accounts]);
|
|
429
|
+
var accountRes = (_g = useCurrentAccount()) !== null && _g !== void 0 ? _g : undefined;
|
|
526
430
|
var walletConnectAccount = useMemo(function () {
|
|
527
431
|
return sessionAddress
|
|
528
432
|
? {
|
|
@@ -597,7 +501,7 @@ function Inner(_a) {
|
|
|
597
501
|
if (!(wallet === null || wallet === void 0 ? void 0 : wallet.name))
|
|
598
502
|
return;
|
|
599
503
|
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
600
|
-
var
|
|
504
|
+
var err_1;
|
|
601
505
|
return __generator(this, function (_a) {
|
|
602
506
|
switch (_a.label) {
|
|
603
507
|
case 0:
|
|
@@ -617,8 +521,8 @@ function Inner(_a) {
|
|
|
617
521
|
_a.sent();
|
|
618
522
|
return [3 /*break*/, 3];
|
|
619
523
|
case 2:
|
|
620
|
-
|
|
621
|
-
console.error(
|
|
524
|
+
err_1 = _a.sent();
|
|
525
|
+
console.error(err_1);
|
|
622
526
|
return [3 /*break*/, 3];
|
|
623
527
|
case 3: return [2 /*return*/];
|
|
624
528
|
}
|
|
@@ -633,7 +537,7 @@ function Inner(_a) {
|
|
|
633
537
|
args_1[_i - 1] = arguments[_i];
|
|
634
538
|
}
|
|
635
539
|
return __awaiter(_this, __spreadArray([transaction_1], args_1, true), void 0, function (transaction, setGasBudget) {
|
|
636
|
-
var _address, _transaction, inspectResults,
|
|
540
|
+
var _address, _transaction, inspectResults, err_2;
|
|
637
541
|
if (setGasBudget === void 0) { setGasBudget = true; }
|
|
638
542
|
return __generator(this, function (_a) {
|
|
639
543
|
switch (_a.label) {
|
|
@@ -659,43 +563,20 @@ function Inner(_a) {
|
|
|
659
563
|
throw new Error(inspectResults.error);
|
|
660
564
|
return [2 /*return*/, inspectResults];
|
|
661
565
|
case 3:
|
|
662
|
-
|
|
566
|
+
err_2 = _a.sent();
|
|
663
567
|
// _transaction.getData().inputs.filter(input=>!!input.Object).map(input=>input.)
|
|
664
|
-
console.error(
|
|
665
|
-
throw
|
|
568
|
+
console.error(err_2);
|
|
569
|
+
throw err_2;
|
|
666
570
|
case 4: return [2 /*return*/];
|
|
667
571
|
}
|
|
668
572
|
});
|
|
669
573
|
});
|
|
670
574
|
}, [impersonatedAddress, account === null || account === void 0 ? void 0 : account.address, gasBudget, suiClient]);
|
|
671
|
-
var
|
|
672
|
-
var res;
|
|
575
|
+
var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
|
|
576
|
+
var _address, signedTransaction, txBytes, res, res1, res2, err_3;
|
|
673
577
|
var _a, _b;
|
|
674
578
|
return __generator(this, function (_c) {
|
|
675
579
|
switch (_c.label) {
|
|
676
|
-
case 0: return [4 /*yield*/, suiClient.waitForTransaction({
|
|
677
|
-
digest: digest,
|
|
678
|
-
options: {
|
|
679
|
-
showBalanceChanges: true,
|
|
680
|
-
showEffects: true,
|
|
681
|
-
showEvents: true,
|
|
682
|
-
showObjectChanges: true,
|
|
683
|
-
},
|
|
684
|
-
})];
|
|
685
|
-
case 1:
|
|
686
|
-
res = _c.sent();
|
|
687
|
-
if (((_a = res.effects) === null || _a === void 0 ? void 0 : _a.status) !== undefined &&
|
|
688
|
-
res.effects.status.status === "failure")
|
|
689
|
-
throw new Error((_b = res.effects.status.error) !== null && _b !== void 0 ? _b : "Transaction failed");
|
|
690
|
-
return [2 /*return*/, res];
|
|
691
|
-
}
|
|
692
|
-
});
|
|
693
|
-
}); }, [suiClient]);
|
|
694
|
-
var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
|
|
695
|
-
var _address, provider_1, txBytes, txBase64, wcAddress, params, topic, signClient, pingErr_1, debugHandler, pendingBefore, wcRequest, methods, signRes, execDigest, _i, methods_1, method, res_1, err_5, execRes, msafeWallet, msafeFeature, msafeAccount, usedSignOnly, signedTransaction, res1, err_6, message, res, digest, err_7;
|
|
696
|
-
var _a, _b, _c, _d, _e;
|
|
697
|
-
return __generator(this, function (_f) {
|
|
698
|
-
switch (_f.label) {
|
|
699
580
|
case 0:
|
|
700
581
|
_address = impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address;
|
|
701
582
|
if (_address) {
|
|
@@ -704,9 +585,9 @@ function Inner(_a) {
|
|
|
704
585
|
}
|
|
705
586
|
catch (err) { }
|
|
706
587
|
}
|
|
707
|
-
|
|
588
|
+
_c.label = 1;
|
|
708
589
|
case 1:
|
|
709
|
-
|
|
590
|
+
_c.trys.push([1, 9, , 10]);
|
|
710
591
|
// Gas budget
|
|
711
592
|
if (gasBudget !== "")
|
|
712
593
|
transaction.setGasBudget(+new BigNumber(gasBudget)
|
|
@@ -715,210 +596,75 @@ function Inner(_a) {
|
|
|
715
596
|
onSetGasBudget === null || onSetGasBudget === void 0 ? void 0 : onSetGasBudget(transaction);
|
|
716
597
|
// Log
|
|
717
598
|
console.log("[WalletContext] signExecuteAndWaitForTransaction - transaction.getData():", transaction.getData());
|
|
718
|
-
|
|
719
|
-
return [
|
|
720
|
-
case 2:
|
|
721
|
-
provider_1 = _f.sent();
|
|
599
|
+
signedTransaction = void 0;
|
|
600
|
+
if (!(sessionAddress && universalConnector)) return [3 /*break*/, 4];
|
|
722
601
|
transaction.setSender(sessionAddress);
|
|
723
602
|
return [4 /*yield*/, transaction.build({ client: suiClient })];
|
|
603
|
+
case 2:
|
|
604
|
+
txBytes = _c.sent();
|
|
605
|
+
return [4 /*yield*/, universalConnector.request({
|
|
606
|
+
method: "sui_signTransaction",
|
|
607
|
+
params: {
|
|
608
|
+
transaction: toBase64(txBytes),
|
|
609
|
+
address: sessionAddress,
|
|
610
|
+
},
|
|
611
|
+
}, "sui:mainnet")];
|
|
724
612
|
case 3:
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
transaction: txBase64,
|
|
730
|
-
account: wcAddress,
|
|
613
|
+
res = _c.sent();
|
|
614
|
+
signedTransaction = {
|
|
615
|
+
bytes: res.transactionBytes,
|
|
616
|
+
signature: res.signature,
|
|
731
617
|
};
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
if (!topic)
|
|
737
|
-
throw new Error("WalletConnect session not found");
|
|
738
|
-
signClient = provider_1.client;
|
|
739
|
-
// Debug: full session dump
|
|
740
|
-
console.log("[WalletContext] WalletConnect — full session:", JSON.stringify(provider_1.session, null, 2));
|
|
741
|
-
console.log("[WalletContext] WalletConnect — relay connected:", signClient.core.relayer.connected);
|
|
742
|
-
_f.label = 4;
|
|
743
|
-
case 4:
|
|
744
|
-
_f.trys.push([4, 6, , 7]);
|
|
745
|
-
return [4 /*yield*/, signClient.ping({ topic: topic })];
|
|
618
|
+
return [3 /*break*/, 6];
|
|
619
|
+
case 4: return [4 /*yield*/, dAppKit.signTransaction({
|
|
620
|
+
transaction: transaction,
|
|
621
|
+
})];
|
|
746
622
|
case 5:
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
return [3 /*break*/, 7];
|
|
623
|
+
signedTransaction = _c.sent();
|
|
624
|
+
_c.label = 6;
|
|
750
625
|
case 6:
|
|
751
|
-
pingErr_1 = _f.sent();
|
|
752
|
-
console.error("[WalletContext] WalletConnect — ping FAILED (peer may be offline):", pingErr_1);
|
|
753
|
-
return [3 /*break*/, 7];
|
|
754
|
-
case 7:
|
|
755
|
-
debugHandler = function (event) {
|
|
756
|
-
console.log("[WalletContext] WalletConnect — relay message received:", event);
|
|
757
|
-
};
|
|
758
|
-
signClient.core.relayer.on("message", debugHandler);
|
|
759
|
-
pendingBefore = (_e = (_d = (_c = signClient.pendingRequest).getAll) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : [];
|
|
760
|
-
console.log("[WalletContext] WalletConnect — pending requests before:", Array.isArray(pendingBefore) ? pendingBefore.length : pendingBefore);
|
|
761
|
-
wcRequest = function (method, requestParams, timeoutMs) {
|
|
762
|
-
if (timeoutMs === void 0) { timeoutMs = 15000; }
|
|
763
|
-
return new Promise(function (resolve, reject) {
|
|
764
|
-
var timer = setTimeout(function () {
|
|
765
|
-
reject(new Error("WalletConnect request \"".concat(method, "\" timed out after ").concat(timeoutMs / 1000, "s \u2014 the wallet did not respond. ") +
|
|
766
|
-
"This usually means the wallet does not support this method."));
|
|
767
|
-
}, timeoutMs);
|
|
768
|
-
console.log("[WalletContext] WalletConnect \u2014 sending request:", JSON.stringify({
|
|
769
|
-
method: method,
|
|
770
|
-
params: requestParams,
|
|
771
|
-
chainId: "sui:mainnet",
|
|
772
|
-
}));
|
|
773
|
-
provider_1
|
|
774
|
-
.request({ method: method, params: requestParams }, "sui:mainnet")
|
|
775
|
-
.then(function (res) {
|
|
776
|
-
clearTimeout(timer);
|
|
777
|
-
resolve(res);
|
|
778
|
-
})
|
|
779
|
-
.catch(function (err) {
|
|
780
|
-
clearTimeout(timer);
|
|
781
|
-
reject(err);
|
|
782
|
-
});
|
|
783
|
-
});
|
|
784
|
-
};
|
|
785
|
-
methods = [
|
|
786
|
-
WC_SUI_METHODS.SIGN_TRANSACTION,
|
|
787
|
-
WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
|
|
788
|
-
];
|
|
789
|
-
signRes = null;
|
|
790
|
-
execDigest = null;
|
|
791
|
-
_i = 0, methods_1 = methods;
|
|
792
|
-
_f.label = 8;
|
|
793
|
-
case 8:
|
|
794
|
-
if (!(_i < methods_1.length)) return [3 /*break*/, 16];
|
|
795
|
-
method = methods_1[_i];
|
|
796
|
-
_f.label = 9;
|
|
797
|
-
case 9:
|
|
798
|
-
_f.trys.push([9, 14, , 15]);
|
|
799
|
-
console.log("[WalletContext] WalletConnect \u2014 trying ".concat(method));
|
|
800
|
-
if (!(method === WC_SUI_METHODS.SIGN_TRANSACTION)) return [3 /*break*/, 11];
|
|
801
|
-
return [4 /*yield*/, wcRequest(method, params)];
|
|
802
|
-
case 10:
|
|
803
|
-
signRes = _f.sent();
|
|
804
|
-
console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded"));
|
|
805
|
-
return [3 /*break*/, 16];
|
|
806
|
-
case 11: return [4 /*yield*/, wcRequest(method, params)];
|
|
807
|
-
case 12:
|
|
808
|
-
res_1 = _f.sent();
|
|
809
|
-
console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded, digest:"), res_1.digest);
|
|
810
|
-
execDigest = res_1.digest;
|
|
811
|
-
return [3 /*break*/, 16];
|
|
812
|
-
case 13: return [3 /*break*/, 15];
|
|
813
|
-
case 14:
|
|
814
|
-
err_5 = _f.sent();
|
|
815
|
-
console.warn("[WalletContext] WalletConnect \u2014 ".concat(method, " failed:"), err_5);
|
|
816
|
-
return [3 /*break*/, 15];
|
|
817
|
-
case 15:
|
|
818
|
-
_i++;
|
|
819
|
-
return [3 /*break*/, 8];
|
|
820
|
-
case 16:
|
|
821
|
-
// Cleanup debug listener
|
|
822
|
-
signClient.core.relayer.off("message", debugHandler);
|
|
823
|
-
if (!execDigest) return [3 /*break*/, 18];
|
|
824
|
-
return [4 /*yield*/, waitForTransactionWithCheck(execDigest)];
|
|
825
|
-
case 17: return [2 /*return*/, _f.sent()];
|
|
826
|
-
case 18:
|
|
827
|
-
if (!signRes) {
|
|
828
|
-
throw new Error("WalletConnect: wallet did not respond to any signing method. " +
|
|
829
|
-
"Check that the wallet supports Sui transactions and that the session is active.");
|
|
830
|
-
}
|
|
831
|
-
console.log("[WalletContext] WalletConnect — executing signed transaction on-chain");
|
|
832
|
-
return [4 /*yield*/, suiClient.executeTransactionBlock({
|
|
833
|
-
transactionBlock: signRes.transactionBytes,
|
|
834
|
-
signature: signRes.signature,
|
|
835
|
-
})];
|
|
836
|
-
case 19:
|
|
837
|
-
execRes = _f.sent();
|
|
838
|
-
return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
|
|
839
|
-
case 20: return [2 /*return*/, _f.sent()];
|
|
840
|
-
case 21:
|
|
841
|
-
if (!isInMsafeApp()) return [3 /*break*/, 24];
|
|
842
|
-
msafeWallet = getWallets()
|
|
843
|
-
.get()
|
|
844
|
-
.find(function (w) { return w.name === WalletName.MSAFE_WALLET; });
|
|
845
|
-
msafeFeature = msafeWallet === null || msafeWallet === void 0 ? void 0 : msafeWallet.features["sui:signAndExecuteTransactionBlock"];
|
|
846
|
-
if (!(msafeFeature && account)) return [3 /*break*/, 23];
|
|
847
|
-
msafeAccount = msafeWallet.accounts.find(function (a) { return a.address === account.address; });
|
|
848
|
-
if (!msafeAccount)
|
|
849
|
-
throw new Error("MSafe account not found");
|
|
850
|
-
return [4 /*yield*/, msafeFeature.signAndExecuteTransactionBlock({
|
|
851
|
-
transactionBlock: transaction,
|
|
852
|
-
account: msafeAccount,
|
|
853
|
-
chain: "sui:mainnet",
|
|
854
|
-
})];
|
|
855
|
-
case 22:
|
|
856
|
-
_f.sent();
|
|
857
|
-
// MSafe proposes the transaction to the multisig queue;
|
|
858
|
-
// the promise never resolves (only rejects on cancel).
|
|
859
|
-
// If we reach here the proposal was accepted.
|
|
860
|
-
throw new Error("Unreachable");
|
|
861
|
-
case 23: throw new Error("MSafe wallet not found. Please reload the page inside MSafe.");
|
|
862
|
-
case 24:
|
|
863
|
-
usedSignOnly = false;
|
|
864
|
-
_f.label = 25;
|
|
865
|
-
case 25:
|
|
866
|
-
_f.trys.push([25, 29, , 30]);
|
|
867
|
-
return [4 /*yield*/, dAppKit.signTransaction({
|
|
868
|
-
transaction: transaction,
|
|
869
|
-
})];
|
|
870
|
-
case 26:
|
|
871
|
-
signedTransaction = _f.sent();
|
|
872
|
-
usedSignOnly = true;
|
|
873
626
|
onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
|
|
874
627
|
return [4 /*yield*/, suiClient.executeTransactionBlock({
|
|
875
628
|
transactionBlock: signedTransaction.bytes,
|
|
876
629
|
signature: signedTransaction.signature,
|
|
877
630
|
})];
|
|
878
|
-
case
|
|
879
|
-
res1 =
|
|
631
|
+
case 7:
|
|
632
|
+
res1 = _c.sent();
|
|
880
633
|
onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
|
|
881
|
-
return [4 /*yield*/,
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
case 32: return [2 /*return*/, _f.sent()];
|
|
902
|
-
case 33:
|
|
903
|
-
err_7 = _f.sent();
|
|
904
|
-
console.error(err_7);
|
|
905
|
-
throw err_7;
|
|
906
|
-
case 34: return [2 /*return*/];
|
|
634
|
+
return [4 /*yield*/, suiClient.waitForTransaction({
|
|
635
|
+
digest: res1.digest,
|
|
636
|
+
options: {
|
|
637
|
+
showBalanceChanges: true,
|
|
638
|
+
showEffects: true,
|
|
639
|
+
showEvents: true,
|
|
640
|
+
showObjectChanges: true,
|
|
641
|
+
},
|
|
642
|
+
})];
|
|
643
|
+
case 8:
|
|
644
|
+
res2 = _c.sent();
|
|
645
|
+
if (((_a = res2.effects) === null || _a === void 0 ? void 0 : _a.status) !== undefined &&
|
|
646
|
+
res2.effects.status.status === "failure")
|
|
647
|
+
throw new Error((_b = res2.effects.status.error) !== null && _b !== void 0 ? _b : "Transaction failed");
|
|
648
|
+
return [2 /*return*/, res2];
|
|
649
|
+
case 9:
|
|
650
|
+
err_3 = _c.sent();
|
|
651
|
+
console.error(err_3);
|
|
652
|
+
throw err_3;
|
|
653
|
+
case 10: return [2 /*return*/];
|
|
907
654
|
}
|
|
908
655
|
});
|
|
909
656
|
}); }, [
|
|
657
|
+
universalConnector,
|
|
910
658
|
sessionAddress,
|
|
911
|
-
wcRawAddress,
|
|
912
659
|
gasBudget,
|
|
913
660
|
impersonatedAddress,
|
|
914
|
-
account,
|
|
661
|
+
account === null || account === void 0 ? void 0 : account.address,
|
|
915
662
|
dryRunTransaction,
|
|
916
663
|
suiClient,
|
|
917
664
|
dAppKit,
|
|
918
|
-
waitForTransactionWithCheck,
|
|
919
665
|
]);
|
|
920
666
|
// Using Ledger
|
|
921
|
-
var
|
|
667
|
+
var _m = useLocalStorage("isUsingLedger-".concat(impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address), false), isUsingLedger = _m[0], setIsUsingLedger = _m[1];
|
|
922
668
|
// Context
|
|
923
669
|
var contextValue = useMemo(function () {
|
|
924
670
|
return {
|
package/lib/connector.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import UniversalProvider from "@walletconnect/universal-provider";
|
|
1
|
+
import { UniversalConnector } from "@reown/appkit-universal-connector";
|
|
3
2
|
export declare const projectId = "eebad6a56ec8b3f08b70175934d35a9d";
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function getWalletConnectModal(rpcUrl: string): Promise<AppKit>;
|
|
6
|
-
export declare const WC_SUI_METHODS: {
|
|
7
|
-
readonly SIGN_TRANSACTION: "sui_signTransaction";
|
|
8
|
-
readonly SIGN_AND_EXECUTE_TRANSACTION: "sui_signAndExecuteTransaction";
|
|
9
|
-
readonly SIGN_PERSONAL_MESSAGE: "sui_signPersonalMessage";
|
|
10
|
-
};
|
|
3
|
+
export declare function getUniversalConnector(rpcUrl: string): Promise<UniversalConnector>;
|