@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.
- package/contexts/WalletContext.jsx +86 -67
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -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
|
-
|
|
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 (
|
|
688
|
-
switch (
|
|
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
|
-
|
|
697
|
+
_f.label = 1;
|
|
698
698
|
case 1:
|
|
699
|
-
|
|
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*/,
|
|
708
|
+
if (!sessionAddress) return [3 /*break*/, 21];
|
|
709
709
|
return [4 /*yield*/, getWalletConnectProvider()];
|
|
710
710
|
case 2:
|
|
711
|
-
provider =
|
|
711
|
+
provider = _f.sent();
|
|
712
712
|
transaction.setSender(sessionAddress);
|
|
713
713
|
return [4 /*yield*/, transaction.build({ client: suiClient })];
|
|
714
714
|
case 3:
|
|
715
|
-
txBytes =
|
|
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:
|
|
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
|
-
|
|
731
|
-
|
|
732
|
-
|
|
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 =
|
|
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
|
-
|
|
764
|
-
case
|
|
765
|
-
if (!(_i < methods_1.length)) return [3 /*break*/,
|
|
780
|
+
_f.label = 8;
|
|
781
|
+
case 8:
|
|
782
|
+
if (!(_i < methods_1.length)) return [3 /*break*/, 16];
|
|
766
783
|
method = methods_1[_i];
|
|
767
|
-
|
|
768
|
-
case
|
|
769
|
-
|
|
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*/,
|
|
788
|
+
if (!(method === WC_SUI_METHODS.SIGN_TRANSACTION)) return [3 /*break*/, 11];
|
|
772
789
|
return [4 /*yield*/, wcRequest(method, params)];
|
|
773
|
-
case
|
|
774
|
-
signRes =
|
|
790
|
+
case 10:
|
|
791
|
+
signRes = _f.sent();
|
|
775
792
|
console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded"));
|
|
776
|
-
return [3 /*break*/,
|
|
777
|
-
case
|
|
778
|
-
case
|
|
779
|
-
res_1 =
|
|
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*/,
|
|
783
|
-
case
|
|
784
|
-
case
|
|
785
|
-
err_5 =
|
|
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*/,
|
|
788
|
-
case
|
|
804
|
+
return [3 /*break*/, 15];
|
|
805
|
+
case 15:
|
|
789
806
|
_i++;
|
|
790
|
-
return [3 /*break*/,
|
|
791
|
-
case
|
|
792
|
-
|
|
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
|
|
795
|
-
case
|
|
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
|
|
806
|
-
execRes =
|
|
824
|
+
case 19:
|
|
825
|
+
execRes = _f.sent();
|
|
807
826
|
return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
|
|
808
|
-
case
|
|
809
|
-
case
|
|
810
|
-
if (!isInMsafeApp()) return [3 /*break*/,
|
|
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*/,
|
|
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
|
|
825
|
-
|
|
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
|
|
831
|
-
case
|
|
849
|
+
case 23: throw new Error("MSafe wallet not found. Please reload the page inside MSafe.");
|
|
850
|
+
case 24:
|
|
832
851
|
usedSignOnly = false;
|
|
833
|
-
|
|
834
|
-
case
|
|
835
|
-
|
|
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
|
|
840
|
-
signedTransaction =
|
|
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
|
|
848
|
-
res1 =
|
|
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
|
|
852
|
-
case
|
|
853
|
-
err_6 =
|
|
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*/,
|
|
861
|
-
case
|
|
879
|
+
return [3 /*break*/, 30];
|
|
880
|
+
case 30: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
|
|
862
881
|
transaction: transaction,
|
|
863
882
|
})];
|
|
864
|
-
case
|
|
865
|
-
res =
|
|
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
|
|
871
|
-
case
|
|
872
|
-
err_7 =
|
|
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
|
|
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.
|
|
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"}}
|