@suilend/sui-fe-next 2.0.22 → 2.0.24
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 +85 -68
- 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, 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 (
|
|
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,16 +725,27 @@ 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:
|
|
733
744
|
debugHandler = function (event) {
|
|
734
745
|
console.log("[WalletContext] WalletConnect — relay message received:", event);
|
|
735
746
|
};
|
|
736
747
|
signClient_1.core.relayer.on("message", debugHandler);
|
|
737
|
-
pendingBefore = (
|
|
748
|
+
pendingBefore = (_e = (_d = (_c = signClient_1.pendingRequest).getAll) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : [];
|
|
738
749
|
console.log("[WalletContext] WalletConnect — pending requests before:", Array.isArray(pendingBefore) ? pendingBefore.length : pendingBefore);
|
|
739
750
|
wcRequest = function (method, requestParams, timeoutMs) {
|
|
740
751
|
if (timeoutMs === void 0) { timeoutMs = 15000; }
|
|
@@ -743,11 +754,17 @@ function Inner(_a) {
|
|
|
743
754
|
reject(new Error("WalletConnect request \"".concat(method, "\" timed out after ").concat(timeoutMs / 1000, "s \u2014 the wallet did not respond. ") +
|
|
744
755
|
"This usually means the wallet does not support this method."));
|
|
745
756
|
}, timeoutMs);
|
|
757
|
+
console.log("[WalletContext] WalletConnect \u2014 sending request:", JSON.stringify({
|
|
758
|
+
method: method,
|
|
759
|
+
params: requestParams,
|
|
760
|
+
chainId: "sui:mainnet",
|
|
761
|
+
topic: topic_1,
|
|
762
|
+
}));
|
|
746
763
|
signClient_1
|
|
747
764
|
.request({
|
|
748
765
|
topic: topic_1,
|
|
749
766
|
chainId: "sui:mainnet",
|
|
750
|
-
request: { method: method, params: requestParams },
|
|
767
|
+
request: { method: method, params: [requestParams] },
|
|
751
768
|
})
|
|
752
769
|
.then(function (res) {
|
|
753
770
|
clearTimeout(timer);
|
|
@@ -766,41 +783,41 @@ function Inner(_a) {
|
|
|
766
783
|
signRes = null;
|
|
767
784
|
execDigest = null;
|
|
768
785
|
_i = 0, methods_1 = methods;
|
|
769
|
-
|
|
770
|
-
case
|
|
771
|
-
if (!(_i < methods_1.length)) return [3 /*break*/,
|
|
786
|
+
_f.label = 8;
|
|
787
|
+
case 8:
|
|
788
|
+
if (!(_i < methods_1.length)) return [3 /*break*/, 16];
|
|
772
789
|
method = methods_1[_i];
|
|
773
|
-
|
|
774
|
-
case
|
|
775
|
-
|
|
790
|
+
_f.label = 9;
|
|
791
|
+
case 9:
|
|
792
|
+
_f.trys.push([9, 14, , 15]);
|
|
776
793
|
console.log("[WalletContext] WalletConnect \u2014 trying ".concat(method));
|
|
777
|
-
if (!(method === WC_SUI_METHODS.SIGN_TRANSACTION)) return [3 /*break*/,
|
|
794
|
+
if (!(method === WC_SUI_METHODS.SIGN_TRANSACTION)) return [3 /*break*/, 11];
|
|
778
795
|
return [4 /*yield*/, wcRequest(method, params)];
|
|
779
|
-
case
|
|
780
|
-
signRes =
|
|
796
|
+
case 10:
|
|
797
|
+
signRes = _f.sent();
|
|
781
798
|
console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded"));
|
|
782
|
-
return [3 /*break*/,
|
|
783
|
-
case
|
|
784
|
-
case
|
|
785
|
-
res_1 =
|
|
799
|
+
return [3 /*break*/, 16];
|
|
800
|
+
case 11: return [4 /*yield*/, wcRequest(method, params)];
|
|
801
|
+
case 12:
|
|
802
|
+
res_1 = _f.sent();
|
|
786
803
|
console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded, digest:"), res_1.digest);
|
|
787
804
|
execDigest = res_1.digest;
|
|
788
|
-
return [3 /*break*/,
|
|
789
|
-
case
|
|
790
|
-
case
|
|
791
|
-
err_5 =
|
|
805
|
+
return [3 /*break*/, 16];
|
|
806
|
+
case 13: return [3 /*break*/, 15];
|
|
807
|
+
case 14:
|
|
808
|
+
err_5 = _f.sent();
|
|
792
809
|
console.warn("[WalletContext] WalletConnect \u2014 ".concat(method, " failed:"), err_5);
|
|
793
|
-
return [3 /*break*/,
|
|
794
|
-
case
|
|
810
|
+
return [3 /*break*/, 15];
|
|
811
|
+
case 15:
|
|
795
812
|
_i++;
|
|
796
|
-
return [3 /*break*/,
|
|
797
|
-
case
|
|
813
|
+
return [3 /*break*/, 8];
|
|
814
|
+
case 16:
|
|
798
815
|
// Cleanup debug listener
|
|
799
816
|
signClient_1.core.relayer.off("message", debugHandler);
|
|
800
|
-
if (!execDigest) return [3 /*break*/,
|
|
817
|
+
if (!execDigest) return [3 /*break*/, 18];
|
|
801
818
|
return [4 /*yield*/, waitForTransactionWithCheck(execDigest)];
|
|
802
|
-
case
|
|
803
|
-
case
|
|
819
|
+
case 17: return [2 /*return*/, _f.sent()];
|
|
820
|
+
case 18:
|
|
804
821
|
if (!signRes) {
|
|
805
822
|
throw new Error("WalletConnect: wallet did not respond to any signing method. " +
|
|
806
823
|
"Check that the wallet supports Sui transactions and that the session is active.");
|
|
@@ -810,17 +827,17 @@ function Inner(_a) {
|
|
|
810
827
|
transactionBlock: signRes.transactionBytes,
|
|
811
828
|
signature: signRes.signature,
|
|
812
829
|
})];
|
|
813
|
-
case
|
|
814
|
-
execRes =
|
|
830
|
+
case 19:
|
|
831
|
+
execRes = _f.sent();
|
|
815
832
|
return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
|
|
816
|
-
case
|
|
817
|
-
case
|
|
818
|
-
if (!isInMsafeApp()) return [3 /*break*/,
|
|
833
|
+
case 20: return [2 /*return*/, _f.sent()];
|
|
834
|
+
case 21:
|
|
835
|
+
if (!isInMsafeApp()) return [3 /*break*/, 24];
|
|
819
836
|
msafeWallet = getWallets()
|
|
820
837
|
.get()
|
|
821
838
|
.find(function (w) { return w.name === WalletName.MSAFE_WALLET; });
|
|
822
839
|
msafeFeature = msafeWallet === null || msafeWallet === void 0 ? void 0 : msafeWallet.features["sui:signAndExecuteTransactionBlock"];
|
|
823
|
-
if (!(msafeFeature && account)) return [3 /*break*/,
|
|
840
|
+
if (!(msafeFeature && account)) return [3 /*break*/, 23];
|
|
824
841
|
msafeAccount = msafeWallet.accounts.find(function (a) { return a.address === account.address; });
|
|
825
842
|
if (!msafeAccount)
|
|
826
843
|
throw new Error("MSafe account not found");
|
|
@@ -829,58 +846,58 @@ function Inner(_a) {
|
|
|
829
846
|
account: msafeAccount,
|
|
830
847
|
chain: "sui:mainnet",
|
|
831
848
|
})];
|
|
832
|
-
case
|
|
833
|
-
|
|
849
|
+
case 22:
|
|
850
|
+
_f.sent();
|
|
834
851
|
// MSafe proposes the transaction to the multisig queue;
|
|
835
852
|
// the promise never resolves (only rejects on cancel).
|
|
836
853
|
// If we reach here the proposal was accepted.
|
|
837
854
|
throw new Error("Unreachable");
|
|
838
|
-
case
|
|
839
|
-
case
|
|
855
|
+
case 23: throw new Error("MSafe wallet not found. Please reload the page inside MSafe.");
|
|
856
|
+
case 24:
|
|
840
857
|
usedSignOnly = false;
|
|
841
|
-
|
|
842
|
-
case
|
|
843
|
-
|
|
858
|
+
_f.label = 25;
|
|
859
|
+
case 25:
|
|
860
|
+
_f.trys.push([25, 29, , 30]);
|
|
844
861
|
return [4 /*yield*/, dAppKit.signTransaction({
|
|
845
862
|
transaction: transaction,
|
|
846
863
|
})];
|
|
847
|
-
case
|
|
848
|
-
signedTransaction =
|
|
864
|
+
case 26:
|
|
865
|
+
signedTransaction = _f.sent();
|
|
849
866
|
usedSignOnly = true;
|
|
850
867
|
onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
|
|
851
868
|
return [4 /*yield*/, suiClient.executeTransactionBlock({
|
|
852
869
|
transactionBlock: signedTransaction.bytes,
|
|
853
870
|
signature: signedTransaction.signature,
|
|
854
871
|
})];
|
|
855
|
-
case
|
|
856
|
-
res1 =
|
|
872
|
+
case 27:
|
|
873
|
+
res1 = _f.sent();
|
|
857
874
|
onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
|
|
858
875
|
return [4 /*yield*/, waitForTransactionWithCheck(res1.digest)];
|
|
859
|
-
case
|
|
860
|
-
case
|
|
861
|
-
err_6 =
|
|
876
|
+
case 28: return [2 /*return*/, _f.sent()];
|
|
877
|
+
case 29:
|
|
878
|
+
err_6 = _f.sent();
|
|
862
879
|
if (usedSignOnly)
|
|
863
880
|
throw err_6;
|
|
864
881
|
message = err_6 instanceof Error ? err_6.message : String(err_6);
|
|
865
882
|
if (!message.includes("does not support"))
|
|
866
883
|
throw err_6;
|
|
867
884
|
console.warn("[WalletContext] Wallet does not support sign-only, falling back to signAndExecuteTransaction");
|
|
868
|
-
return [3 /*break*/,
|
|
869
|
-
case
|
|
885
|
+
return [3 /*break*/, 30];
|
|
886
|
+
case 30: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
|
|
870
887
|
transaction: transaction,
|
|
871
888
|
})];
|
|
872
|
-
case
|
|
873
|
-
res =
|
|
889
|
+
case 31:
|
|
890
|
+
res = _f.sent();
|
|
874
891
|
digest = res.$kind === "Transaction"
|
|
875
892
|
? res.Transaction.digest
|
|
876
893
|
: res.FailedTransaction.digest;
|
|
877
894
|
return [4 /*yield*/, waitForTransactionWithCheck(digest)];
|
|
878
|
-
case
|
|
879
|
-
case
|
|
880
|
-
err_7 =
|
|
895
|
+
case 32: return [2 /*return*/, _f.sent()];
|
|
896
|
+
case 33:
|
|
897
|
+
err_7 = _f.sent();
|
|
881
898
|
console.error(err_7);
|
|
882
899
|
throw err_7;
|
|
883
|
-
case
|
|
900
|
+
case 34: return [2 /*return*/];
|
|
884
901
|
}
|
|
885
902
|
});
|
|
886
903
|
}); }, [
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sui-fe-next","version":"2.0.
|
|
1
|
+
{"name":"@suilend/sui-fe-next","version":"2.0.24","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"}}
|