@suilend/sui-fe-next 2.0.12 → 2.0.14
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 +140 -110
- package/lib/connector.d.ts +7 -2
- package/lib/connector.js +21 -35
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -66,7 +66,7 @@ import BigNumber from "bignumber.js";
|
|
|
66
66
|
import { useLDClient } from "launchdarkly-react-client-sdk";
|
|
67
67
|
import { useLocalStorage } from "usehooks-ts";
|
|
68
68
|
import { API_URL, formatAddress, isInMsafeApp } from "@suilend/sui-fe";
|
|
69
|
-
import {
|
|
69
|
+
import { WC_SUI_METHODS, getWalletConnectProvider } from "../lib/connector";
|
|
70
70
|
import { showErrorToast, showInfoToast } from "../lib/toasts";
|
|
71
71
|
import { useSettingsContext } from "./SettingsContext";
|
|
72
72
|
export var WalletType;
|
|
@@ -211,34 +211,37 @@ export var useWalletContext = function () { return useContext(WalletContext); };
|
|
|
211
211
|
function Inner(_a) {
|
|
212
212
|
var _b;
|
|
213
213
|
var _this = this;
|
|
214
|
-
var _c, _d, _e
|
|
214
|
+
var _c, _d, _e;
|
|
215
215
|
var appName = _a.appName, children = _a.children;
|
|
216
216
|
var router = useRouter();
|
|
217
217
|
var queryParams = (_b = {},
|
|
218
218
|
_b[WalletContextQueryParams.WALLET] = router.query[WalletContextQueryParams.WALLET],
|
|
219
219
|
_b);
|
|
220
|
-
var
|
|
221
|
-
//
|
|
222
|
-
|
|
223
|
-
var
|
|
224
|
-
var
|
|
225
|
-
|
|
226
|
-
?
|
|
227
|
-
: undefined;
|
|
220
|
+
var suiClient = useSettingsContext().suiClient;
|
|
221
|
+
// WalletConnect via @walletconnect/universal-provider
|
|
222
|
+
// Matches the reference implementation: https://github.com/WalletConnect/react-core-up-sui
|
|
223
|
+
var _f = useState(), wcSession = _f[0], setWcSession = _f[1];
|
|
224
|
+
var sessionAddress = useMemo(function () {
|
|
225
|
+
var _a, _b, _c;
|
|
226
|
+
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];
|
|
227
|
+
return raw ? raw.split(":").pop() : undefined;
|
|
228
|
+
}, [wcSession]);
|
|
228
229
|
useEffect(function () {
|
|
229
230
|
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
230
|
-
var
|
|
231
|
+
var provider;
|
|
231
232
|
return __generator(this, function (_a) {
|
|
232
233
|
switch (_a.label) {
|
|
233
|
-
case 0: return [4 /*yield*/,
|
|
234
|
+
case 0: return [4 /*yield*/, getWalletConnectProvider()];
|
|
234
235
|
case 1:
|
|
235
|
-
|
|
236
|
-
|
|
236
|
+
provider = _a.sent();
|
|
237
|
+
if (provider.session) {
|
|
238
|
+
setWcSession(provider.session);
|
|
239
|
+
}
|
|
237
240
|
return [2 /*return*/];
|
|
238
241
|
}
|
|
239
242
|
});
|
|
240
243
|
}); })();
|
|
241
|
-
}, [
|
|
244
|
+
}, []);
|
|
242
245
|
// Impersonated address
|
|
243
246
|
var impersonatedAddress = queryParams[WalletContextQueryParams.WALLET];
|
|
244
247
|
// Wallets
|
|
@@ -352,7 +355,7 @@ function Inner(_a) {
|
|
|
352
355
|
wallets__web,
|
|
353
356
|
]);
|
|
354
357
|
// Wallet
|
|
355
|
-
var
|
|
358
|
+
var _g = useState(false), isConnectWalletDropdownOpen = _g[0], setIsConnectWalletDropdownOpen = _g[1];
|
|
356
359
|
var rawWallet = useCurrentWallet();
|
|
357
360
|
var wallet = useMemo(function () {
|
|
358
361
|
if (sessionAddress) {
|
|
@@ -366,17 +369,20 @@ function Inner(_a) {
|
|
|
366
369
|
var disconnectWallet = dAppKit.disconnectWallet;
|
|
367
370
|
var signPersonalMessageRaw = dAppKit.signPersonalMessage;
|
|
368
371
|
var walletConnectSignPersonalMessage = useCallback(function (message) { return __awaiter(_this, void 0, void 0, function () {
|
|
369
|
-
var res;
|
|
372
|
+
var provider, res;
|
|
370
373
|
return __generator(this, function (_a) {
|
|
371
374
|
switch (_a.label) {
|
|
372
375
|
case 0:
|
|
373
|
-
if (!sessionAddress
|
|
376
|
+
if (!sessionAddress)
|
|
374
377
|
throw new Error("Wallet not connected");
|
|
375
|
-
return [4 /*yield*/,
|
|
376
|
-
method: "sui_signPersonalMessage",
|
|
377
|
-
params: { message: message.toString() },
|
|
378
|
-
}, "sui:mainnet")];
|
|
378
|
+
return [4 /*yield*/, getWalletConnectProvider()];
|
|
379
379
|
case 1:
|
|
380
|
+
provider = _a.sent();
|
|
381
|
+
return [4 /*yield*/, provider.request({
|
|
382
|
+
method: WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
|
|
383
|
+
params: { message: message.toString(), address: sessionAddress },
|
|
384
|
+
}, "sui:mainnet")];
|
|
385
|
+
case 2:
|
|
380
386
|
res = _a.sent();
|
|
381
387
|
return [2 /*return*/, {
|
|
382
388
|
signature: res.signature,
|
|
@@ -384,84 +390,112 @@ function Inner(_a) {
|
|
|
384
390
|
}];
|
|
385
391
|
}
|
|
386
392
|
});
|
|
387
|
-
}); }, [sessionAddress
|
|
393
|
+
}); }, [sessionAddress]);
|
|
388
394
|
var connectWalletWrapper = useCallback(function (_wallet) { return __awaiter(_this, void 0, void 0, function () {
|
|
389
|
-
var
|
|
390
|
-
return __generator(this, function (
|
|
391
|
-
switch (
|
|
395
|
+
var provider, _a, provider, _b, err_1;
|
|
396
|
+
return __generator(this, function (_c) {
|
|
397
|
+
switch (_c.label) {
|
|
392
398
|
case 0:
|
|
393
|
-
|
|
394
|
-
if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/,
|
|
395
|
-
return [4 /*yield*/,
|
|
399
|
+
_c.trys.push([0, 14, , 15]);
|
|
400
|
+
if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/, 7];
|
|
401
|
+
return [4 /*yield*/, getWalletConnectProvider()];
|
|
396
402
|
case 1:
|
|
397
|
-
|
|
398
|
-
|
|
403
|
+
provider = _c.sent();
|
|
404
|
+
return [4 /*yield*/, provider.connect({
|
|
405
|
+
optionalNamespaces: {
|
|
406
|
+
sui: {
|
|
407
|
+
methods: [
|
|
408
|
+
WC_SUI_METHODS.SIGN_TRANSACTION,
|
|
409
|
+
WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
|
|
410
|
+
WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
|
|
411
|
+
],
|
|
412
|
+
chains: ["sui:mainnet"],
|
|
413
|
+
events: [],
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
})];
|
|
399
417
|
case 2:
|
|
400
|
-
|
|
401
|
-
|
|
418
|
+
_c.sent();
|
|
419
|
+
_c.label = 3;
|
|
402
420
|
case 3:
|
|
403
|
-
|
|
404
|
-
return [
|
|
421
|
+
_c.trys.push([3, 5, , 6]);
|
|
422
|
+
return [4 /*yield*/, disconnectWallet()];
|
|
405
423
|
case 4:
|
|
406
|
-
|
|
407
|
-
return [3 /*break*/,
|
|
424
|
+
_c.sent();
|
|
425
|
+
return [3 /*break*/, 6];
|
|
408
426
|
case 5:
|
|
409
|
-
|
|
410
|
-
return [
|
|
427
|
+
_a = _c.sent();
|
|
428
|
+
return [3 /*break*/, 6];
|
|
411
429
|
case 6:
|
|
430
|
+
setWcSession(provider.session);
|
|
431
|
+
return [2 /*return*/];
|
|
432
|
+
case 7:
|
|
412
433
|
if (!_wallet.raw)
|
|
413
434
|
throw new Error("Missing wallet");
|
|
414
435
|
return [4 /*yield*/, connectWallet({ wallet: _wallet.raw })];
|
|
415
|
-
case
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
436
|
+
case 8:
|
|
437
|
+
_c.sent();
|
|
438
|
+
_c.label = 9;
|
|
439
|
+
case 9:
|
|
440
|
+
_c.trys.push([9, 12, , 13]);
|
|
441
|
+
return [4 /*yield*/, getWalletConnectProvider()];
|
|
442
|
+
case 10:
|
|
443
|
+
provider = _c.sent();
|
|
444
|
+
return [4 /*yield*/, provider.disconnect()];
|
|
445
|
+
case 11:
|
|
446
|
+
_c.sent();
|
|
447
|
+
return [3 /*break*/, 13];
|
|
448
|
+
case 12:
|
|
449
|
+
_b = _c.sent();
|
|
450
|
+
return [3 /*break*/, 13];
|
|
451
|
+
case 13:
|
|
452
|
+
setWcSession(null);
|
|
424
453
|
showInfoToast("Connected ".concat(_wallet.name));
|
|
425
454
|
setIsConnectWalletDropdownOpen(false);
|
|
426
|
-
return [3 /*break*/,
|
|
427
|
-
case
|
|
428
|
-
err_1 =
|
|
455
|
+
return [3 /*break*/, 15];
|
|
456
|
+
case 14:
|
|
457
|
+
err_1 = _c.sent();
|
|
429
458
|
showErrorToast("Failed to connect ".concat(_wallet.name), err_1);
|
|
430
459
|
console.error(err_1);
|
|
431
|
-
return [3 /*break*/,
|
|
432
|
-
case
|
|
460
|
+
return [3 /*break*/, 15];
|
|
461
|
+
case 15: return [2 /*return*/];
|
|
433
462
|
}
|
|
434
463
|
});
|
|
435
|
-
}); }, [connectWallet, disconnectWallet
|
|
464
|
+
}); }, [connectWallet, disconnectWallet]);
|
|
436
465
|
var disconnectWalletWrapper = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
437
|
-
var err_2;
|
|
466
|
+
var provider, err_2;
|
|
438
467
|
return __generator(this, function (_a) {
|
|
439
468
|
switch (_a.label) {
|
|
440
469
|
case 0:
|
|
441
|
-
_a.trys.push([0,
|
|
442
|
-
if (!sessionAddress) return [3 /*break*/,
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
470
|
+
_a.trys.push([0, 6, , 7]);
|
|
471
|
+
if (!sessionAddress) return [3 /*break*/, 3];
|
|
472
|
+
return [4 /*yield*/, getWalletConnectProvider()];
|
|
473
|
+
case 1:
|
|
474
|
+
provider = _a.sent();
|
|
475
|
+
return [4 /*yield*/, provider.disconnect()];
|
|
447
476
|
case 2:
|
|
448
477
|
_a.sent();
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
case 3: return [
|
|
478
|
+
setWcSession(null);
|
|
479
|
+
return [3 /*break*/, 5];
|
|
480
|
+
case 3: return [4 /*yield*/, disconnectWallet()];
|
|
452
481
|
case 4:
|
|
482
|
+
_a.sent();
|
|
483
|
+
showInfoToast("Disconnected wallet");
|
|
484
|
+
_a.label = 5;
|
|
485
|
+
case 5: return [3 /*break*/, 7];
|
|
486
|
+
case 6:
|
|
453
487
|
err_2 = _a.sent();
|
|
454
488
|
showErrorToast("Failed to disconnect wallet", err_2);
|
|
455
489
|
console.error(err_2);
|
|
456
|
-
return [3 /*break*/,
|
|
457
|
-
case
|
|
490
|
+
return [3 /*break*/, 7];
|
|
491
|
+
case 7: return [2 /*return*/];
|
|
458
492
|
}
|
|
459
493
|
});
|
|
460
|
-
}); }, [sessionAddress,
|
|
494
|
+
}); }, [sessionAddress, disconnectWallet]);
|
|
461
495
|
// Accounts
|
|
462
496
|
var walletConnection = useWalletConnection();
|
|
463
|
-
var accountsRes = useMemo(function () { var _a, _b; return (_b = (_a = walletConnection.wallet) === null || _a === void 0 ? void 0 : _a.accounts) !== null && _b !== void 0 ? _b : []; }, [(
|
|
464
|
-
var accountRes = (
|
|
497
|
+
var accountsRes = useMemo(function () { var _a, _b; return (_b = (_a = walletConnection.wallet) === null || _a === void 0 ? void 0 : _a.accounts) !== null && _b !== void 0 ? _b : []; }, [(_c = walletConnection.wallet) === null || _c === void 0 ? void 0 : _c.accounts]);
|
|
498
|
+
var accountRes = (_d = useCurrentAccount()) !== null && _d !== void 0 ? _d : undefined;
|
|
465
499
|
var walletConnectAccount = useMemo(function () {
|
|
466
500
|
return sessionAddress
|
|
467
501
|
? {
|
|
@@ -497,7 +531,7 @@ function Inner(_a) {
|
|
|
497
531
|
showErrorToast("Failed to switch to ".concat(accountLabel), err);
|
|
498
532
|
console.error(err);
|
|
499
533
|
}
|
|
500
|
-
}, [dAppKit, (
|
|
534
|
+
}, [dAppKit, (_e = walletConnection.wallet) === null || _e === void 0 ? void 0 : _e.accounts]);
|
|
501
535
|
// LaunchDarkly
|
|
502
536
|
var ldClient = useLDClient();
|
|
503
537
|
var ldKeyRef = useRef(undefined);
|
|
@@ -621,7 +655,7 @@ function Inner(_a) {
|
|
|
621
655
|
});
|
|
622
656
|
}); }, [suiClient]);
|
|
623
657
|
var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
|
|
624
|
-
var _address, txBytes, txBase64, params, res_1, signAndExecErr_1, signRes, execRes, usedSignOnly, signedTransaction, res1, err_5, message, res, digest, err_6;
|
|
658
|
+
var _address, provider, txBytes, txBase64, params, res_1, signAndExecErr_1, signRes, execRes, usedSignOnly, signedTransaction, res1, err_5, message, res, digest, err_6;
|
|
625
659
|
return __generator(this, function (_a) {
|
|
626
660
|
switch (_a.label) {
|
|
627
661
|
case 0:
|
|
@@ -634,7 +668,7 @@ function Inner(_a) {
|
|
|
634
668
|
}
|
|
635
669
|
_a.label = 1;
|
|
636
670
|
case 1:
|
|
637
|
-
_a.trys.push([1,
|
|
671
|
+
_a.trys.push([1, 21, , 22]);
|
|
638
672
|
// Gas budget
|
|
639
673
|
if (gasBudget !== "")
|
|
640
674
|
transaction.setGasBudget(+new BigNumber(gasBudget)
|
|
@@ -643,63 +677,60 @@ function Inner(_a) {
|
|
|
643
677
|
onSetGasBudget === null || onSetGasBudget === void 0 ? void 0 : onSetGasBudget(transaction);
|
|
644
678
|
// Log
|
|
645
679
|
console.log("[WalletContext] signExecuteAndWaitForTransaction - transaction.getData():", transaction.getData());
|
|
646
|
-
if (!
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
// Fireblocks and most institutional wallets prefer (1).
|
|
651
|
-
// Ref: https://docs.walletconnect.network/wallet-sdk/chain-support/sui
|
|
652
|
-
// https://github.com/WalletConnect/react-core-up-sui
|
|
680
|
+
if (!sessionAddress) return [3 /*break*/, 12];
|
|
681
|
+
return [4 /*yield*/, getWalletConnectProvider()];
|
|
682
|
+
case 2:
|
|
683
|
+
provider = _a.sent();
|
|
653
684
|
transaction.setSender(sessionAddress);
|
|
654
685
|
return [4 /*yield*/, transaction.build({ client: suiClient })];
|
|
655
|
-
case
|
|
686
|
+
case 3:
|
|
656
687
|
txBytes = _a.sent();
|
|
657
688
|
txBase64 = toBase64(txBytes);
|
|
658
689
|
params = {
|
|
659
690
|
transaction: txBase64,
|
|
660
691
|
address: sessionAddress,
|
|
661
692
|
};
|
|
662
|
-
_a.label =
|
|
663
|
-
case
|
|
664
|
-
_a.trys.push([
|
|
693
|
+
_a.label = 4;
|
|
694
|
+
case 4:
|
|
695
|
+
_a.trys.push([4, 7, , 8]);
|
|
665
696
|
console.log("[WalletContext] WalletConnect — trying sui_signAndExecuteTransaction");
|
|
666
|
-
return [4 /*yield*/,
|
|
667
|
-
method:
|
|
697
|
+
return [4 /*yield*/, provider.request({
|
|
698
|
+
method: WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
|
|
668
699
|
params: params,
|
|
669
700
|
}, "sui:mainnet")];
|
|
670
|
-
case
|
|
701
|
+
case 5:
|
|
671
702
|
res_1 = _a.sent();
|
|
672
703
|
console.log("[WalletContext] WalletConnect — sui_signAndExecuteTransaction succeeded, digest:", res_1.digest);
|
|
673
704
|
return [4 /*yield*/, waitForTransactionWithCheck(res_1.digest)];
|
|
674
|
-
case
|
|
675
|
-
case
|
|
705
|
+
case 6: return [2 /*return*/, _a.sent()];
|
|
706
|
+
case 7:
|
|
676
707
|
signAndExecErr_1 = _a.sent();
|
|
677
708
|
console.warn("[WalletContext] WalletConnect — sui_signAndExecuteTransaction failed:", signAndExecErr_1);
|
|
678
|
-
return [3 /*break*/,
|
|
679
|
-
case
|
|
709
|
+
return [3 /*break*/, 8];
|
|
710
|
+
case 8:
|
|
680
711
|
// Fallback: sign-only, then dApp-side execute
|
|
681
712
|
console.log("[WalletContext] WalletConnect — trying sui_signTransaction (sign-only fallback)");
|
|
682
|
-
return [4 /*yield*/,
|
|
683
|
-
case
|
|
713
|
+
return [4 /*yield*/, provider.request({ method: WC_SUI_METHODS.SIGN_TRANSACTION, params: params }, "sui:mainnet")];
|
|
714
|
+
case 9:
|
|
684
715
|
signRes = _a.sent();
|
|
685
716
|
console.log("[WalletContext] WalletConnect — sui_signTransaction succeeded, executing on-chain");
|
|
686
717
|
return [4 /*yield*/, suiClient.executeTransactionBlock({
|
|
687
718
|
transactionBlock: signRes.transactionBytes,
|
|
688
719
|
signature: signRes.signature,
|
|
689
720
|
})];
|
|
690
|
-
case
|
|
721
|
+
case 10:
|
|
691
722
|
execRes = _a.sent();
|
|
692
723
|
return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
|
|
693
|
-
case
|
|
694
|
-
case 11:
|
|
695
|
-
usedSignOnly = false;
|
|
696
|
-
_a.label = 12;
|
|
724
|
+
case 11: return [2 /*return*/, _a.sent()];
|
|
697
725
|
case 12:
|
|
698
|
-
|
|
726
|
+
usedSignOnly = false;
|
|
727
|
+
_a.label = 13;
|
|
728
|
+
case 13:
|
|
729
|
+
_a.trys.push([13, 17, , 18]);
|
|
699
730
|
return [4 /*yield*/, dAppKit.signTransaction({
|
|
700
731
|
transaction: transaction,
|
|
701
732
|
})];
|
|
702
|
-
case
|
|
733
|
+
case 14:
|
|
703
734
|
signedTransaction = _a.sent();
|
|
704
735
|
usedSignOnly = true;
|
|
705
736
|
onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
|
|
@@ -707,12 +738,12 @@ function Inner(_a) {
|
|
|
707
738
|
transactionBlock: signedTransaction.bytes,
|
|
708
739
|
signature: signedTransaction.signature,
|
|
709
740
|
})];
|
|
710
|
-
case
|
|
741
|
+
case 15:
|
|
711
742
|
res1 = _a.sent();
|
|
712
743
|
onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
|
|
713
744
|
return [4 /*yield*/, waitForTransactionWithCheck(res1.digest)];
|
|
714
|
-
case
|
|
715
|
-
case
|
|
745
|
+
case 16: return [2 /*return*/, _a.sent()];
|
|
746
|
+
case 17:
|
|
716
747
|
err_5 = _a.sent();
|
|
717
748
|
if (usedSignOnly)
|
|
718
749
|
throw err_5;
|
|
@@ -720,26 +751,25 @@ function Inner(_a) {
|
|
|
720
751
|
if (!message.includes("does not support"))
|
|
721
752
|
throw err_5;
|
|
722
753
|
console.warn("[WalletContext] Wallet does not support sign-only, falling back to signAndExecuteTransaction");
|
|
723
|
-
return [3 /*break*/,
|
|
724
|
-
case
|
|
754
|
+
return [3 /*break*/, 18];
|
|
755
|
+
case 18: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
|
|
725
756
|
transaction: transaction,
|
|
726
757
|
})];
|
|
727
|
-
case
|
|
758
|
+
case 19:
|
|
728
759
|
res = _a.sent();
|
|
729
760
|
digest = res.$kind === "Transaction"
|
|
730
761
|
? res.Transaction.digest
|
|
731
762
|
: res.FailedTransaction.digest;
|
|
732
763
|
return [4 /*yield*/, waitForTransactionWithCheck(digest)];
|
|
733
|
-
case
|
|
734
|
-
case
|
|
764
|
+
case 20: return [2 /*return*/, _a.sent()];
|
|
765
|
+
case 21:
|
|
735
766
|
err_6 = _a.sent();
|
|
736
767
|
console.error(err_6);
|
|
737
768
|
throw err_6;
|
|
738
|
-
case
|
|
769
|
+
case 22: return [2 /*return*/];
|
|
739
770
|
}
|
|
740
771
|
});
|
|
741
772
|
}); }, [
|
|
742
|
-
universalConnector,
|
|
743
773
|
sessionAddress,
|
|
744
774
|
gasBudget,
|
|
745
775
|
impersonatedAddress,
|
|
@@ -750,7 +780,7 @@ function Inner(_a) {
|
|
|
750
780
|
waitForTransactionWithCheck,
|
|
751
781
|
]);
|
|
752
782
|
// Using Ledger
|
|
753
|
-
var
|
|
783
|
+
var _h = useLocalStorage("isUsingLedger-".concat(impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address), false), isUsingLedger = _h[0], setIsUsingLedger = _h[1];
|
|
754
784
|
// Context
|
|
755
785
|
var contextValue = useMemo(function () {
|
|
756
786
|
return {
|
package/lib/connector.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import UniversalProvider from "@walletconnect/universal-provider";
|
|
2
2
|
export declare const projectId = "eebad6a56ec8b3f08b70175934d35a9d";
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function getWalletConnectProvider(): Promise<UniversalProvider>;
|
|
4
|
+
export declare const WC_SUI_METHODS: {
|
|
5
|
+
readonly SIGN_TRANSACTION: "sui_signTransaction";
|
|
6
|
+
readonly SIGN_AND_EXECUTE_TRANSACTION: "sui_signAndExecuteTransaction";
|
|
7
|
+
readonly SIGN_PERSONAL_MESSAGE: "sui_signPersonalMessage";
|
|
8
|
+
};
|
package/lib/connector.js
CHANGED
|
@@ -34,48 +34,34 @@ 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
|
|
38
|
-
// Get projectId from https://dashboard.reown.com
|
|
37
|
+
import UniversalProvider from "@walletconnect/universal-provider";
|
|
39
38
|
export var projectId = "eebad6a56ec8b3f08b70175934d35a9d";
|
|
40
|
-
|
|
39
|
+
var provider;
|
|
40
|
+
export function getWalletConnectProvider() {
|
|
41
41
|
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
-
var universalConnector;
|
|
43
42
|
return __generator(this, function (_a) {
|
|
44
43
|
switch (_a.label) {
|
|
45
|
-
case 0:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
methods: [
|
|
56
|
-
"sui_signPersonalMessage",
|
|
57
|
-
"sui_signTransaction",
|
|
58
|
-
"sui_signAndExecuteTransaction",
|
|
59
|
-
],
|
|
60
|
-
chains: [
|
|
61
|
-
{
|
|
62
|
-
id: 784,
|
|
63
|
-
chainNamespace: "sui",
|
|
64
|
-
caipNetworkId: "sui:mainnet",
|
|
65
|
-
name: "Sui",
|
|
66
|
-
nativeCurrency: { name: "SUI", symbol: "SUI", decimals: 9 },
|
|
67
|
-
rpcUrls: { default: { http: [rpcUrl] } },
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
events: [],
|
|
71
|
-
namespace: "sui",
|
|
44
|
+
case 0:
|
|
45
|
+
if (!!provider) return [3 /*break*/, 2];
|
|
46
|
+
return [4 /*yield*/, UniversalProvider.init({
|
|
47
|
+
projectId: projectId,
|
|
48
|
+
metadata: {
|
|
49
|
+
name: "Suilend",
|
|
50
|
+
description: "Sui's DeFi Suite",
|
|
51
|
+
url: "https://suilend.fi/",
|
|
52
|
+
icons: ["https://suilend.fi/favicon.ico"],
|
|
72
53
|
},
|
|
73
|
-
]
|
|
74
|
-
})];
|
|
54
|
+
})];
|
|
75
55
|
case 1:
|
|
76
|
-
|
|
77
|
-
|
|
56
|
+
provider = _a.sent();
|
|
57
|
+
_a.label = 2;
|
|
58
|
+
case 2: return [2 /*return*/, provider];
|
|
78
59
|
}
|
|
79
60
|
});
|
|
80
61
|
});
|
|
81
62
|
}
|
|
63
|
+
export var WC_SUI_METHODS = {
|
|
64
|
+
SIGN_TRANSACTION: "sui_signTransaction",
|
|
65
|
+
SIGN_AND_EXECUTE_TRANSACTION: "sui_signAndExecuteTransaction",
|
|
66
|
+
SIGN_PERSONAL_MESSAGE: "sui_signPersonalMessage",
|
|
67
|
+
};
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@suilend/sui-fe-next","version":"2.0.
|
|
1
|
+
{"name":"@suilend/sui-fe-next","version":"2.0.14","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","@walletconnect/universal-provider":"2.21.1","@tanstack/react-query":"^5.60.2","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"}}
|