@suilend/sui-fe-next 2.0.25 → 2.0.27
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 +46 -23
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -396,7 +396,7 @@ function Inner(_a) {
|
|
|
396
396
|
method: WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
|
|
397
397
|
params: {
|
|
398
398
|
message: message.toString(),
|
|
399
|
-
|
|
399
|
+
account: wcRawAddress !== null && wcRawAddress !== void 0 ? wcRawAddress : sessionAddress,
|
|
400
400
|
},
|
|
401
401
|
}, "sui:mainnet")];
|
|
402
402
|
case 2:
|
|
@@ -489,6 +489,7 @@ function Inner(_a) {
|
|
|
489
489
|
}
|
|
490
490
|
});
|
|
491
491
|
}); }, [rpc.url, connectWallet, disconnectWallet]);
|
|
492
|
+
var PREFERRED_ACCOUNT_KEY = "suilend:preferred-account-address";
|
|
492
493
|
var disconnectWalletWrapper = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
493
494
|
var provider, err_2;
|
|
494
495
|
return __generator(this, function (_a) {
|
|
@@ -509,7 +510,12 @@ function Inner(_a) {
|
|
|
509
510
|
_a.sent();
|
|
510
511
|
showInfoToast("Disconnected wallet");
|
|
511
512
|
_a.label = 5;
|
|
512
|
-
case 5:
|
|
513
|
+
case 5:
|
|
514
|
+
try {
|
|
515
|
+
localStorage.removeItem(PREFERRED_ACCOUNT_KEY);
|
|
516
|
+
}
|
|
517
|
+
catch (_b) { }
|
|
518
|
+
return [3 /*break*/, 7];
|
|
513
519
|
case 6:
|
|
514
520
|
err_2 = _a.sent();
|
|
515
521
|
showErrorToast("Failed to disconnect wallet", err_2);
|
|
@@ -548,6 +554,10 @@ function Inner(_a) {
|
|
|
548
554
|
if (!matchingAccount)
|
|
549
555
|
throw new Error("Account not found");
|
|
550
556
|
dAppKit.switchAccount({ account: matchingAccount });
|
|
557
|
+
try {
|
|
558
|
+
localStorage.setItem(PREFERRED_ACCOUNT_KEY, _account.address);
|
|
559
|
+
}
|
|
560
|
+
catch (_d) { }
|
|
551
561
|
showInfoToast("Switched to ".concat(accountLabel), {
|
|
552
562
|
description: (_account === null || _account === void 0 ? void 0 : _account.label)
|
|
553
563
|
? (addressNameServiceName !== null && addressNameServiceName !== void 0 ? addressNameServiceName : formatAddress(_account.address))
|
|
@@ -559,6 +569,23 @@ function Inner(_a) {
|
|
|
559
569
|
console.error(err);
|
|
560
570
|
}
|
|
561
571
|
}, [dAppKit, (_e = walletConnection.wallet) === null || _e === void 0 ? void 0 : _e.accounts]);
|
|
572
|
+
// After autoconnect restores the wallet, check if the user had previously
|
|
573
|
+
// selected a different account and switch to it.
|
|
574
|
+
var hasRestoredPreferredAccount = useRef(false);
|
|
575
|
+
useEffect(function () {
|
|
576
|
+
if (hasRestoredPreferredAccount.current)
|
|
577
|
+
return;
|
|
578
|
+
if (!walletConnection.wallet || !accountRes)
|
|
579
|
+
return;
|
|
580
|
+
var preferred = localStorage.getItem(PREFERRED_ACCOUNT_KEY);
|
|
581
|
+
if (!preferred || preferred === accountRes.address)
|
|
582
|
+
return;
|
|
583
|
+
var match = walletConnection.wallet.accounts.find(function (a) { return a.address === preferred; });
|
|
584
|
+
if (!match)
|
|
585
|
+
return;
|
|
586
|
+
hasRestoredPreferredAccount.current = true;
|
|
587
|
+
dAppKit.switchAccount({ account: match });
|
|
588
|
+
}, [walletConnection.wallet, accountRes, dAppKit]);
|
|
562
589
|
// LaunchDarkly
|
|
563
590
|
var ldClient = useLDClient();
|
|
564
591
|
var ldKeyRef = useRef(undefined);
|
|
@@ -682,7 +709,7 @@ function Inner(_a) {
|
|
|
682
709
|
});
|
|
683
710
|
}); }, [suiClient]);
|
|
684
711
|
var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
|
|
685
|
-
var _address,
|
|
712
|
+
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;
|
|
686
713
|
var _a, _b, _c, _d, _e;
|
|
687
714
|
return __generator(this, function (_f) {
|
|
688
715
|
switch (_f.label) {
|
|
@@ -708,30 +735,31 @@ function Inner(_a) {
|
|
|
708
735
|
if (!sessionAddress) return [3 /*break*/, 21];
|
|
709
736
|
return [4 /*yield*/, getWalletConnectProvider()];
|
|
710
737
|
case 2:
|
|
711
|
-
|
|
738
|
+
provider_1 = _f.sent();
|
|
712
739
|
transaction.setSender(sessionAddress);
|
|
713
740
|
return [4 /*yield*/, transaction.build({ client: suiClient })];
|
|
714
741
|
case 3:
|
|
715
742
|
txBytes = _f.sent();
|
|
716
743
|
txBase64 = toBase64(txBytes);
|
|
744
|
+
wcAddress = wcRawAddress !== null && wcRawAddress !== void 0 ? wcRawAddress : sessionAddress;
|
|
717
745
|
params = {
|
|
718
746
|
transaction: txBase64,
|
|
719
|
-
|
|
747
|
+
account: wcAddress,
|
|
720
748
|
};
|
|
721
|
-
|
|
722
|
-
console.log("[WalletContext] WalletConnect — session topic:",
|
|
723
|
-
console.log("[WalletContext] WalletConnect — session namespaces:", JSON.stringify((_b =
|
|
749
|
+
topic = (_a = provider_1.session) === null || _a === void 0 ? void 0 : _a.topic;
|
|
750
|
+
console.log("[WalletContext] WalletConnect — session topic:", topic);
|
|
751
|
+
console.log("[WalletContext] WalletConnect — session namespaces:", JSON.stringify((_b = provider_1.session) === null || _b === void 0 ? void 0 : _b.namespaces));
|
|
724
752
|
console.log("[WalletContext] WalletConnect — request params:", params);
|
|
725
|
-
if (!
|
|
753
|
+
if (!topic)
|
|
726
754
|
throw new Error("WalletConnect session not found");
|
|
727
|
-
|
|
755
|
+
signClient = provider_1.client;
|
|
728
756
|
// Debug: full session dump
|
|
729
|
-
console.log("[WalletContext] WalletConnect — full session:", JSON.stringify(
|
|
730
|
-
console.log("[WalletContext] WalletConnect — relay connected:",
|
|
757
|
+
console.log("[WalletContext] WalletConnect — full session:", JSON.stringify(provider_1.session, null, 2));
|
|
758
|
+
console.log("[WalletContext] WalletConnect — relay connected:", signClient.core.relayer.connected);
|
|
731
759
|
_f.label = 4;
|
|
732
760
|
case 4:
|
|
733
761
|
_f.trys.push([4, 6, , 7]);
|
|
734
|
-
return [4 /*yield*/,
|
|
762
|
+
return [4 /*yield*/, signClient.ping({ topic: topic })];
|
|
735
763
|
case 5:
|
|
736
764
|
_f.sent();
|
|
737
765
|
console.log("[WalletContext] WalletConnect — ping succeeded (peer is alive)");
|
|
@@ -744,8 +772,8 @@ function Inner(_a) {
|
|
|
744
772
|
debugHandler = function (event) {
|
|
745
773
|
console.log("[WalletContext] WalletConnect — relay message received:", event);
|
|
746
774
|
};
|
|
747
|
-
|
|
748
|
-
pendingBefore = (_e = (_d = (_c =
|
|
775
|
+
signClient.core.relayer.on("message", debugHandler);
|
|
776
|
+
pendingBefore = (_e = (_d = (_c = signClient.pendingRequest).getAll) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : [];
|
|
749
777
|
console.log("[WalletContext] WalletConnect — pending requests before:", Array.isArray(pendingBefore) ? pendingBefore.length : pendingBefore);
|
|
750
778
|
wcRequest = function (method, requestParams, timeoutMs) {
|
|
751
779
|
if (timeoutMs === void 0) { timeoutMs = 15000; }
|
|
@@ -758,14 +786,9 @@ function Inner(_a) {
|
|
|
758
786
|
method: method,
|
|
759
787
|
params: requestParams,
|
|
760
788
|
chainId: "sui:mainnet",
|
|
761
|
-
topic: topic_1,
|
|
762
789
|
}));
|
|
763
|
-
|
|
764
|
-
.request({
|
|
765
|
-
topic: topic_1,
|
|
766
|
-
chainId: "sui:mainnet",
|
|
767
|
-
request: { method: method, params: requestParams },
|
|
768
|
-
})
|
|
790
|
+
provider_1
|
|
791
|
+
.request({ method: method, params: requestParams }, "sui:mainnet")
|
|
769
792
|
.then(function (res) {
|
|
770
793
|
clearTimeout(timer);
|
|
771
794
|
resolve(res);
|
|
@@ -813,7 +836,7 @@ function Inner(_a) {
|
|
|
813
836
|
return [3 /*break*/, 8];
|
|
814
837
|
case 16:
|
|
815
838
|
// Cleanup debug listener
|
|
816
|
-
|
|
839
|
+
signClient.core.relayer.off("message", debugHandler);
|
|
817
840
|
if (!execDigest) return [3 /*break*/, 18];
|
|
818
841
|
return [4 /*yield*/, waitForTransactionWithCheck(execDigest)];
|
|
819
842
|
case 17: return [2 /*return*/, _f.sent()];
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sui-fe-next","version":"2.0.
|
|
1
|
+
{"name":"@suilend/sui-fe-next","version":"2.0.27","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"}}
|