@suilend/sui-fe-next 2.0.11 → 2.0.13
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 +147 -91
- 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,39 @@ 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
|
-
var sessionAddress =
|
|
226
|
-
|
|
227
|
-
:
|
|
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(), wcProvider = _f[0], setWcProvider = _f[1];
|
|
224
|
+
var _g = useState(), wcSession = _g[0], setWcSession = _g[1];
|
|
225
|
+
var sessionAddress = useMemo(function () {
|
|
226
|
+
var _a, _b, _c;
|
|
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];
|
|
228
|
+
return raw ? raw.split(":").pop() : undefined;
|
|
229
|
+
}, [wcSession]);
|
|
228
230
|
useEffect(function () {
|
|
229
231
|
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
230
|
-
var
|
|
232
|
+
var provider;
|
|
231
233
|
return __generator(this, function (_a) {
|
|
232
234
|
switch (_a.label) {
|
|
233
|
-
case 0: return [4 /*yield*/,
|
|
235
|
+
case 0: return [4 /*yield*/, getWalletConnectProvider()];
|
|
234
236
|
case 1:
|
|
235
|
-
|
|
236
|
-
|
|
237
|
+
provider = _a.sent();
|
|
238
|
+
setWcProvider(provider);
|
|
239
|
+
if (provider.session) {
|
|
240
|
+
setWcSession(provider.session);
|
|
241
|
+
}
|
|
237
242
|
return [2 /*return*/];
|
|
238
243
|
}
|
|
239
244
|
});
|
|
240
245
|
}); })();
|
|
241
|
-
}, [
|
|
246
|
+
}, []);
|
|
242
247
|
// Impersonated address
|
|
243
248
|
var impersonatedAddress = queryParams[WalletContextQueryParams.WALLET];
|
|
244
249
|
// Wallets
|
|
@@ -352,7 +357,7 @@ function Inner(_a) {
|
|
|
352
357
|
wallets__web,
|
|
353
358
|
]);
|
|
354
359
|
// Wallet
|
|
355
|
-
var
|
|
360
|
+
var _h = useState(false), isConnectWalletDropdownOpen = _h[0], setIsConnectWalletDropdownOpen = _h[1];
|
|
356
361
|
var rawWallet = useCurrentWallet();
|
|
357
362
|
var wallet = useMemo(function () {
|
|
358
363
|
if (sessionAddress) {
|
|
@@ -370,11 +375,11 @@ function Inner(_a) {
|
|
|
370
375
|
return __generator(this, function (_a) {
|
|
371
376
|
switch (_a.label) {
|
|
372
377
|
case 0:
|
|
373
|
-
if (!sessionAddress || !
|
|
378
|
+
if (!sessionAddress || !wcProvider)
|
|
374
379
|
throw new Error("Wallet not connected");
|
|
375
|
-
return [4 /*yield*/,
|
|
376
|
-
method:
|
|
377
|
-
params: { message: message.toString() },
|
|
380
|
+
return [4 /*yield*/, wcProvider.request({
|
|
381
|
+
method: WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
|
|
382
|
+
params: { message: message.toString(), address: sessionAddress },
|
|
378
383
|
}, "sui:mainnet")];
|
|
379
384
|
case 1:
|
|
380
385
|
res = _a.sent();
|
|
@@ -384,84 +389,109 @@ function Inner(_a) {
|
|
|
384
389
|
}];
|
|
385
390
|
}
|
|
386
391
|
});
|
|
387
|
-
}); }, [sessionAddress,
|
|
392
|
+
}); }, [sessionAddress, wcProvider]);
|
|
388
393
|
var connectWalletWrapper = useCallback(function (_wallet) { return __awaiter(_this, void 0, void 0, function () {
|
|
389
|
-
var
|
|
390
|
-
return __generator(this, function (
|
|
391
|
-
switch (
|
|
394
|
+
var _a, _b, err_1;
|
|
395
|
+
return __generator(this, function (_c) {
|
|
396
|
+
switch (_c.label) {
|
|
392
397
|
case 0:
|
|
393
|
-
|
|
398
|
+
_c.trys.push([0, 12, , 13]);
|
|
394
399
|
if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/, 6];
|
|
395
|
-
|
|
400
|
+
if (!wcProvider)
|
|
401
|
+
throw new Error("WalletConnect provider not ready");
|
|
402
|
+
// Connect with optionalNamespaces — matches the reference app exactly.
|
|
403
|
+
// Methods are declared at connect time, not at init time.
|
|
404
|
+
return [4 /*yield*/, wcProvider.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
|
+
})];
|
|
396
417
|
case 1:
|
|
397
|
-
|
|
398
|
-
|
|
418
|
+
// Connect with optionalNamespaces — matches the reference app exactly.
|
|
419
|
+
// Methods are declared at connect time, not at init time.
|
|
420
|
+
_c.sent();
|
|
421
|
+
_c.label = 2;
|
|
399
422
|
case 2:
|
|
400
|
-
|
|
423
|
+
_c.trys.push([2, 4, , 5]);
|
|
401
424
|
return [4 /*yield*/, disconnectWallet()];
|
|
402
425
|
case 3:
|
|
403
|
-
|
|
426
|
+
_c.sent();
|
|
404
427
|
return [3 /*break*/, 5];
|
|
405
428
|
case 4:
|
|
406
|
-
_a =
|
|
429
|
+
_a = _c.sent();
|
|
407
430
|
return [3 /*break*/, 5];
|
|
408
431
|
case 5:
|
|
409
|
-
|
|
432
|
+
setWcSession(wcProvider.session);
|
|
410
433
|
return [2 /*return*/];
|
|
411
434
|
case 6:
|
|
412
435
|
if (!_wallet.raw)
|
|
413
436
|
throw new Error("Missing wallet");
|
|
414
437
|
return [4 /*yield*/, connectWallet({ wallet: _wallet.raw })];
|
|
415
438
|
case 7:
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
439
|
+
_c.sent();
|
|
440
|
+
_c.label = 8;
|
|
441
|
+
case 8:
|
|
442
|
+
_c.trys.push([8, 10, , 11]);
|
|
443
|
+
return [4 /*yield*/, (wcProvider === null || wcProvider === void 0 ? void 0 : wcProvider.disconnect())];
|
|
444
|
+
case 9:
|
|
445
|
+
_c.sent();
|
|
446
|
+
return [3 /*break*/, 11];
|
|
447
|
+
case 10:
|
|
448
|
+
_b = _c.sent();
|
|
449
|
+
return [3 /*break*/, 11];
|
|
450
|
+
case 11:
|
|
451
|
+
setWcSession(null);
|
|
424
452
|
showInfoToast("Connected ".concat(_wallet.name));
|
|
425
453
|
setIsConnectWalletDropdownOpen(false);
|
|
426
|
-
return [3 /*break*/,
|
|
427
|
-
case
|
|
428
|
-
err_1 =
|
|
454
|
+
return [3 /*break*/, 13];
|
|
455
|
+
case 12:
|
|
456
|
+
err_1 = _c.sent();
|
|
429
457
|
showErrorToast("Failed to connect ".concat(_wallet.name), err_1);
|
|
430
458
|
console.error(err_1);
|
|
431
|
-
return [3 /*break*/,
|
|
432
|
-
case
|
|
459
|
+
return [3 /*break*/, 13];
|
|
460
|
+
case 13: return [2 /*return*/];
|
|
433
461
|
}
|
|
434
462
|
});
|
|
435
|
-
}); }, [connectWallet, disconnectWallet,
|
|
463
|
+
}); }, [connectWallet, disconnectWallet, wcProvider]);
|
|
436
464
|
var disconnectWalletWrapper = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
437
465
|
var err_2;
|
|
438
466
|
return __generator(this, function (_a) {
|
|
439
467
|
switch (_a.label) {
|
|
440
468
|
case 0:
|
|
441
|
-
_a.trys.push([0,
|
|
442
|
-
if (!sessionAddress) return [3 /*break*/,
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
469
|
+
_a.trys.push([0, 5, , 6]);
|
|
470
|
+
if (!sessionAddress) return [3 /*break*/, 2];
|
|
471
|
+
return [4 /*yield*/, (wcProvider === null || wcProvider === void 0 ? void 0 : wcProvider.disconnect())];
|
|
472
|
+
case 1:
|
|
473
|
+
_a.sent();
|
|
474
|
+
setWcSession(null);
|
|
475
|
+
return [3 /*break*/, 4];
|
|
476
|
+
case 2: return [4 /*yield*/, disconnectWallet()];
|
|
477
|
+
case 3:
|
|
448
478
|
_a.sent();
|
|
449
479
|
showInfoToast("Disconnected wallet");
|
|
450
|
-
_a.label =
|
|
451
|
-
case
|
|
452
|
-
case
|
|
480
|
+
_a.label = 4;
|
|
481
|
+
case 4: return [3 /*break*/, 6];
|
|
482
|
+
case 5:
|
|
453
483
|
err_2 = _a.sent();
|
|
454
484
|
showErrorToast("Failed to disconnect wallet", err_2);
|
|
455
485
|
console.error(err_2);
|
|
456
|
-
return [3 /*break*/,
|
|
457
|
-
case
|
|
486
|
+
return [3 /*break*/, 6];
|
|
487
|
+
case 6: return [2 /*return*/];
|
|
458
488
|
}
|
|
459
489
|
});
|
|
460
|
-
}); }, [sessionAddress,
|
|
490
|
+
}); }, [sessionAddress, wcProvider, disconnectWallet]);
|
|
461
491
|
// Accounts
|
|
462
492
|
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 = (
|
|
493
|
+
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]);
|
|
494
|
+
var accountRes = (_d = useCurrentAccount()) !== null && _d !== void 0 ? _d : undefined;
|
|
465
495
|
var walletConnectAccount = useMemo(function () {
|
|
466
496
|
return sessionAddress
|
|
467
497
|
? {
|
|
@@ -497,7 +527,7 @@ function Inner(_a) {
|
|
|
497
527
|
showErrorToast("Failed to switch to ".concat(accountLabel), err);
|
|
498
528
|
console.error(err);
|
|
499
529
|
}
|
|
500
|
-
}, [dAppKit, (
|
|
530
|
+
}, [dAppKit, (_e = walletConnection.wallet) === null || _e === void 0 ? void 0 : _e.accounts]);
|
|
501
531
|
// LaunchDarkly
|
|
502
532
|
var ldClient = useLDClient();
|
|
503
533
|
var ldKeyRef = useRef(undefined);
|
|
@@ -621,7 +651,7 @@ function Inner(_a) {
|
|
|
621
651
|
});
|
|
622
652
|
}); }, [suiClient]);
|
|
623
653
|
var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
|
|
624
|
-
var _address, txBytes, res_1, usedSignOnly, signedTransaction, res1, err_5, message, res, digest, err_6;
|
|
654
|
+
var _address, txBytes, txBase64, params, res_1, signAndExecErr_1, signRes, execRes, usedSignOnly, signedTransaction, res1, err_5, message, res, digest, err_6;
|
|
625
655
|
return __generator(this, function (_a) {
|
|
626
656
|
switch (_a.label) {
|
|
627
657
|
case 0:
|
|
@@ -634,7 +664,7 @@ function Inner(_a) {
|
|
|
634
664
|
}
|
|
635
665
|
_a.label = 1;
|
|
636
666
|
case 1:
|
|
637
|
-
_a.trys.push([1,
|
|
667
|
+
_a.trys.push([1, 20, , 21]);
|
|
638
668
|
// Gas budget
|
|
639
669
|
if (gasBudget !== "")
|
|
640
670
|
transaction.setGasBudget(+new BigNumber(gasBudget)
|
|
@@ -643,33 +673,59 @@ function Inner(_a) {
|
|
|
643
673
|
onSetGasBudget === null || onSetGasBudget === void 0 ? void 0 : onSetGasBudget(transaction);
|
|
644
674
|
// Log
|
|
645
675
|
console.log("[WalletContext] signExecuteAndWaitForTransaction - transaction.getData():", transaction.getData());
|
|
646
|
-
if (!(sessionAddress &&
|
|
647
|
-
// WalletConnect
|
|
648
|
-
//
|
|
676
|
+
if (!(sessionAddress && wcProvider)) return [3 /*break*/, 11];
|
|
677
|
+
// WalletConnect path — uses @walletconnect/universal-provider directly,
|
|
678
|
+
// matching the reference app: https://github.com/WalletConnect/react-core-up-sui
|
|
649
679
|
transaction.setSender(sessionAddress);
|
|
650
680
|
return [4 /*yield*/, transaction.build({ client: suiClient })];
|
|
651
681
|
case 2:
|
|
652
682
|
txBytes = _a.sent();
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
}, "sui:mainnet")];
|
|
683
|
+
txBase64 = toBase64(txBytes);
|
|
684
|
+
params = {
|
|
685
|
+
transaction: txBase64,
|
|
686
|
+
address: sessionAddress,
|
|
687
|
+
};
|
|
688
|
+
_a.label = 3;
|
|
660
689
|
case 3:
|
|
690
|
+
_a.trys.push([3, 6, , 7]);
|
|
691
|
+
console.log("[WalletContext] WalletConnect — trying sui_signAndExecuteTransaction");
|
|
692
|
+
return [4 /*yield*/, wcProvider.request({
|
|
693
|
+
method: WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
|
|
694
|
+
params: params,
|
|
695
|
+
}, "sui:mainnet")];
|
|
696
|
+
case 4:
|
|
661
697
|
res_1 = _a.sent();
|
|
698
|
+
console.log("[WalletContext] WalletConnect — sui_signAndExecuteTransaction succeeded, digest:", res_1.digest);
|
|
662
699
|
return [4 /*yield*/, waitForTransactionWithCheck(res_1.digest)];
|
|
663
|
-
case
|
|
664
|
-
case 5:
|
|
665
|
-
usedSignOnly = false;
|
|
666
|
-
_a.label = 6;
|
|
700
|
+
case 5: return [2 /*return*/, _a.sent()];
|
|
667
701
|
case 6:
|
|
668
|
-
_a.
|
|
702
|
+
signAndExecErr_1 = _a.sent();
|
|
703
|
+
console.warn("[WalletContext] WalletConnect — sui_signAndExecuteTransaction failed:", signAndExecErr_1);
|
|
704
|
+
return [3 /*break*/, 7];
|
|
705
|
+
case 7:
|
|
706
|
+
// Fallback: sign-only, then dApp-side execute
|
|
707
|
+
console.log("[WalletContext] WalletConnect — trying sui_signTransaction (sign-only fallback)");
|
|
708
|
+
return [4 /*yield*/, wcProvider.request({ method: WC_SUI_METHODS.SIGN_TRANSACTION, params: params }, "sui:mainnet")];
|
|
709
|
+
case 8:
|
|
710
|
+
signRes = _a.sent();
|
|
711
|
+
console.log("[WalletContext] WalletConnect — sui_signTransaction succeeded, executing on-chain");
|
|
712
|
+
return [4 /*yield*/, suiClient.executeTransactionBlock({
|
|
713
|
+
transactionBlock: signRes.transactionBytes,
|
|
714
|
+
signature: signRes.signature,
|
|
715
|
+
})];
|
|
716
|
+
case 9:
|
|
717
|
+
execRes = _a.sent();
|
|
718
|
+
return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
|
|
719
|
+
case 10: return [2 /*return*/, _a.sent()];
|
|
720
|
+
case 11:
|
|
721
|
+
usedSignOnly = false;
|
|
722
|
+
_a.label = 12;
|
|
723
|
+
case 12:
|
|
724
|
+
_a.trys.push([12, 16, , 17]);
|
|
669
725
|
return [4 /*yield*/, dAppKit.signTransaction({
|
|
670
726
|
transaction: transaction,
|
|
671
727
|
})];
|
|
672
|
-
case
|
|
728
|
+
case 13:
|
|
673
729
|
signedTransaction = _a.sent();
|
|
674
730
|
usedSignOnly = true;
|
|
675
731
|
onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
|
|
@@ -677,12 +733,12 @@ function Inner(_a) {
|
|
|
677
733
|
transactionBlock: signedTransaction.bytes,
|
|
678
734
|
signature: signedTransaction.signature,
|
|
679
735
|
})];
|
|
680
|
-
case
|
|
736
|
+
case 14:
|
|
681
737
|
res1 = _a.sent();
|
|
682
738
|
onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
|
|
683
739
|
return [4 /*yield*/, waitForTransactionWithCheck(res1.digest)];
|
|
684
|
-
case
|
|
685
|
-
case
|
|
740
|
+
case 15: return [2 /*return*/, _a.sent()];
|
|
741
|
+
case 16:
|
|
686
742
|
err_5 = _a.sent();
|
|
687
743
|
if (usedSignOnly)
|
|
688
744
|
throw err_5;
|
|
@@ -690,26 +746,26 @@ function Inner(_a) {
|
|
|
690
746
|
if (!message.includes("does not support"))
|
|
691
747
|
throw err_5;
|
|
692
748
|
console.warn("[WalletContext] Wallet does not support sign-only, falling back to signAndExecuteTransaction");
|
|
693
|
-
return [3 /*break*/,
|
|
694
|
-
case
|
|
749
|
+
return [3 /*break*/, 17];
|
|
750
|
+
case 17: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
|
|
695
751
|
transaction: transaction,
|
|
696
752
|
})];
|
|
697
|
-
case
|
|
753
|
+
case 18:
|
|
698
754
|
res = _a.sent();
|
|
699
755
|
digest = res.$kind === "Transaction"
|
|
700
756
|
? res.Transaction.digest
|
|
701
757
|
: res.FailedTransaction.digest;
|
|
702
758
|
return [4 /*yield*/, waitForTransactionWithCheck(digest)];
|
|
703
|
-
case
|
|
704
|
-
case
|
|
759
|
+
case 19: return [2 /*return*/, _a.sent()];
|
|
760
|
+
case 20:
|
|
705
761
|
err_6 = _a.sent();
|
|
706
762
|
console.error(err_6);
|
|
707
763
|
throw err_6;
|
|
708
|
-
case
|
|
764
|
+
case 21: return [2 /*return*/];
|
|
709
765
|
}
|
|
710
766
|
});
|
|
711
767
|
}); }, [
|
|
712
|
-
|
|
768
|
+
wcProvider,
|
|
713
769
|
sessionAddress,
|
|
714
770
|
gasBudget,
|
|
715
771
|
impersonatedAddress,
|
|
@@ -720,7 +776,7 @@ function Inner(_a) {
|
|
|
720
776
|
waitForTransactionWithCheck,
|
|
721
777
|
]);
|
|
722
778
|
// Using Ledger
|
|
723
|
-
var
|
|
779
|
+
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];
|
|
724
780
|
// Context
|
|
725
781
|
var contextValue = useMemo(function () {
|
|
726
782
|
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.13","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"}}
|