@suilend/sui-fe-next 2.0.28 → 2.0.30
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 +144 -359
- 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,13 @@ 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,
|
|
64
|
+
import { SUI_DECIMALS, toBase64 } from "@mysten/sui/utils";
|
|
65
65
|
import { getWallets } from "@wallet-standard/app";
|
|
66
66
|
import BigNumber from "bignumber.js";
|
|
67
67
|
import { useLDClient } from "launchdarkly-react-client-sdk";
|
|
68
68
|
import { useLocalStorage } from "usehooks-ts";
|
|
69
69
|
import { API_URL, formatAddress, isInMsafeApp } from "@suilend/sui-fe";
|
|
70
|
-
import {
|
|
70
|
+
import { getUniversalConnector } from "../lib/connector";
|
|
71
71
|
import { showErrorToast, showInfoToast } from "../lib/toasts";
|
|
72
72
|
import { useSettingsContext } from "./SettingsContext";
|
|
73
73
|
export var WalletType;
|
|
@@ -212,50 +212,34 @@ export var useWalletContext = function () { return useContext(WalletContext); };
|
|
|
212
212
|
function Inner(_a) {
|
|
213
213
|
var _b;
|
|
214
214
|
var _this = this;
|
|
215
|
-
var _c, _d;
|
|
215
|
+
var _c, _d, _e, _f, _g;
|
|
216
216
|
var appName = _a.appName, children = _a.children;
|
|
217
217
|
var router = useRouter();
|
|
218
218
|
var queryParams = (_b = {},
|
|
219
219
|
_b[WalletContextQueryParams.WALLET] = router.query[WalletContextQueryParams.WALLET],
|
|
220
220
|
_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]);
|
|
221
|
+
var _h = useSettingsContext(), rpc = _h.rpc, suiClient = _h.suiClient;
|
|
222
|
+
// Only used for wallet connect
|
|
223
|
+
var _j = useState(), universalConnector = _j[0], setUniversalConnector = _j[1];
|
|
224
|
+
var _k = useState(), session = _k[0], setSession = _k[1];
|
|
225
|
+
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];
|
|
226
|
+
var sessionAddress = sessionAddressWithout0x
|
|
227
|
+
? sessionAddressWithout0x.split(":").pop()
|
|
228
|
+
: undefined;
|
|
243
229
|
useEffect(function () {
|
|
244
230
|
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
245
|
-
var
|
|
231
|
+
var connector;
|
|
246
232
|
return __generator(this, function (_a) {
|
|
247
233
|
switch (_a.label) {
|
|
248
|
-
case 0: return [4 /*yield*/,
|
|
234
|
+
case 0: return [4 /*yield*/, getUniversalConnector(rpc.url)];
|
|
249
235
|
case 1:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
setWcSession(provider.session);
|
|
253
|
-
}
|
|
236
|
+
connector = _a.sent();
|
|
237
|
+
setUniversalConnector(connector);
|
|
254
238
|
return [2 /*return*/];
|
|
255
239
|
}
|
|
256
240
|
});
|
|
257
241
|
}); })();
|
|
258
|
-
}, []);
|
|
242
|
+
}, [rpc.url]);
|
|
259
243
|
// Impersonated address
|
|
260
244
|
var impersonatedAddress = queryParams[WalletContextQueryParams.WALLET];
|
|
261
245
|
// Wallets
|
|
@@ -369,7 +353,7 @@ function Inner(_a) {
|
|
|
369
353
|
wallets__web,
|
|
370
354
|
]);
|
|
371
355
|
// Wallet
|
|
372
|
-
var
|
|
356
|
+
var _l = useState(false), isConnectWalletDropdownOpen = _l[0], setIsConnectWalletDropdownOpen = _l[1];
|
|
373
357
|
var rawWallet = useCurrentWallet();
|
|
374
358
|
var wallet = useMemo(function () {
|
|
375
359
|
if (sessionAddress) {
|
|
@@ -383,23 +367,17 @@ function Inner(_a) {
|
|
|
383
367
|
var disconnectWallet = dAppKit.disconnectWallet;
|
|
384
368
|
var signPersonalMessageRaw = dAppKit.signPersonalMessage;
|
|
385
369
|
var walletConnectSignPersonalMessage = useCallback(function (message) { return __awaiter(_this, void 0, void 0, function () {
|
|
386
|
-
var
|
|
370
|
+
var res;
|
|
387
371
|
return __generator(this, function (_a) {
|
|
388
372
|
switch (_a.label) {
|
|
389
373
|
case 0:
|
|
390
|
-
if (!sessionAddress)
|
|
374
|
+
if (!sessionAddress || !universalConnector)
|
|
391
375
|
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
|
-
},
|
|
376
|
+
return [4 /*yield*/, universalConnector.request({
|
|
377
|
+
method: "sui_signPersonalMessage",
|
|
378
|
+
params: { message: message.toString() },
|
|
401
379
|
}, "sui:mainnet")];
|
|
402
|
-
case
|
|
380
|
+
case 1:
|
|
403
381
|
res = _a.sent();
|
|
404
382
|
return [2 /*return*/, {
|
|
405
383
|
signature: res.signature,
|
|
@@ -407,122 +385,49 @@ function Inner(_a) {
|
|
|
407
385
|
}];
|
|
408
386
|
}
|
|
409
387
|
});
|
|
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*/];
|
|
388
|
+
}); }, [sessionAddress, universalConnector]);
|
|
389
|
+
var connectWalletWrapper = useCallback(function (_wallet) {
|
|
390
|
+
try {
|
|
391
|
+
if (_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect) {
|
|
392
|
+
universalConnector.connect().then(function (res) {
|
|
393
|
+
disconnectWallet();
|
|
394
|
+
setSession(res.session);
|
|
395
|
+
});
|
|
396
|
+
return;
|
|
489
397
|
}
|
|
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*/];
|
|
398
|
+
if (!_wallet.raw)
|
|
399
|
+
throw new Error("Missing wallet");
|
|
400
|
+
connectWallet({ wallet: _wallet.raw });
|
|
401
|
+
universalConnector.disconnect();
|
|
402
|
+
setSession(null);
|
|
403
|
+
showInfoToast("Connected ".concat(_wallet.name));
|
|
404
|
+
setIsConnectWalletDropdownOpen(false);
|
|
405
|
+
}
|
|
406
|
+
catch (err) {
|
|
407
|
+
showErrorToast("Failed to connect ".concat(_wallet.name), err);
|
|
408
|
+
console.error(err);
|
|
409
|
+
}
|
|
410
|
+
}, [connectWallet, disconnectWallet, universalConnector]);
|
|
411
|
+
var disconnectWalletWrapper = useCallback(function () {
|
|
412
|
+
try {
|
|
413
|
+
if (sessionAddress) {
|
|
414
|
+
universalConnector.disconnect();
|
|
415
|
+
setSession(null);
|
|
519
416
|
}
|
|
520
|
-
|
|
521
|
-
|
|
417
|
+
else {
|
|
418
|
+
disconnectWallet();
|
|
419
|
+
showInfoToast("Disconnected wallet");
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
catch (err) {
|
|
423
|
+
showErrorToast("Failed to disconnect wallet", err);
|
|
424
|
+
console.error(err);
|
|
425
|
+
}
|
|
426
|
+
}, [sessionAddress, universalConnector, disconnectWallet]);
|
|
522
427
|
// Accounts
|
|
523
428
|
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 = (
|
|
429
|
+
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]);
|
|
430
|
+
var accountRes = (_g = useCurrentAccount()) !== null && _g !== void 0 ? _g : undefined;
|
|
526
431
|
var walletConnectAccount = useMemo(function () {
|
|
527
432
|
return sessionAddress
|
|
528
433
|
? {
|
|
@@ -597,7 +502,7 @@ function Inner(_a) {
|
|
|
597
502
|
if (!(wallet === null || wallet === void 0 ? void 0 : wallet.name))
|
|
598
503
|
return;
|
|
599
504
|
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
600
|
-
var
|
|
505
|
+
var err_1;
|
|
601
506
|
return __generator(this, function (_a) {
|
|
602
507
|
switch (_a.label) {
|
|
603
508
|
case 0:
|
|
@@ -617,8 +522,8 @@ function Inner(_a) {
|
|
|
617
522
|
_a.sent();
|
|
618
523
|
return [3 /*break*/, 3];
|
|
619
524
|
case 2:
|
|
620
|
-
|
|
621
|
-
console.error(
|
|
525
|
+
err_1 = _a.sent();
|
|
526
|
+
console.error(err_1);
|
|
622
527
|
return [3 /*break*/, 3];
|
|
623
528
|
case 3: return [2 /*return*/];
|
|
624
529
|
}
|
|
@@ -633,7 +538,7 @@ function Inner(_a) {
|
|
|
633
538
|
args_1[_i - 1] = arguments[_i];
|
|
634
539
|
}
|
|
635
540
|
return __awaiter(_this, __spreadArray([transaction_1], args_1, true), void 0, function (transaction, setGasBudget) {
|
|
636
|
-
var _address, _transaction, inspectResults,
|
|
541
|
+
var _address, _transaction, inspectResults, err_2;
|
|
637
542
|
if (setGasBudget === void 0) { setGasBudget = true; }
|
|
638
543
|
return __generator(this, function (_a) {
|
|
639
544
|
switch (_a.label) {
|
|
@@ -659,43 +564,20 @@ function Inner(_a) {
|
|
|
659
564
|
throw new Error(inspectResults.error);
|
|
660
565
|
return [2 /*return*/, inspectResults];
|
|
661
566
|
case 3:
|
|
662
|
-
|
|
567
|
+
err_2 = _a.sent();
|
|
663
568
|
// _transaction.getData().inputs.filter(input=>!!input.Object).map(input=>input.)
|
|
664
|
-
console.error(
|
|
665
|
-
throw
|
|
569
|
+
console.error(err_2);
|
|
570
|
+
throw err_2;
|
|
666
571
|
case 4: return [2 /*return*/];
|
|
667
572
|
}
|
|
668
573
|
});
|
|
669
574
|
});
|
|
670
575
|
}, [impersonatedAddress, account === null || account === void 0 ? void 0 : account.address, gasBudget, suiClient]);
|
|
671
|
-
var waitForTransactionWithCheck = useCallback(function (digest) { return __awaiter(_this, void 0, void 0, function () {
|
|
672
|
-
var res;
|
|
673
|
-
var _a, _b;
|
|
674
|
-
return __generator(this, function (_c) {
|
|
675
|
-
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
576
|
var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
|
|
695
|
-
var _address,
|
|
696
|
-
var _a, _b, _c, _d
|
|
697
|
-
return __generator(this, function (
|
|
698
|
-
switch (
|
|
577
|
+
var _address, txBytes, res, signedTransaction_1, res1_1, res2_1, msafeWallet, msafeFeature, msafeAccount, signedTransaction, res1, res2, err_3;
|
|
578
|
+
var _a, _b, _c, _d;
|
|
579
|
+
return __generator(this, function (_e) {
|
|
580
|
+
switch (_e.label) {
|
|
699
581
|
case 0:
|
|
700
582
|
_address = impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address;
|
|
701
583
|
if (_address) {
|
|
@@ -704,9 +586,9 @@ function Inner(_a) {
|
|
|
704
586
|
}
|
|
705
587
|
catch (err) { }
|
|
706
588
|
}
|
|
707
|
-
|
|
589
|
+
_e.label = 1;
|
|
708
590
|
case 1:
|
|
709
|
-
|
|
591
|
+
_e.trys.push([1, 13, , 14]);
|
|
710
592
|
// Gas budget
|
|
711
593
|
if (gasBudget !== "")
|
|
712
594
|
transaction.setGasBudget(+new BigNumber(gasBudget)
|
|
@@ -715,135 +597,54 @@ function Inner(_a) {
|
|
|
715
597
|
onSetGasBudget === null || onSetGasBudget === void 0 ? void 0 : onSetGasBudget(transaction);
|
|
716
598
|
// Log
|
|
717
599
|
console.log("[WalletContext] signExecuteAndWaitForTransaction - transaction.getData():", transaction.getData());
|
|
718
|
-
if (!sessionAddress) return [3 /*break*/,
|
|
719
|
-
return [4 /*yield*/, getWalletConnectProvider()];
|
|
720
|
-
case 2:
|
|
721
|
-
provider_1 = _f.sent();
|
|
600
|
+
if (!(sessionAddress && universalConnector)) return [3 /*break*/, 6];
|
|
722
601
|
transaction.setSender(sessionAddress);
|
|
723
602
|
return [4 /*yield*/, transaction.build({ client: suiClient })];
|
|
603
|
+
case 2:
|
|
604
|
+
txBytes = _e.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 = _e.sent();
|
|
614
|
+
signedTransaction_1 = {
|
|
615
|
+
bytes: res.transactionBytes,
|
|
616
|
+
signature: res.signature,
|
|
731
617
|
};
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
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;
|
|
618
|
+
onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction_1);
|
|
619
|
+
return [4 /*yield*/, suiClient.executeTransactionBlock({
|
|
620
|
+
transactionBlock: signedTransaction_1.bytes,
|
|
621
|
+
signature: signedTransaction_1.signature,
|
|
622
|
+
})];
|
|
743
623
|
case 4:
|
|
744
|
-
|
|
745
|
-
|
|
624
|
+
res1_1 = _e.sent();
|
|
625
|
+
onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1_1);
|
|
626
|
+
return [4 /*yield*/, suiClient.waitForTransaction({
|
|
627
|
+
digest: res1_1.digest,
|
|
628
|
+
options: {
|
|
629
|
+
showBalanceChanges: true,
|
|
630
|
+
showEffects: true,
|
|
631
|
+
showEvents: true,
|
|
632
|
+
showObjectChanges: true,
|
|
633
|
+
},
|
|
634
|
+
})];
|
|
746
635
|
case 5:
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
636
|
+
res2_1 = _e.sent();
|
|
637
|
+
if (((_a = res2_1.effects) === null || _a === void 0 ? void 0 : _a.status) !== undefined &&
|
|
638
|
+
res2_1.effects.status.status === "failure")
|
|
639
|
+
throw new Error((_b = res2_1.effects.status.error) !== null && _b !== void 0 ? _b : "Transaction failed");
|
|
640
|
+
return [2 /*return*/, res2_1];
|
|
750
641
|
case 6:
|
|
751
|
-
|
|
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];
|
|
642
|
+
if (!isInMsafeApp()) return [3 /*break*/, 9];
|
|
842
643
|
msafeWallet = getWallets()
|
|
843
644
|
.get()
|
|
844
645
|
.find(function (w) { return w.name === WalletName.MSAFE_WALLET; });
|
|
845
646
|
msafeFeature = msafeWallet === null || msafeWallet === void 0 ? void 0 : msafeWallet.features["sui:signAndExecuteTransactionBlock"];
|
|
846
|
-
if (!(msafeFeature && account)) return [3 /*break*/,
|
|
647
|
+
if (!(msafeFeature && account)) return [3 /*break*/, 8];
|
|
847
648
|
msafeAccount = msafeWallet.accounts.find(function (a) { return a.address === account.address; });
|
|
848
649
|
if (!msafeAccount)
|
|
849
650
|
throw new Error("MSafe account not found");
|
|
@@ -852,73 +653,57 @@ function Inner(_a) {
|
|
|
852
653
|
account: msafeAccount,
|
|
853
654
|
chain: "sui:mainnet",
|
|
854
655
|
})];
|
|
855
|
-
case
|
|
856
|
-
|
|
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.
|
|
656
|
+
case 7:
|
|
657
|
+
_e.sent();
|
|
860
658
|
throw new Error("Unreachable");
|
|
861
|
-
case
|
|
862
|
-
case
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
case
|
|
866
|
-
|
|
867
|
-
return [4 /*yield*/, dAppKit.signTransaction({
|
|
868
|
-
transaction: transaction,
|
|
869
|
-
})];
|
|
870
|
-
case 26:
|
|
871
|
-
signedTransaction = _f.sent();
|
|
872
|
-
usedSignOnly = true;
|
|
659
|
+
case 8: throw new Error("MSafe wallet not found. Please reload the page inside MSafe.");
|
|
660
|
+
case 9: return [4 /*yield*/, dAppKit.signTransaction({
|
|
661
|
+
transaction: transaction,
|
|
662
|
+
})];
|
|
663
|
+
case 10:
|
|
664
|
+
signedTransaction = _e.sent();
|
|
873
665
|
onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
|
|
874
666
|
return [4 /*yield*/, suiClient.executeTransactionBlock({
|
|
875
667
|
transactionBlock: signedTransaction.bytes,
|
|
876
668
|
signature: signedTransaction.signature,
|
|
877
669
|
})];
|
|
878
|
-
case
|
|
879
|
-
res1 =
|
|
670
|
+
case 11:
|
|
671
|
+
res1 = _e.sent();
|
|
880
672
|
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*/];
|
|
673
|
+
return [4 /*yield*/, suiClient.waitForTransaction({
|
|
674
|
+
digest: res1.digest,
|
|
675
|
+
options: {
|
|
676
|
+
showBalanceChanges: true,
|
|
677
|
+
showEffects: true,
|
|
678
|
+
showEvents: true,
|
|
679
|
+
showObjectChanges: true,
|
|
680
|
+
},
|
|
681
|
+
})];
|
|
682
|
+
case 12:
|
|
683
|
+
res2 = _e.sent();
|
|
684
|
+
if (((_c = res2.effects) === null || _c === void 0 ? void 0 : _c.status) !== undefined &&
|
|
685
|
+
res2.effects.status.status === "failure")
|
|
686
|
+
throw new Error((_d = res2.effects.status.error) !== null && _d !== void 0 ? _d : "Transaction failed");
|
|
687
|
+
return [2 /*return*/, res2];
|
|
688
|
+
case 13:
|
|
689
|
+
err_3 = _e.sent();
|
|
690
|
+
console.error(err_3);
|
|
691
|
+
throw err_3;
|
|
692
|
+
case 14: return [2 /*return*/];
|
|
907
693
|
}
|
|
908
694
|
});
|
|
909
695
|
}); }, [
|
|
696
|
+
universalConnector,
|
|
910
697
|
sessionAddress,
|
|
911
|
-
wcRawAddress,
|
|
912
698
|
gasBudget,
|
|
913
699
|
impersonatedAddress,
|
|
914
700
|
account,
|
|
915
701
|
dryRunTransaction,
|
|
916
702
|
suiClient,
|
|
917
703
|
dAppKit,
|
|
918
|
-
waitForTransactionWithCheck,
|
|
919
704
|
]);
|
|
920
705
|
// Using Ledger
|
|
921
|
-
var
|
|
706
|
+
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
707
|
// Context
|
|
923
708
|
var contextValue = useMemo(function () {
|
|
924
709
|
return {
|