@suilend/sui-fe-next 2.0.15 → 2.0.16
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 +42 -32
- package/lib/connector.d.ts +2 -0
- package/lib/connector.js +39 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -67,7 +67,7 @@ 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, getWalletConnectProvider } from "../lib/connector";
|
|
70
|
+
import { WC_SUI_METHODS, getWalletConnectModal, getWalletConnectProvider, } from "../lib/connector";
|
|
71
71
|
import { showErrorToast, showInfoToast } from "../lib/toasts";
|
|
72
72
|
import { useSettingsContext } from "./SettingsContext";
|
|
73
73
|
export var WalletType;
|
|
@@ -218,10 +218,10 @@ function Inner(_a) {
|
|
|
218
218
|
var queryParams = (_b = {},
|
|
219
219
|
_b[WalletContextQueryParams.WALLET] = router.query[WalletContextQueryParams.WALLET],
|
|
220
220
|
_b);
|
|
221
|
-
var
|
|
221
|
+
var _f = useSettingsContext(), rpc = _f.rpc, suiClient = _f.suiClient;
|
|
222
222
|
// WalletConnect via @walletconnect/universal-provider
|
|
223
223
|
// Matches the reference implementation: https://github.com/WalletConnect/react-core-up-sui
|
|
224
|
-
var
|
|
224
|
+
var _g = useState(), wcSession = _g[0], setWcSession = _g[1];
|
|
225
225
|
var sessionAddress = useMemo(function () {
|
|
226
226
|
var _a, _b, _c;
|
|
227
227
|
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];
|
|
@@ -356,7 +356,7 @@ function Inner(_a) {
|
|
|
356
356
|
wallets__web,
|
|
357
357
|
]);
|
|
358
358
|
// Wallet
|
|
359
|
-
var
|
|
359
|
+
var _h = useState(false), isConnectWalletDropdownOpen = _h[0], setIsConnectWalletDropdownOpen = _h[1];
|
|
360
360
|
var rawWallet = useCurrentWallet();
|
|
361
361
|
var wallet = useMemo(function () {
|
|
362
362
|
if (sessionAddress) {
|
|
@@ -393,15 +393,22 @@ function Inner(_a) {
|
|
|
393
393
|
});
|
|
394
394
|
}); }, [sessionAddress]);
|
|
395
395
|
var connectWalletWrapper = useCallback(function (_wallet) { return __awaiter(_this, void 0, void 0, function () {
|
|
396
|
-
var provider, _a, provider, _b, err_1;
|
|
396
|
+
var provider, modal, _a, provider, _b, err_1;
|
|
397
397
|
return __generator(this, function (_c) {
|
|
398
398
|
switch (_c.label) {
|
|
399
399
|
case 0:
|
|
400
|
-
_c.trys.push([0,
|
|
401
|
-
if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/,
|
|
400
|
+
_c.trys.push([0, 17, , 18]);
|
|
401
|
+
if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/, 10];
|
|
402
402
|
return [4 /*yield*/, getWalletConnectProvider()];
|
|
403
403
|
case 1:
|
|
404
404
|
provider = _c.sent();
|
|
405
|
+
return [4 /*yield*/, getWalletConnectModal(rpc.url)];
|
|
406
|
+
case 2:
|
|
407
|
+
modal = _c.sent();
|
|
408
|
+
modal.open();
|
|
409
|
+
_c.label = 3;
|
|
410
|
+
case 3:
|
|
411
|
+
_c.trys.push([3, , 5, 6]);
|
|
405
412
|
return [4 /*yield*/, provider.connect({
|
|
406
413
|
optionalNamespaces: {
|
|
407
414
|
sui: {
|
|
@@ -415,54 +422,57 @@ function Inner(_a) {
|
|
|
415
422
|
},
|
|
416
423
|
},
|
|
417
424
|
})];
|
|
418
|
-
case 2:
|
|
419
|
-
_c.sent();
|
|
420
|
-
_c.label = 3;
|
|
421
|
-
case 3:
|
|
422
|
-
_c.trys.push([3, 5, , 6]);
|
|
423
|
-
return [4 /*yield*/, disconnectWallet()];
|
|
424
425
|
case 4:
|
|
425
426
|
_c.sent();
|
|
426
427
|
return [3 /*break*/, 6];
|
|
427
428
|
case 5:
|
|
428
|
-
|
|
429
|
-
return [
|
|
429
|
+
modal.close();
|
|
430
|
+
return [7 /*endfinally*/];
|
|
430
431
|
case 6:
|
|
432
|
+
_c.trys.push([6, 8, , 9]);
|
|
433
|
+
return [4 /*yield*/, disconnectWallet()];
|
|
434
|
+
case 7:
|
|
435
|
+
_c.sent();
|
|
436
|
+
return [3 /*break*/, 9];
|
|
437
|
+
case 8:
|
|
438
|
+
_a = _c.sent();
|
|
439
|
+
return [3 /*break*/, 9];
|
|
440
|
+
case 9:
|
|
431
441
|
setWcSession(provider.session);
|
|
432
442
|
return [2 /*return*/];
|
|
433
|
-
case
|
|
443
|
+
case 10:
|
|
434
444
|
if (!_wallet.raw)
|
|
435
445
|
throw new Error("Missing wallet");
|
|
436
446
|
return [4 /*yield*/, connectWallet({ wallet: _wallet.raw })];
|
|
437
|
-
case
|
|
447
|
+
case 11:
|
|
438
448
|
_c.sent();
|
|
439
|
-
_c.label =
|
|
440
|
-
case
|
|
441
|
-
_c.trys.push([
|
|
449
|
+
_c.label = 12;
|
|
450
|
+
case 12:
|
|
451
|
+
_c.trys.push([12, 15, , 16]);
|
|
442
452
|
return [4 /*yield*/, getWalletConnectProvider()];
|
|
443
|
-
case
|
|
453
|
+
case 13:
|
|
444
454
|
provider = _c.sent();
|
|
445
455
|
return [4 /*yield*/, provider.disconnect()];
|
|
446
|
-
case
|
|
456
|
+
case 14:
|
|
447
457
|
_c.sent();
|
|
448
|
-
return [3 /*break*/,
|
|
449
|
-
case
|
|
458
|
+
return [3 /*break*/, 16];
|
|
459
|
+
case 15:
|
|
450
460
|
_b = _c.sent();
|
|
451
|
-
return [3 /*break*/,
|
|
452
|
-
case
|
|
461
|
+
return [3 /*break*/, 16];
|
|
462
|
+
case 16:
|
|
453
463
|
setWcSession(null);
|
|
454
464
|
showInfoToast("Connected ".concat(_wallet.name));
|
|
455
465
|
setIsConnectWalletDropdownOpen(false);
|
|
456
|
-
return [3 /*break*/,
|
|
457
|
-
case
|
|
466
|
+
return [3 /*break*/, 18];
|
|
467
|
+
case 17:
|
|
458
468
|
err_1 = _c.sent();
|
|
459
469
|
showErrorToast("Failed to connect ".concat(_wallet.name), err_1);
|
|
460
470
|
console.error(err_1);
|
|
461
|
-
return [3 /*break*/,
|
|
462
|
-
case
|
|
471
|
+
return [3 /*break*/, 18];
|
|
472
|
+
case 18: return [2 /*return*/];
|
|
463
473
|
}
|
|
464
474
|
});
|
|
465
|
-
}); }, [connectWallet, disconnectWallet]);
|
|
475
|
+
}); }, [rpc.url, connectWallet, disconnectWallet]);
|
|
466
476
|
var disconnectWalletWrapper = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
467
477
|
var provider, err_2;
|
|
468
478
|
return __generator(this, function (_a) {
|
|
@@ -803,7 +813,7 @@ function Inner(_a) {
|
|
|
803
813
|
waitForTransactionWithCheck,
|
|
804
814
|
]);
|
|
805
815
|
// Using Ledger
|
|
806
|
-
var
|
|
816
|
+
var _j = useLocalStorage("isUsingLedger-".concat(impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address), false), isUsingLedger = _j[0], setIsUsingLedger = _j[1];
|
|
807
817
|
// Context
|
|
808
818
|
var contextValue = useMemo(function () {
|
|
809
819
|
return {
|
package/lib/connector.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { type AppKit } from "@reown/appkit/core";
|
|
1
2
|
import UniversalProvider from "@walletconnect/universal-provider";
|
|
2
3
|
export declare const projectId = "eebad6a56ec8b3f08b70175934d35a9d";
|
|
3
4
|
export declare function getWalletConnectProvider(): Promise<UniversalProvider>;
|
|
5
|
+
export declare function getWalletConnectModal(rpcUrl: string): Promise<AppKit>;
|
|
4
6
|
export declare const WC_SUI_METHODS: {
|
|
5
7
|
readonly SIGN_TRANSACTION: "sui_signTransaction";
|
|
6
8
|
readonly SIGN_AND_EXECUTE_TRANSACTION: "sui_signAndExecuteTransaction";
|
package/lib/connector.js
CHANGED
|
@@ -34,6 +34,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
+
import { createAppKit } from "@reown/appkit/core";
|
|
37
38
|
import UniversalProvider from "@walletconnect/universal-provider";
|
|
38
39
|
export var projectId = "eebad6a56ec8b3f08b70175934d35a9d";
|
|
39
40
|
var provider;
|
|
@@ -60,6 +61,44 @@ export function getWalletConnectProvider() {
|
|
|
60
61
|
});
|
|
61
62
|
});
|
|
62
63
|
}
|
|
64
|
+
var modal;
|
|
65
|
+
var modalRpcUrl;
|
|
66
|
+
export function getWalletConnectModal(rpcUrl) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
68
|
+
var universalProvider;
|
|
69
|
+
return __generator(this, function (_a) {
|
|
70
|
+
switch (_a.label) {
|
|
71
|
+
case 0:
|
|
72
|
+
if (!(!modal || modalRpcUrl !== rpcUrl)) return [3 /*break*/, 2];
|
|
73
|
+
return [4 /*yield*/, getWalletConnectProvider()];
|
|
74
|
+
case 1:
|
|
75
|
+
universalProvider = _a.sent();
|
|
76
|
+
modal = createAppKit({
|
|
77
|
+
projectId: projectId,
|
|
78
|
+
networks: [
|
|
79
|
+
{
|
|
80
|
+
id: 784,
|
|
81
|
+
chainNamespace: "sui",
|
|
82
|
+
caipNetworkId: "sui:mainnet",
|
|
83
|
+
name: "Sui",
|
|
84
|
+
nativeCurrency: { name: "SUI", symbol: "SUI", decimals: 9 },
|
|
85
|
+
rpcUrls: {
|
|
86
|
+
default: {
|
|
87
|
+
http: [rpcUrl],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
universalProvider: universalProvider,
|
|
93
|
+
manualWCControl: true,
|
|
94
|
+
});
|
|
95
|
+
modalRpcUrl = rpcUrl;
|
|
96
|
+
_a.label = 2;
|
|
97
|
+
case 2: return [2 /*return*/, modal];
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
63
102
|
export var WC_SUI_METHODS = {
|
|
64
103
|
SIGN_TRANSACTION: "sui_signTransaction",
|
|
65
104
|
SIGN_AND_EXECUTE_TRANSACTION: "sui_signAndExecuteTransaction",
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sui-fe-next","version":"2.0.
|
|
1
|
+
{"name":"@suilend/sui-fe-next","version":"2.0.16","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"}}
|