@suilend/sui-fe-next 2.0.21 → 2.0.23

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.
@@ -426,7 +426,7 @@ function Inner(_a) {
426
426
  case 3:
427
427
  _c.trys.push([3, , 5, 6]);
428
428
  return [4 /*yield*/, provider.connect({
429
- optionalNamespaces: {
429
+ namespaces: {
430
430
  sui: {
431
431
  methods: [
432
432
  WC_SUI_METHODS.SIGN_TRANSACTION,
@@ -682,10 +682,10 @@ function Inner(_a) {
682
682
  });
683
683
  }); }, [suiClient]);
684
684
  var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
685
- var _address, provider, txBytes, txBase64, params, topic_1, signClient_1, 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;
686
- var _a, _b, _c, _d;
687
- return __generator(this, function (_e) {
688
- switch (_e.label) {
685
+ var _address, provider, txBytes, txBase64, params, topic_1, signClient_1, 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;
686
+ var _a, _b, _c, _d, _e;
687
+ return __generator(this, function (_f) {
688
+ switch (_f.label) {
689
689
  case 0:
690
690
  _address = impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address;
691
691
  if (_address) {
@@ -694,9 +694,9 @@ function Inner(_a) {
694
694
  }
695
695
  catch (err) { }
696
696
  }
697
- _e.label = 1;
697
+ _f.label = 1;
698
698
  case 1:
699
- _e.trys.push([1, 29, , 30]);
699
+ _f.trys.push([1, 33, , 34]);
700
700
  // Gas budget
701
701
  if (gasBudget !== "")
702
702
  transaction.setGasBudget(+new BigNumber(gasBudget)
@@ -705,14 +705,14 @@ function Inner(_a) {
705
705
  onSetGasBudget === null || onSetGasBudget === void 0 ? void 0 : onSetGasBudget(transaction);
706
706
  // Log
707
707
  console.log("[WalletContext] signExecuteAndWaitForTransaction - transaction.getData():", transaction.getData());
708
- if (!sessionAddress) return [3 /*break*/, 17];
708
+ if (!sessionAddress) return [3 /*break*/, 21];
709
709
  return [4 /*yield*/, getWalletConnectProvider()];
710
710
  case 2:
711
- provider = _e.sent();
711
+ provider = _f.sent();
712
712
  transaction.setSender(sessionAddress);
713
713
  return [4 /*yield*/, transaction.build({ client: suiClient })];
714
714
  case 3:
715
- txBytes = _e.sent();
715
+ txBytes = _f.sent();
716
716
  txBase64 = toBase64(txBytes);
717
717
  params = {
718
718
  transaction: txBase64,
@@ -725,13 +725,30 @@ function Inner(_a) {
725
725
  if (!topic_1)
726
726
  throw new Error("WalletConnect session not found");
727
727
  signClient_1 = provider.client;
728
- // Debug: check relay connectivity and session health
728
+ // Debug: full session dump
729
+ console.log("[WalletContext] WalletConnect — full session:", JSON.stringify(provider.session, null, 2));
729
730
  console.log("[WalletContext] WalletConnect — relay connected:", signClient_1.core.relayer.connected);
730
- console.log("[WalletContext] WalletConnect — session expiry:", (_c = provider.session) === null || _c === void 0 ? void 0 : _c.expiry, "now:", Math.floor(Date.now() / 1000), "expired:", ((_d = provider.session) === null || _d === void 0 ? void 0 : _d.expiry)
731
- ? provider.session.expiry < Math.floor(Date.now() / 1000)
732
- : "unknown");
731
+ _f.label = 4;
732
+ case 4:
733
+ _f.trys.push([4, 6, , 7]);
734
+ return [4 /*yield*/, signClient_1.ping({ topic: topic_1 })];
735
+ case 5:
736
+ _f.sent();
737
+ console.log("[WalletContext] WalletConnect — ping succeeded (peer is alive)");
738
+ return [3 /*break*/, 7];
739
+ case 6:
740
+ pingErr_1 = _f.sent();
741
+ console.error("[WalletContext] WalletConnect — ping FAILED (peer may be offline):", pingErr_1);
742
+ return [3 /*break*/, 7];
743
+ case 7:
744
+ debugHandler = function (event) {
745
+ console.log("[WalletContext] WalletConnect — relay message received:", event);
746
+ };
747
+ signClient_1.core.relayer.on("message", debugHandler);
748
+ pendingBefore = (_e = (_d = (_c = signClient_1.pendingRequest).getAll) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : [];
749
+ console.log("[WalletContext] WalletConnect — pending requests before:", Array.isArray(pendingBefore) ? pendingBefore.length : pendingBefore);
733
750
  wcRequest = function (method, requestParams, timeoutMs) {
734
- if (timeoutMs === void 0) { timeoutMs = 120000; }
751
+ if (timeoutMs === void 0) { timeoutMs = 15000; }
735
752
  return new Promise(function (resolve, reject) {
736
753
  var timer = setTimeout(function () {
737
754
  reject(new Error("WalletConnect request \"".concat(method, "\" timed out after ").concat(timeoutMs / 1000, "s \u2014 the wallet did not respond. ") +
@@ -760,39 +777,41 @@ function Inner(_a) {
760
777
  signRes = null;
761
778
  execDigest = null;
762
779
  _i = 0, methods_1 = methods;
763
- _e.label = 4;
764
- case 4:
765
- if (!(_i < methods_1.length)) return [3 /*break*/, 12];
780
+ _f.label = 8;
781
+ case 8:
782
+ if (!(_i < methods_1.length)) return [3 /*break*/, 16];
766
783
  method = methods_1[_i];
767
- _e.label = 5;
768
- case 5:
769
- _e.trys.push([5, 10, , 11]);
784
+ _f.label = 9;
785
+ case 9:
786
+ _f.trys.push([9, 14, , 15]);
770
787
  console.log("[WalletContext] WalletConnect \u2014 trying ".concat(method));
771
- if (!(method === WC_SUI_METHODS.SIGN_TRANSACTION)) return [3 /*break*/, 7];
788
+ if (!(method === WC_SUI_METHODS.SIGN_TRANSACTION)) return [3 /*break*/, 11];
772
789
  return [4 /*yield*/, wcRequest(method, params)];
773
- case 6:
774
- signRes = _e.sent();
790
+ case 10:
791
+ signRes = _f.sent();
775
792
  console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded"));
776
- return [3 /*break*/, 12];
777
- case 7: return [4 /*yield*/, wcRequest(method, params)];
778
- case 8:
779
- res_1 = _e.sent();
793
+ return [3 /*break*/, 16];
794
+ case 11: return [4 /*yield*/, wcRequest(method, params)];
795
+ case 12:
796
+ res_1 = _f.sent();
780
797
  console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded, digest:"), res_1.digest);
781
798
  execDigest = res_1.digest;
782
- return [3 /*break*/, 12];
783
- case 9: return [3 /*break*/, 11];
784
- case 10:
785
- err_5 = _e.sent();
799
+ return [3 /*break*/, 16];
800
+ case 13: return [3 /*break*/, 15];
801
+ case 14:
802
+ err_5 = _f.sent();
786
803
  console.warn("[WalletContext] WalletConnect \u2014 ".concat(method, " failed:"), err_5);
787
- return [3 /*break*/, 11];
788
- case 11:
804
+ return [3 /*break*/, 15];
805
+ case 15:
789
806
  _i++;
790
- return [3 /*break*/, 4];
791
- case 12:
792
- if (!execDigest) return [3 /*break*/, 14];
807
+ return [3 /*break*/, 8];
808
+ case 16:
809
+ // Cleanup debug listener
810
+ signClient_1.core.relayer.off("message", debugHandler);
811
+ if (!execDigest) return [3 /*break*/, 18];
793
812
  return [4 /*yield*/, waitForTransactionWithCheck(execDigest)];
794
- case 13: return [2 /*return*/, _e.sent()];
795
- case 14:
813
+ case 17: return [2 /*return*/, _f.sent()];
814
+ case 18:
796
815
  if (!signRes) {
797
816
  throw new Error("WalletConnect: wallet did not respond to any signing method. " +
798
817
  "Check that the wallet supports Sui transactions and that the session is active.");
@@ -802,17 +821,17 @@ function Inner(_a) {
802
821
  transactionBlock: signRes.transactionBytes,
803
822
  signature: signRes.signature,
804
823
  })];
805
- case 15:
806
- execRes = _e.sent();
824
+ case 19:
825
+ execRes = _f.sent();
807
826
  return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
808
- case 16: return [2 /*return*/, _e.sent()];
809
- case 17:
810
- if (!isInMsafeApp()) return [3 /*break*/, 20];
827
+ case 20: return [2 /*return*/, _f.sent()];
828
+ case 21:
829
+ if (!isInMsafeApp()) return [3 /*break*/, 24];
811
830
  msafeWallet = getWallets()
812
831
  .get()
813
832
  .find(function (w) { return w.name === WalletName.MSAFE_WALLET; });
814
833
  msafeFeature = msafeWallet === null || msafeWallet === void 0 ? void 0 : msafeWallet.features["sui:signAndExecuteTransactionBlock"];
815
- if (!(msafeFeature && account)) return [3 /*break*/, 19];
834
+ if (!(msafeFeature && account)) return [3 /*break*/, 23];
816
835
  msafeAccount = msafeWallet.accounts.find(function (a) { return a.address === account.address; });
817
836
  if (!msafeAccount)
818
837
  throw new Error("MSafe account not found");
@@ -821,58 +840,58 @@ function Inner(_a) {
821
840
  account: msafeAccount,
822
841
  chain: "sui:mainnet",
823
842
  })];
824
- case 18:
825
- _e.sent();
843
+ case 22:
844
+ _f.sent();
826
845
  // MSafe proposes the transaction to the multisig queue;
827
846
  // the promise never resolves (only rejects on cancel).
828
847
  // If we reach here the proposal was accepted.
829
848
  throw new Error("Unreachable");
830
- case 19: throw new Error("MSafe wallet not found. Please reload the page inside MSafe.");
831
- case 20:
849
+ case 23: throw new Error("MSafe wallet not found. Please reload the page inside MSafe.");
850
+ case 24:
832
851
  usedSignOnly = false;
833
- _e.label = 21;
834
- case 21:
835
- _e.trys.push([21, 25, , 26]);
852
+ _f.label = 25;
853
+ case 25:
854
+ _f.trys.push([25, 29, , 30]);
836
855
  return [4 /*yield*/, dAppKit.signTransaction({
837
856
  transaction: transaction,
838
857
  })];
839
- case 22:
840
- signedTransaction = _e.sent();
858
+ case 26:
859
+ signedTransaction = _f.sent();
841
860
  usedSignOnly = true;
842
861
  onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
843
862
  return [4 /*yield*/, suiClient.executeTransactionBlock({
844
863
  transactionBlock: signedTransaction.bytes,
845
864
  signature: signedTransaction.signature,
846
865
  })];
847
- case 23:
848
- res1 = _e.sent();
866
+ case 27:
867
+ res1 = _f.sent();
849
868
  onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
850
869
  return [4 /*yield*/, waitForTransactionWithCheck(res1.digest)];
851
- case 24: return [2 /*return*/, _e.sent()];
852
- case 25:
853
- err_6 = _e.sent();
870
+ case 28: return [2 /*return*/, _f.sent()];
871
+ case 29:
872
+ err_6 = _f.sent();
854
873
  if (usedSignOnly)
855
874
  throw err_6;
856
875
  message = err_6 instanceof Error ? err_6.message : String(err_6);
857
876
  if (!message.includes("does not support"))
858
877
  throw err_6;
859
878
  console.warn("[WalletContext] Wallet does not support sign-only, falling back to signAndExecuteTransaction");
860
- return [3 /*break*/, 26];
861
- case 26: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
879
+ return [3 /*break*/, 30];
880
+ case 30: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
862
881
  transaction: transaction,
863
882
  })];
864
- case 27:
865
- res = _e.sent();
883
+ case 31:
884
+ res = _f.sent();
866
885
  digest = res.$kind === "Transaction"
867
886
  ? res.Transaction.digest
868
887
  : res.FailedTransaction.digest;
869
888
  return [4 /*yield*/, waitForTransactionWithCheck(digest)];
870
- case 28: return [2 /*return*/, _e.sent()];
871
- case 29:
872
- err_7 = _e.sent();
889
+ case 32: return [2 /*return*/, _f.sent()];
890
+ case 33:
891
+ err_7 = _f.sent();
873
892
  console.error(err_7);
874
893
  throw err_7;
875
- case 30: return [2 /*return*/];
894
+ case 34: return [2 /*return*/];
876
895
  }
877
896
  });
878
897
  }); }, [
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@suilend/sui-fe-next","version":"2.0.21","private":false,"description":"A collection of TypeScript frontend components and hooks","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./contexts/WalletContext":"./contexts/WalletContext.jsx","./contexts/SettingsContext":"./contexts/SettingsContext.jsx","./contexts":"./contexts/index.js","./fetchers":"./fetchers/index.js","./fetchers/useFetchBalances":"./fetchers/useFetchBalances.js","./hooks/useRefreshOnBalancesChange":"./hooks/useRefreshOnBalancesChange.js","./hooks/useLedgerHashDialog":"./hooks/useLedgerHashDialog.js","./hooks/useIsAndroid":"./hooks/useIsAndroid.jsx","./hooks/useCoinMetadataMap":"./hooks/useCoinMetadataMap.js","./hooks":"./hooks/index.js","./hooks/useIsTouchscreen":"./hooks/useIsTouchscreen.jsx","./hooks/useIsiOS":"./hooks/useIsiOS.jsx","./hooks/keypair":"./hooks/keypair.js","./lib/track":"./lib/track.js","./lib":"./lib/index.js","./lib/router":"./lib/router.js","./lib/toasts":"./lib/toasts.jsx","./lib/connector":"./lib/connector.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix src/","prettier":"prettier --write src/","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ./release.js && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/sui-fe.git"},"bugs":{"url":"https://github.com/suilend/sui-fe/issues"},"dependencies":{"@reown/appkit":"1.8.2","@tanstack/react-query":"^5.60.2","@wallet-standard/app":"^1.1.0","@walletconnect/universal-provider":"2.21.1","bignumber.js":"^9.1.2","launchdarkly-react-client-sdk":"^3.6.0","lodash":"^4.17.21","mixpanel-browser":"^2.72.0","next":"^15.0.3","react":"18.3.1","react-dom":"18.3.1","react-responsive":"^10.0.0","sonner":"1.4.41","swr":"^2.2.5","tailwind-merge":"^2.5.4","usehooks-ts":"^3.1.1"},"devDependencies":{"@tsconfig/next":"^2.0.3","@types/lodash":"^4.17.13","@types/node":"^22.9.0","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@typescript-eslint/eslint-plugin":"^8.14.0","@typescript-eslint/parser":"^8.14.0","eslint":"^9.14.0","eslint-config-next":"^15.0.3","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.1","prettier":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.6.3"},"peerDependencies":{"@mysten/dapp-kit-core":"1.0.3","@mysten/dapp-kit-react":"1.0.1","@mysten/sui":"2.3.1","@mysten/wallet-standard":"0.20.0","@suilend/sui-fe":"^2.0.10"}}
1
+ {"name":"@suilend/sui-fe-next","version":"2.0.23","private":false,"description":"A collection of TypeScript frontend components and hooks","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./contexts/WalletContext":"./contexts/WalletContext.jsx","./contexts/SettingsContext":"./contexts/SettingsContext.jsx","./contexts":"./contexts/index.js","./fetchers":"./fetchers/index.js","./fetchers/useFetchBalances":"./fetchers/useFetchBalances.js","./hooks/useRefreshOnBalancesChange":"./hooks/useRefreshOnBalancesChange.js","./hooks/useLedgerHashDialog":"./hooks/useLedgerHashDialog.js","./hooks/useIsAndroid":"./hooks/useIsAndroid.jsx","./hooks/useCoinMetadataMap":"./hooks/useCoinMetadataMap.js","./hooks":"./hooks/index.js","./hooks/useIsTouchscreen":"./hooks/useIsTouchscreen.jsx","./hooks/useIsiOS":"./hooks/useIsiOS.jsx","./hooks/keypair":"./hooks/keypair.js","./lib/track":"./lib/track.js","./lib":"./lib/index.js","./lib/router":"./lib/router.js","./lib/toasts":"./lib/toasts.jsx","./lib/connector":"./lib/connector.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix src/","prettier":"prettier --write src/","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ./release.js && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/sui-fe.git"},"bugs":{"url":"https://github.com/suilend/sui-fe/issues"},"dependencies":{"@reown/appkit":"1.8.2","@tanstack/react-query":"^5.60.2","@wallet-standard/app":"^1.1.0","@walletconnect/universal-provider":"2.21.1","bignumber.js":"^9.1.2","launchdarkly-react-client-sdk":"^3.6.0","lodash":"^4.17.21","mixpanel-browser":"^2.72.0","next":"^15.0.3","react":"18.3.1","react-dom":"18.3.1","react-responsive":"^10.0.0","sonner":"1.4.41","swr":"^2.2.5","tailwind-merge":"^2.5.4","usehooks-ts":"^3.1.1"},"devDependencies":{"@tsconfig/next":"^2.0.3","@types/lodash":"^4.17.13","@types/node":"^22.9.0","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@typescript-eslint/eslint-plugin":"^8.14.0","@typescript-eslint/parser":"^8.14.0","eslint":"^9.14.0","eslint-config-next":"^15.0.3","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.1","prettier":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.6.3"},"peerDependencies":{"@mysten/dapp-kit-core":"1.0.3","@mysten/dapp-kit-react":"1.0.1","@mysten/sui":"2.3.1","@mysten/wallet-standard":"0.20.0","@suilend/sui-fe":"^2.0.10"}}