@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.
@@ -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, isValidSuiAddress, normalizeSuiAddress, toBase64, } from "@mysten/sui/utils";
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 { WC_SUI_METHODS, getWalletConnectModal, getWalletConnectProvider, } from "../lib/connector";
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 _e = useSettingsContext(), rpc = _e.rpc, suiClient = _e.suiClient;
222
- // WalletConnect via @walletconnect/universal-provider
223
- // Matches the reference implementation: https://github.com/WalletConnect/react-core-up-sui
224
- var _f = useState(), wcSession = _f[0], setWcSession = _f[1];
225
- // Raw address as returned by the wallet (e.g. Fireblocks returns an
226
- // EVM-length address). We must send this back in WalletConnect request
227
- // params so the wallet recognises it as its own account.
228
- var wcRawAddress = useMemo(function () {
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 provider;
231
+ var connector;
246
232
  return __generator(this, function (_a) {
247
233
  switch (_a.label) {
248
- case 0: return [4 /*yield*/, getWalletConnectProvider()];
234
+ case 0: return [4 /*yield*/, getUniversalConnector(rpc.url)];
249
235
  case 1:
250
- provider = _a.sent();
251
- if (provider.session) {
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 _g = useState(false), isConnectWalletDropdownOpen = _g[0], setIsConnectWalletDropdownOpen = _g[1];
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 provider, res;
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*/, getWalletConnectProvider()];
393
- case 1:
394
- provider = _a.sent();
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 2:
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, wcRawAddress]);
411
- var connectWalletWrapper = useCallback(function (_wallet) { return __awaiter(_this, void 0, void 0, function () {
412
- var provider, modal, _a, provider, _b, err_1;
413
- return __generator(this, function (_c) {
414
- switch (_c.label) {
415
- case 0:
416
- _c.trys.push([0, 17, , 18]);
417
- if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/, 10];
418
- return [4 /*yield*/, getWalletConnectProvider()];
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
- }); }, [rpc.url, connectWallet, disconnectWallet]);
492
- var disconnectWalletWrapper = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
493
- var provider, err_2;
494
- return __generator(this, function (_a) {
495
- switch (_a.label) {
496
- case 0:
497
- _a.trys.push([0, 6, , 7]);
498
- if (!sessionAddress) return [3 /*break*/, 3];
499
- return [4 /*yield*/, getWalletConnectProvider()];
500
- case 1:
501
- provider = _a.sent();
502
- return [4 /*yield*/, provider.disconnect()];
503
- case 2:
504
- _a.sent();
505
- setWcSession(null);
506
- return [3 /*break*/, 5];
507
- case 3: return [4 /*yield*/, disconnectWallet()];
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
- }); }, [sessionAddress, disconnectWallet]);
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 : []; }, [(_c = walletConnection.wallet) === null || _c === void 0 ? void 0 : _c.accounts]);
525
- var accountRes = (_d = useCurrentAccount()) !== null && _d !== void 0 ? _d : undefined;
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 err_3;
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
- err_3 = _a.sent();
621
- console.error(err_3);
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, err_4;
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
- err_4 = _a.sent();
567
+ err_2 = _a.sent();
663
568
  // _transaction.getData().inputs.filter(input=>!!input.Object).map(input=>input.)
664
- console.error(err_4);
665
- throw err_4;
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, 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) {
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
- _f.label = 1;
589
+ _e.label = 1;
708
590
  case 1:
709
- _f.trys.push([1, 33, , 34]);
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*/, 21];
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
- txBytes = _f.sent();
726
- txBase64 = toBase64(txBytes);
727
- wcAddress = wcRawAddress !== null && wcRawAddress !== void 0 ? wcRawAddress : sessionAddress;
728
- params = {
729
- transaction: txBase64,
730
- account: wcAddress,
613
+ res = _e.sent();
614
+ signedTransaction_1 = {
615
+ bytes: res.transactionBytes,
616
+ signature: res.signature,
731
617
  };
732
- topic = (_a = provider_1.session) === null || _a === void 0 ? void 0 : _a.topic;
733
- console.log("[WalletContext] WalletConnect — session topic:", topic);
734
- console.log("[WalletContext] WalletConnect — session namespaces:", JSON.stringify((_b = provider_1.session) === null || _b === void 0 ? void 0 : _b.namespaces));
735
- console.log("[WalletContext] WalletConnect — request params:", params);
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;
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
- _f.trys.push([4, 6, , 7]);
745
- return [4 /*yield*/, signClient.ping({ topic: topic })];
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
- _f.sent();
748
- console.log("[WalletContext] WalletConnect ping succeeded (peer is alive)");
749
- return [3 /*break*/, 7];
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
- 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];
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*/, 23];
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 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.
656
+ case 7:
657
+ _e.sent();
860
658
  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;
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 27:
879
- res1 = _f.sent();
670
+ case 11:
671
+ res1 = _e.sent();
880
672
  onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
881
- return [4 /*yield*/, waitForTransactionWithCheck(res1.digest)];
882
- case 28: return [2 /*return*/, _f.sent()];
883
- case 29:
884
- err_6 = _f.sent();
885
- if (usedSignOnly)
886
- throw err_6;
887
- message = err_6 instanceof Error ? err_6.message : String(err_6);
888
- if (!message.includes("does not support"))
889
- throw err_6;
890
- console.warn("[WalletContext] Wallet does not support sign-only, falling back to signAndExecuteTransaction");
891
- return [3 /*break*/, 30];
892
- case 30: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
893
- transaction: transaction,
894
- })];
895
- case 31:
896
- res = _f.sent();
897
- digest = res.$kind === "Transaction"
898
- ? res.Transaction.digest
899
- : res.FailedTransaction.digest;
900
- return [4 /*yield*/, waitForTransactionWithCheck(digest)];
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 _h = useLocalStorage("isUsingLedger-".concat(impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address), false), isUsingLedger = _h[0], setIsUsingLedger = _h[1];
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 {