@matchain/matchid-sdk-react 0.1.48-alpha.20 → 0.1.48-alpha.22
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/dist/{chunk-WXPVHKGJ.mjs → chunk-FB5MHLWX.mjs} +3 -1
- package/dist/{chunk-3UVHHJP6.mjs → chunk-MUEDDGKX.mjs} +2 -2
- package/dist/{chunk-WHZ3HI4R.mjs → chunk-WPXA4QPX.mjs} +613 -562
- package/dist/chunk-WPXA4QPX.mjs.map +1 -0
- package/dist/components/index.js +456 -446
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +3 -3
- package/dist/hooks/api/index.js +38 -28
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +3 -3
- package/dist/hooks/index.js +136 -132
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +3 -3
- package/dist/index.css +33 -0
- package/dist/index.js +267 -218
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/ui/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-WHZ3HI4R.mjs.map +0 -1
- /package/dist/{chunk-WXPVHKGJ.mjs.map → chunk-FB5MHLWX.mjs.map} +0 -0
- /package/dist/{chunk-3UVHHJP6.mjs.map → chunk-MUEDDGKX.mjs.map} +0 -0
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NumberFormatter,
|
|
3
|
+
encodeBase64,
|
|
4
|
+
formatAddress,
|
|
5
|
+
formatDate,
|
|
6
|
+
getAppClientId,
|
|
7
|
+
getVersion,
|
|
8
|
+
isValidEmail,
|
|
9
|
+
isValidUsername,
|
|
10
|
+
truncateAddress
|
|
11
|
+
} from "./chunk-5JHHHLG4.mjs";
|
|
1
12
|
import {
|
|
2
13
|
AlphaAvatar,
|
|
3
14
|
Button,
|
|
@@ -10,22 +21,13 @@ import {
|
|
|
10
21
|
Overlay,
|
|
11
22
|
Popover,
|
|
12
23
|
Radio,
|
|
24
|
+
fail_default,
|
|
13
25
|
matchlog_default,
|
|
26
|
+
success_default,
|
|
14
27
|
useDownMd,
|
|
15
28
|
useHash,
|
|
16
29
|
useLayout_exports
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import {
|
|
19
|
-
NumberFormatter,
|
|
20
|
-
encodeBase64,
|
|
21
|
-
formatAddress,
|
|
22
|
-
formatDate,
|
|
23
|
-
getAppClientId,
|
|
24
|
-
getVersion,
|
|
25
|
-
isValidEmail,
|
|
26
|
-
isValidUsername,
|
|
27
|
-
truncateAddress
|
|
28
|
-
} from "./chunk-5JHHHLG4.mjs";
|
|
30
|
+
} from "./chunk-FB5MHLWX.mjs";
|
|
29
31
|
import {
|
|
30
32
|
ArrowDownIcon,
|
|
31
33
|
ArrowRightIcon,
|
|
@@ -102,7 +104,7 @@ __export(components_exports, {
|
|
|
102
104
|
});
|
|
103
105
|
|
|
104
106
|
// src/components/EmailModal/index.tsx
|
|
105
|
-
import { useEffect as
|
|
107
|
+
import { useEffect as useEffect15, useState as useState14 } from "react";
|
|
106
108
|
|
|
107
109
|
// src/components/EmailModal/StepEmail.tsx
|
|
108
110
|
import { useEffect, useMemo, useState } from "react";
|
|
@@ -584,7 +586,7 @@ var localStore = useLocalStore;
|
|
|
584
586
|
var useLocalStore_default = useLocalStore;
|
|
585
587
|
|
|
586
588
|
// src/hooks/useUserInfo.tsx
|
|
587
|
-
import { useMemo as
|
|
589
|
+
import { useMemo as useMemo7 } from "react";
|
|
588
590
|
|
|
589
591
|
// src/MatchContext.tsx
|
|
590
592
|
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
@@ -1291,8 +1293,8 @@ function useMatchChain() {
|
|
|
1291
1293
|
|
|
1292
1294
|
// src/hooks/useMatchWallet.tsx
|
|
1293
1295
|
import { QRCode } from "react-qrcode";
|
|
1294
|
-
import { useEffect as
|
|
1295
|
-
import { useQuery as useQuery2
|
|
1296
|
+
import { useEffect as useEffect7, useMemo as useMemo5, useRef, useState as useState8 } from "react";
|
|
1297
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
1296
1298
|
|
|
1297
1299
|
// src/config/index.tsx
|
|
1298
1300
|
var EMAIL_INTERVAL = 60;
|
|
@@ -1300,7 +1302,7 @@ var EMAIL_CODE_LENGTH = 6;
|
|
|
1300
1302
|
var NATIVE_TOKEN_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
1301
1303
|
|
|
1302
1304
|
// src/hooks/useMatchWallet.tsx
|
|
1303
|
-
import { erc20Abi, formatUnits as formatUnits2 } from "viem";
|
|
1305
|
+
import { erc20Abi as erc20Abi2, formatUnits as formatUnits2 } from "viem";
|
|
1304
1306
|
|
|
1305
1307
|
// src/store/useContractStore.ts
|
|
1306
1308
|
import { create as create4 } from "zustand";
|
|
@@ -1359,51 +1361,16 @@ var useContractStore = create4(devtools3(persistedState3));
|
|
|
1359
1361
|
var useContractStore_default = useContractStore;
|
|
1360
1362
|
|
|
1361
1363
|
// src/hooks/useMatchWallet.tsx
|
|
1364
|
+
import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
|
|
1365
|
+
|
|
1366
|
+
// src/components/ImportToken/index.tsx
|
|
1367
|
+
import { useEffect as useEffect6, useMemo as useMemo4, useState as useState7 } from "react";
|
|
1362
1368
|
import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
|
|
1369
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
1370
|
+
import { erc20Abi } from "viem";
|
|
1363
1371
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1364
|
-
|
|
1365
|
-
const
|
|
1366
|
-
const { address } = useWallet();
|
|
1367
|
-
const [copied, setCopied] = useCopyClipboard();
|
|
1368
|
-
const toast = useToast();
|
|
1369
|
-
const intl = useIntl2();
|
|
1370
|
-
const onCopy = () => {
|
|
1371
|
-
setCopied(address);
|
|
1372
|
-
toast.success(intl.formatMessage({
|
|
1373
|
-
id: "copied"
|
|
1374
|
-
}));
|
|
1375
|
-
};
|
|
1376
|
-
const chainLink = chain.explorerLink("address/" + address);
|
|
1377
|
-
return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
|
|
1378
|
-
/* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
|
|
1379
|
-
/* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "receiveQrcode" }) }),
|
|
1380
|
-
/* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
|
|
1381
|
-
QRCode,
|
|
1382
|
-
{
|
|
1383
|
-
margin: "0",
|
|
1384
|
-
className: `matchid-qr-code`,
|
|
1385
|
-
value: address
|
|
1386
|
-
}
|
|
1387
|
-
) }),
|
|
1388
|
-
/* @__PURE__ */ jsx6(
|
|
1389
|
-
"a",
|
|
1390
|
-
{
|
|
1391
|
-
href: chainLink,
|
|
1392
|
-
target: "_blank",
|
|
1393
|
-
className: `matchid-receive-link`,
|
|
1394
|
-
children: address
|
|
1395
|
-
}
|
|
1396
|
-
)
|
|
1397
|
-
] }),
|
|
1398
|
-
/* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: /* @__PURE__ */ jsx6(
|
|
1399
|
-
FormattedMessage2,
|
|
1400
|
-
{
|
|
1401
|
-
id: "copyAddress"
|
|
1402
|
-
}
|
|
1403
|
-
) })
|
|
1404
|
-
] });
|
|
1405
|
-
};
|
|
1406
|
-
var ImportTokenModal = ({ close }) => {
|
|
1372
|
+
function ImportToken({ close }) {
|
|
1373
|
+
const [status, setStatus] = useState7("");
|
|
1407
1374
|
const { token } = useUserInfo();
|
|
1408
1375
|
const [address, setAddress] = useState7("");
|
|
1409
1376
|
const [symbol, setSymbol] = useState7("");
|
|
@@ -1412,32 +1379,16 @@ var ImportTokenModal = ({ close }) => {
|
|
|
1412
1379
|
const { publicClient, chainId } = useMatchChain();
|
|
1413
1380
|
const getContractInfo = async () => {
|
|
1414
1381
|
if (!publicClient) return;
|
|
1415
|
-
const erc20Abi3 = [
|
|
1416
|
-
{
|
|
1417
|
-
name: "decimals",
|
|
1418
|
-
type: "function",
|
|
1419
|
-
stateMutability: "view",
|
|
1420
|
-
inputs: [],
|
|
1421
|
-
outputs: [{ name: "decimals", type: "uint8" }]
|
|
1422
|
-
},
|
|
1423
|
-
{
|
|
1424
|
-
name: "symbol",
|
|
1425
|
-
type: "function",
|
|
1426
|
-
stateMutability: "view",
|
|
1427
|
-
inputs: [],
|
|
1428
|
-
outputs: [{ name: "symbol", type: "string" }]
|
|
1429
|
-
}
|
|
1430
|
-
];
|
|
1431
1382
|
const calls = [
|
|
1432
1383
|
{
|
|
1433
1384
|
address,
|
|
1434
|
-
abi:
|
|
1385
|
+
abi: erc20Abi,
|
|
1435
1386
|
functionName: "symbol",
|
|
1436
1387
|
args: []
|
|
1437
1388
|
},
|
|
1438
1389
|
{
|
|
1439
1390
|
address,
|
|
1440
|
-
abi:
|
|
1391
|
+
abi: erc20Abi,
|
|
1441
1392
|
functionName: "decimals",
|
|
1442
1393
|
args: []
|
|
1443
1394
|
}
|
|
@@ -1490,17 +1441,16 @@ var ImportTokenModal = ({ close }) => {
|
|
|
1490
1441
|
decimals
|
|
1491
1442
|
});
|
|
1492
1443
|
if (isSuccess(res)) {
|
|
1493
|
-
|
|
1494
|
-
id: "importSuccess"
|
|
1495
|
-
}));
|
|
1444
|
+
setStatus("success");
|
|
1496
1445
|
queryClient2.invalidateQueries({
|
|
1497
1446
|
queryKey: [USER_IMPORT_TOKEN_LIST_KEY, token, chainId]
|
|
1498
1447
|
});
|
|
1499
|
-
close();
|
|
1500
1448
|
} else {
|
|
1449
|
+
setStatus("fail");
|
|
1501
1450
|
toast.error(res.message);
|
|
1502
1451
|
}
|
|
1503
1452
|
} catch (error2) {
|
|
1453
|
+
setStatus("fail");
|
|
1504
1454
|
toast.error(error2.message);
|
|
1505
1455
|
} finally {
|
|
1506
1456
|
setLoading(false);
|
|
@@ -1522,6 +1472,16 @@ var ImportTokenModal = ({ close }) => {
|
|
|
1522
1472
|
}
|
|
1523
1473
|
return true;
|
|
1524
1474
|
}, [error, address, symbol, decimals]);
|
|
1475
|
+
console.log("status", status);
|
|
1476
|
+
if (status == "success" || status == "fail") {
|
|
1477
|
+
return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token-result matchid-flex`, children: [
|
|
1478
|
+
/* @__PURE__ */ jsxs5("div", { className: `matchid-import-token-result-box matchid-flex`, children: [
|
|
1479
|
+
/* @__PURE__ */ jsx6("img", { src: status == "success" ? success_default : fail_default, alt: status == "success" ? "success" : "fail", className: `matchid-import-token-result-img` }),
|
|
1480
|
+
/* @__PURE__ */ jsx6("div", { className: `matchid-import-token-result-text matchid-import-token-result-text-${status}`, children: status == "success" ? /* @__PURE__ */ jsx6(FormattedMessage2, { id: "importSuccess" }) : /* @__PURE__ */ jsx6(FormattedMessage2, { id: "importFail" }) })
|
|
1481
|
+
] }),
|
|
1482
|
+
status == "success" ? /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: close, block: true, highlight: true, children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "close" }) }) : /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: () => setStatus(""), block: true, highlight: true, children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "back" }) })
|
|
1483
|
+
] });
|
|
1484
|
+
}
|
|
1525
1485
|
return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token`, children: [
|
|
1526
1486
|
/* @__PURE__ */ jsxs5("div", { className: "matchid-import-token-form", children: [
|
|
1527
1487
|
/* @__PURE__ */ jsx6(Field, { label: intl.formatMessage({
|
|
@@ -1577,10 +1537,55 @@ var ImportTokenModal = ({ close }) => {
|
|
|
1577
1537
|
}
|
|
1578
1538
|
)
|
|
1579
1539
|
] });
|
|
1540
|
+
}
|
|
1541
|
+
|
|
1542
|
+
// src/hooks/useMatchWallet.tsx
|
|
1543
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1544
|
+
var ReceiveModal = () => {
|
|
1545
|
+
const chain = useMatchChain();
|
|
1546
|
+
const { address } = useWallet();
|
|
1547
|
+
const [copied, setCopied] = useCopyClipboard();
|
|
1548
|
+
const toast = useToast();
|
|
1549
|
+
const intl = useIntl3();
|
|
1550
|
+
const onCopy = () => {
|
|
1551
|
+
setCopied(address);
|
|
1552
|
+
toast.success(intl.formatMessage({
|
|
1553
|
+
id: "copied"
|
|
1554
|
+
}));
|
|
1555
|
+
};
|
|
1556
|
+
const chainLink = chain.explorerLink("address/" + address);
|
|
1557
|
+
return /* @__PURE__ */ jsxs6("div", { className: `matchid-receive-modal`, children: [
|
|
1558
|
+
/* @__PURE__ */ jsxs6("div", { className: "matchid-receive-container", children: [
|
|
1559
|
+
/* @__PURE__ */ jsx7("div", { className: `matchid-receive-text`, children: /* @__PURE__ */ jsx7(FormattedMessage3, { id: "receiveQrcode" }) }),
|
|
1560
|
+
/* @__PURE__ */ jsx7("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx7(
|
|
1561
|
+
QRCode,
|
|
1562
|
+
{
|
|
1563
|
+
margin: "0",
|
|
1564
|
+
className: `matchid-qr-code`,
|
|
1565
|
+
value: address
|
|
1566
|
+
}
|
|
1567
|
+
) }),
|
|
1568
|
+
/* @__PURE__ */ jsx7(
|
|
1569
|
+
"a",
|
|
1570
|
+
{
|
|
1571
|
+
href: chainLink,
|
|
1572
|
+
target: "_blank",
|
|
1573
|
+
className: `matchid-receive-link`,
|
|
1574
|
+
children: address
|
|
1575
|
+
}
|
|
1576
|
+
)
|
|
1577
|
+
] }),
|
|
1578
|
+
/* @__PURE__ */ jsx7(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: /* @__PURE__ */ jsx7(
|
|
1579
|
+
FormattedMessage3,
|
|
1580
|
+
{
|
|
1581
|
+
id: "copyAddress"
|
|
1582
|
+
}
|
|
1583
|
+
) })
|
|
1584
|
+
] });
|
|
1580
1585
|
};
|
|
1581
1586
|
function useMatchWallet() {
|
|
1582
1587
|
const modal = useModal();
|
|
1583
|
-
const intl =
|
|
1588
|
+
const intl = useIntl3();
|
|
1584
1589
|
const showReceiveModal = () => {
|
|
1585
1590
|
modal.open({
|
|
1586
1591
|
title: intl.formatMessage({
|
|
@@ -1592,9 +1597,9 @@ function useMatchWallet() {
|
|
|
1592
1597
|
const showImportTokenModal = () => {
|
|
1593
1598
|
modal.open({
|
|
1594
1599
|
title: intl.formatMessage({
|
|
1595
|
-
id: "
|
|
1600
|
+
id: "customizedToken"
|
|
1596
1601
|
}),
|
|
1597
|
-
content:
|
|
1602
|
+
content: ImportToken
|
|
1598
1603
|
});
|
|
1599
1604
|
};
|
|
1600
1605
|
const showSendListModal = () => {
|
|
@@ -1612,8 +1617,8 @@ function useMatchWallet() {
|
|
|
1612
1617
|
};
|
|
1613
1618
|
}
|
|
1614
1619
|
function useMatchWalletRecords() {
|
|
1615
|
-
const [hasMore, setHasMore] =
|
|
1616
|
-
const [items, setItems] =
|
|
1620
|
+
const [hasMore, setHasMore] = useState8(true);
|
|
1621
|
+
const [items, setItems] = useState8([]);
|
|
1617
1622
|
const { chainId, publicClient } = useMatchChain();
|
|
1618
1623
|
const { address } = useWallet();
|
|
1619
1624
|
const hasMoreRef = useRef(hasMore);
|
|
@@ -1648,13 +1653,13 @@ function useMatchWalletRecords() {
|
|
|
1648
1653
|
for (const contract of contractUnique) {
|
|
1649
1654
|
calls.push({
|
|
1650
1655
|
address: contract,
|
|
1651
|
-
abi:
|
|
1656
|
+
abi: erc20Abi2,
|
|
1652
1657
|
functionName: "symbol",
|
|
1653
1658
|
args: []
|
|
1654
1659
|
});
|
|
1655
1660
|
calls.push({
|
|
1656
1661
|
address: contract,
|
|
1657
|
-
abi:
|
|
1662
|
+
abi: erc20Abi2,
|
|
1658
1663
|
functionName: "decimals",
|
|
1659
1664
|
args: []
|
|
1660
1665
|
});
|
|
@@ -1693,17 +1698,15 @@ function useMatchWalletRecords() {
|
|
|
1693
1698
|
hasMoreRef.current = true;
|
|
1694
1699
|
fetchMoreData();
|
|
1695
1700
|
};
|
|
1696
|
-
|
|
1701
|
+
useEffect7(() => {
|
|
1697
1702
|
if (chainId && address) {
|
|
1698
1703
|
onInit();
|
|
1699
1704
|
}
|
|
1700
1705
|
}, [chainId, address]);
|
|
1701
1706
|
const { getTransactions, removeTransaction } = useTransactionStore_default();
|
|
1702
|
-
const
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
useEffect6(() => {
|
|
1706
|
-
const removeList = localTransaction.filter((n) => items.findIndex((m) => m.hash == n.hash) >= 0);
|
|
1707
|
+
const list = useMemo5(() => {
|
|
1708
|
+
const localTransactions = getTransactions(chainId || 0, address) || [];
|
|
1709
|
+
const removeList = localTransactions.filter((n) => items.findIndex((m) => m.hash == n.hash) >= 0);
|
|
1707
1710
|
removeList.forEach((item) => {
|
|
1708
1711
|
removeTransaction({
|
|
1709
1712
|
chainId: chainId || 0,
|
|
@@ -1711,16 +1714,18 @@ function useMatchWalletRecords() {
|
|
|
1711
1714
|
address
|
|
1712
1715
|
});
|
|
1713
1716
|
});
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
...getTransactions(chainId || 0, address) || [],
|
|
1717
|
+
const saveList = localTransactions.filter((n) => items.findIndex((m) => m.hash == n.hash) < 0);
|
|
1718
|
+
return [
|
|
1719
|
+
...saveList,
|
|
1718
1720
|
...items
|
|
1719
1721
|
].sort((a, b) => {
|
|
1720
1722
|
const btimestamp = typeof b.timestamp === "string" ? parseInt(b.timestamp) : b.timestamp;
|
|
1721
1723
|
const atimestamp = typeof a.timestamp === "string" ? parseInt(a.timestamp) : a.timestamp;
|
|
1722
1724
|
return btimestamp - atimestamp;
|
|
1723
|
-
})
|
|
1725
|
+
});
|
|
1726
|
+
}, [getTransactions, chainId, items, address]);
|
|
1727
|
+
return {
|
|
1728
|
+
items: list,
|
|
1724
1729
|
fetchMoreData,
|
|
1725
1730
|
hasMore
|
|
1726
1731
|
};
|
|
@@ -1738,7 +1743,7 @@ function useMatchWalletAssets({
|
|
|
1738
1743
|
chainId: chainId || 0,
|
|
1739
1744
|
...assetListOptions
|
|
1740
1745
|
});
|
|
1741
|
-
const mergedAssets =
|
|
1746
|
+
const mergedAssets = useMemo5(() => {
|
|
1742
1747
|
if (!assetListQuery.data && !importTokenQuery.data) return [];
|
|
1743
1748
|
const assetList = (assetListQuery.data || []).map((asset) => ({
|
|
1744
1749
|
...asset,
|
|
@@ -1825,8 +1830,8 @@ function useMatchWalletAssetList({
|
|
|
1825
1830
|
retry: 3
|
|
1826
1831
|
// Retry up to 3 times if failed
|
|
1827
1832
|
});
|
|
1828
|
-
const erc20Tokens =
|
|
1829
|
-
const
|
|
1833
|
+
const erc20Tokens = useMemo5(() => list.filter((asset) => asset.address !== NATIVE_TOKEN_ADDRESS), [list]);
|
|
1834
|
+
const erc20Abi4 = [
|
|
1830
1835
|
{
|
|
1831
1836
|
"constant": true,
|
|
1832
1837
|
"inputs": [
|
|
@@ -1853,7 +1858,7 @@ function useMatchWalletAssetList({
|
|
|
1853
1858
|
if (!erc20Tokens.length || !publicClient) return [];
|
|
1854
1859
|
const calls = erc20Tokens.map((token) => ({
|
|
1855
1860
|
address: token.address,
|
|
1856
|
-
abi:
|
|
1861
|
+
abi: erc20Abi4,
|
|
1857
1862
|
functionName: "balanceOf",
|
|
1858
1863
|
args: [address]
|
|
1859
1864
|
}));
|
|
@@ -1874,7 +1879,7 @@ function useMatchWalletAssetList({
|
|
|
1874
1879
|
// Refresh every 15 seconds
|
|
1875
1880
|
retry: 3
|
|
1876
1881
|
});
|
|
1877
|
-
const enrichedAssets =
|
|
1882
|
+
const enrichedAssets = useMemo5(() => {
|
|
1878
1883
|
if (!list) return [];
|
|
1879
1884
|
const erc20Balances = erc20BalanceQuery.data || [];
|
|
1880
1885
|
return list.map((asset) => {
|
|
@@ -1895,7 +1900,7 @@ function useMatchWalletAssetList({
|
|
|
1895
1900
|
return { ...asset, balance, value, balanceValue };
|
|
1896
1901
|
});
|
|
1897
1902
|
}, [list, nativeBalanceQuery.data, erc20BalanceQuery.data]);
|
|
1898
|
-
|
|
1903
|
+
useEffect7(() => {
|
|
1899
1904
|
const list2 = enrichedAssets.sort((a, b) => {
|
|
1900
1905
|
if (a.address === NATIVE_TOKEN_ADDRESS) return -1;
|
|
1901
1906
|
if (b.address === NATIVE_TOKEN_ADDRESS) return 1;
|
|
@@ -1917,14 +1922,14 @@ function useMatchWalletAssetList({
|
|
|
1917
1922
|
}
|
|
1918
1923
|
|
|
1919
1924
|
// src/hooks/useReceipt.tsx
|
|
1920
|
-
import { useState as
|
|
1925
|
+
import { useState as useState9, useCallback as useCallback4, useEffect as useEffect8 } from "react";
|
|
1921
1926
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
1922
1927
|
import { createPublicClient as createPublicClient3, defineChain, http as http3 } from "viem";
|
|
1923
1928
|
var CACHE_TTL = 86400 * 30 * 1e3;
|
|
1924
1929
|
var MAX_CACHE_SIZE = 500;
|
|
1925
1930
|
var STORAGE_KEY = "match_receipt_logs";
|
|
1926
1931
|
function useReceiptCache() {
|
|
1927
|
-
const [cache, setCache] =
|
|
1932
|
+
const [cache, setCache] = useState9(/* @__PURE__ */ new Map());
|
|
1928
1933
|
const isLocalStorageAvailable = (() => {
|
|
1929
1934
|
try {
|
|
1930
1935
|
const testKey = "__test__";
|
|
@@ -1935,7 +1940,7 @@ function useReceiptCache() {
|
|
|
1935
1940
|
return false;
|
|
1936
1941
|
}
|
|
1937
1942
|
})();
|
|
1938
|
-
|
|
1943
|
+
useEffect8(() => {
|
|
1939
1944
|
if (isLocalStorageAvailable) {
|
|
1940
1945
|
try {
|
|
1941
1946
|
const storedData = localStorage.getItem(STORAGE_KEY);
|
|
@@ -2026,7 +2031,7 @@ function useReceipt({
|
|
|
2026
2031
|
const { list } = useMatchChain();
|
|
2027
2032
|
const cache = useReceiptCache();
|
|
2028
2033
|
const chain = list?.find((item) => item.id === chainId);
|
|
2029
|
-
const [shouldRefetch, setShouldRefetch] =
|
|
2034
|
+
const [shouldRefetch, setShouldRefetch] = useState9(true);
|
|
2030
2035
|
const query = useQuery3({
|
|
2031
2036
|
queryKey: ["match-tx-receipt", hash, chain],
|
|
2032
2037
|
queryFn: async () => {
|
|
@@ -2052,7 +2057,7 @@ function useReceipt({
|
|
|
2052
2057
|
},
|
|
2053
2058
|
refetchInterval: shouldRefetch ? 1e4 : false
|
|
2054
2059
|
});
|
|
2055
|
-
|
|
2060
|
+
useEffect8(() => {
|
|
2056
2061
|
if (query.data) {
|
|
2057
2062
|
setShouldRefetch(false);
|
|
2058
2063
|
}
|
|
@@ -2061,14 +2066,14 @@ function useReceipt({
|
|
|
2061
2066
|
}
|
|
2062
2067
|
|
|
2063
2068
|
// src/hooks/useTransaction.tsx
|
|
2064
|
-
import { useState as
|
|
2069
|
+
import { useState as useState10, useCallback as useCallback5, useEffect as useEffect9 } from "react";
|
|
2065
2070
|
import { useQuery as useQuery4 } from "@tanstack/react-query";
|
|
2066
2071
|
import { createPublicClient as createPublicClient4, defineChain as defineChain2, http as http4 } from "viem";
|
|
2067
2072
|
var CACHE_TTL2 = 86400 * 30 * 1e3;
|
|
2068
2073
|
var MAX_CACHE_SIZE2 = 500;
|
|
2069
2074
|
var STORAGE_KEY2 = "match_transaction_logs";
|
|
2070
2075
|
function useTransactionCache() {
|
|
2071
|
-
const [cache, setCache] =
|
|
2076
|
+
const [cache, setCache] = useState10(/* @__PURE__ */ new Map());
|
|
2072
2077
|
const isLocalStorageAvailable = (() => {
|
|
2073
2078
|
try {
|
|
2074
2079
|
const testKey = "__test__";
|
|
@@ -2079,7 +2084,7 @@ function useTransactionCache() {
|
|
|
2079
2084
|
return false;
|
|
2080
2085
|
}
|
|
2081
2086
|
})();
|
|
2082
|
-
|
|
2087
|
+
useEffect9(() => {
|
|
2083
2088
|
if (isLocalStorageAvailable) {
|
|
2084
2089
|
try {
|
|
2085
2090
|
const storedData = localStorage.getItem(STORAGE_KEY2);
|
|
@@ -2170,7 +2175,7 @@ function useTransaction({
|
|
|
2170
2175
|
const { list } = useMatchChain();
|
|
2171
2176
|
const cache = useTransactionCache();
|
|
2172
2177
|
const chain = list?.find((item) => item.id === chainId);
|
|
2173
|
-
const [shouldRefetch, setShouldRefetch] =
|
|
2178
|
+
const [shouldRefetch, setShouldRefetch] = useState10(true);
|
|
2174
2179
|
const query = useQuery4({
|
|
2175
2180
|
queryKey: ["match-tx-transaction", hash, chain],
|
|
2176
2181
|
queryFn: async () => {
|
|
@@ -2196,7 +2201,7 @@ function useTransaction({
|
|
|
2196
2201
|
},
|
|
2197
2202
|
refetchInterval: shouldRefetch ? 1e4 : false
|
|
2198
2203
|
});
|
|
2199
|
-
|
|
2204
|
+
useEffect9(() => {
|
|
2200
2205
|
if (query.data) {
|
|
2201
2206
|
setShouldRefetch(false);
|
|
2202
2207
|
}
|
|
@@ -2208,39 +2213,39 @@ function useTransaction({
|
|
|
2208
2213
|
import { create as create5 } from "zustand";
|
|
2209
2214
|
|
|
2210
2215
|
// src/hooks/useConfig.tsx
|
|
2211
|
-
import { jsx as
|
|
2216
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
2212
2217
|
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
2213
2218
|
var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
2214
2219
|
function useWalletConfig() {
|
|
2215
2220
|
const isDownMd = useDownMd();
|
|
2216
2221
|
const walletMap = {
|
|
2217
2222
|
evm: {
|
|
2218
|
-
icon: /* @__PURE__ */
|
|
2219
|
-
activeIcon: /* @__PURE__ */
|
|
2223
|
+
icon: /* @__PURE__ */ jsx8(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2224
|
+
activeIcon: /* @__PURE__ */ jsx8(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2220
2225
|
name: "EVM",
|
|
2221
2226
|
method: "evm"
|
|
2222
2227
|
},
|
|
2223
2228
|
sol: {
|
|
2224
|
-
icon: /* @__PURE__ */
|
|
2225
|
-
activeIcon: /* @__PURE__ */
|
|
2229
|
+
icon: /* @__PURE__ */ jsx8(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2230
|
+
activeIcon: /* @__PURE__ */ jsx8(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2226
2231
|
name: "SOL",
|
|
2227
2232
|
method: "sol"
|
|
2228
2233
|
},
|
|
2229
2234
|
btc: {
|
|
2230
|
-
icon: /* @__PURE__ */
|
|
2231
|
-
activeIcon: /* @__PURE__ */
|
|
2235
|
+
icon: /* @__PURE__ */ jsx8(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2236
|
+
activeIcon: /* @__PURE__ */ jsx8(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2232
2237
|
name: "BTC",
|
|
2233
2238
|
method: "btc"
|
|
2234
2239
|
},
|
|
2235
2240
|
tron: {
|
|
2236
|
-
icon: /* @__PURE__ */
|
|
2237
|
-
activeIcon: /* @__PURE__ */
|
|
2241
|
+
icon: /* @__PURE__ */ jsx8(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2242
|
+
activeIcon: /* @__PURE__ */ jsx8(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2238
2243
|
name: "TRON",
|
|
2239
2244
|
method: "tron"
|
|
2240
2245
|
},
|
|
2241
2246
|
ton: {
|
|
2242
|
-
icon: /* @__PURE__ */
|
|
2243
|
-
activeIcon: /* @__PURE__ */
|
|
2247
|
+
icon: /* @__PURE__ */ jsx8(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2248
|
+
activeIcon: /* @__PURE__ */ jsx8(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
2244
2249
|
name: "TON",
|
|
2245
2250
|
method: "ton"
|
|
2246
2251
|
}
|
|
@@ -2290,27 +2295,27 @@ var useWalletModalStore = create5((set) => ({
|
|
|
2290
2295
|
}));
|
|
2291
2296
|
|
|
2292
2297
|
// src/components/CEXBindModal/index.tsx
|
|
2293
|
-
import { useEffect as
|
|
2294
|
-
import { FormattedMessage as
|
|
2295
|
-
import { jsx as
|
|
2298
|
+
import { useEffect as useEffect10, useMemo as useMemo6, useState as useState11 } from "react";
|
|
2299
|
+
import { FormattedMessage as FormattedMessage4, useIntl as useIntl4 } from "react-intl";
|
|
2300
|
+
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2296
2301
|
function CEXBindModal({
|
|
2297
2302
|
onClose,
|
|
2298
2303
|
type,
|
|
2299
2304
|
isOpen = false,
|
|
2300
2305
|
...props
|
|
2301
2306
|
}) {
|
|
2302
|
-
const intl =
|
|
2307
|
+
const intl = useIntl4();
|
|
2303
2308
|
const { events } = useMatch();
|
|
2304
|
-
const [APIPassphrase, setAPIPassphrase] =
|
|
2309
|
+
const [APIPassphrase, setAPIPassphrase] = useState11("");
|
|
2305
2310
|
const { refreshOverview } = useUserInfo();
|
|
2306
|
-
const [loading, setLoading] =
|
|
2307
|
-
const [key, setKey] =
|
|
2308
|
-
const [secret, setSecret] =
|
|
2309
|
-
const [error, setError] =
|
|
2310
|
-
const needPassphrase =
|
|
2311
|
+
const [loading, setLoading] = useState11(false);
|
|
2312
|
+
const [key, setKey] = useState11("");
|
|
2313
|
+
const [secret, setSecret] = useState11("");
|
|
2314
|
+
const [error, setError] = useState11("");
|
|
2315
|
+
const needPassphrase = useMemo6(() => {
|
|
2311
2316
|
return ["bitget", "okx"].includes(type.toLowerCase());
|
|
2312
2317
|
}, [type]);
|
|
2313
|
-
|
|
2318
|
+
useEffect10(() => {
|
|
2314
2319
|
if (isOpen) {
|
|
2315
2320
|
setSecret("");
|
|
2316
2321
|
setKey("");
|
|
@@ -2347,20 +2352,20 @@ function CEXBindModal({
|
|
|
2347
2352
|
setLoading(false);
|
|
2348
2353
|
}
|
|
2349
2354
|
};
|
|
2350
|
-
return /* @__PURE__ */
|
|
2355
|
+
return /* @__PURE__ */ jsx9(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
|
|
2351
2356
|
id: "CEXBindTitle"
|
|
2352
2357
|
}, {
|
|
2353
2358
|
type
|
|
2354
|
-
}), ...props, children: /* @__PURE__ */
|
|
2355
|
-
/* @__PURE__ */
|
|
2356
|
-
/* @__PURE__ */
|
|
2357
|
-
/* @__PURE__ */
|
|
2358
|
-
/* @__PURE__ */
|
|
2359
|
-
/* @__PURE__ */
|
|
2359
|
+
}), ...props, children: /* @__PURE__ */ jsxs7("div", { className: "matchid-cex-modal", children: [
|
|
2360
|
+
/* @__PURE__ */ jsxs7("div", { children: [
|
|
2361
|
+
/* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindAttention" }) }),
|
|
2362
|
+
/* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips1" }) }),
|
|
2363
|
+
/* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips2" }) }),
|
|
2364
|
+
/* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips3" }) })
|
|
2360
2365
|
] }),
|
|
2361
|
-
/* @__PURE__ */
|
|
2366
|
+
/* @__PURE__ */ jsx9(Field, { label: intl.formatMessage({
|
|
2362
2367
|
id: "CEXBindApiKey"
|
|
2363
|
-
}), children: /* @__PURE__ */
|
|
2368
|
+
}), children: /* @__PURE__ */ jsx9(
|
|
2364
2369
|
Input,
|
|
2365
2370
|
{
|
|
2366
2371
|
value: key,
|
|
@@ -2368,9 +2373,9 @@ function CEXBindModal({
|
|
|
2368
2373
|
placeholder: "**** **** ****"
|
|
2369
2374
|
}
|
|
2370
2375
|
) }),
|
|
2371
|
-
/* @__PURE__ */
|
|
2376
|
+
/* @__PURE__ */ jsx9(Field, { label: intl.formatMessage({
|
|
2372
2377
|
id: "CEXBindApiSecretKey"
|
|
2373
|
-
}), error: !needPassphrase && error, children: /* @__PURE__ */
|
|
2378
|
+
}), error: !needPassphrase && error, children: /* @__PURE__ */ jsx9(
|
|
2374
2379
|
Input,
|
|
2375
2380
|
{
|
|
2376
2381
|
value: secret,
|
|
@@ -2378,9 +2383,9 @@ function CEXBindModal({
|
|
|
2378
2383
|
placeholder: "**** **** ****"
|
|
2379
2384
|
}
|
|
2380
2385
|
) }),
|
|
2381
|
-
needPassphrase && /* @__PURE__ */
|
|
2386
|
+
needPassphrase && /* @__PURE__ */ jsx9(Field, { error, label: intl.formatMessage({
|
|
2382
2387
|
id: "CEXBindApiPassphrase"
|
|
2383
|
-
}), children: /* @__PURE__ */
|
|
2388
|
+
}), children: /* @__PURE__ */ jsx9(
|
|
2384
2389
|
Input,
|
|
2385
2390
|
{
|
|
2386
2391
|
value: APIPassphrase,
|
|
@@ -2388,7 +2393,7 @@ function CEXBindModal({
|
|
|
2388
2393
|
placeholder: "**** **** ****"
|
|
2389
2394
|
}
|
|
2390
2395
|
) }),
|
|
2391
|
-
/* @__PURE__ */
|
|
2396
|
+
/* @__PURE__ */ jsx9(
|
|
2392
2397
|
Button,
|
|
2393
2398
|
{
|
|
2394
2399
|
onClick: SubmitApi,
|
|
@@ -2396,14 +2401,14 @@ function CEXBindModal({
|
|
|
2396
2401
|
block: true,
|
|
2397
2402
|
loading,
|
|
2398
2403
|
disabled: !key || !secret,
|
|
2399
|
-
children: /* @__PURE__ */
|
|
2404
|
+
children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "continue" })
|
|
2400
2405
|
}
|
|
2401
2406
|
)
|
|
2402
2407
|
] }) });
|
|
2403
2408
|
}
|
|
2404
2409
|
|
|
2405
2410
|
// src/context/BusinessProvider.tsx
|
|
2406
|
-
import { Fragment, jsx as
|
|
2411
|
+
import { Fragment, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2407
2412
|
function BusinessProvider({ children }) {
|
|
2408
2413
|
const { overview, token } = useUserInfo();
|
|
2409
2414
|
const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
|
|
@@ -2416,8 +2421,8 @@ function BusinessProvider({ children }) {
|
|
|
2416
2421
|
WalletModalStore.close();
|
|
2417
2422
|
func();
|
|
2418
2423
|
};
|
|
2419
|
-
return /* @__PURE__ */
|
|
2420
|
-
/* @__PURE__ */
|
|
2424
|
+
return /* @__PURE__ */ jsxs8(Fragment, { children: [
|
|
2425
|
+
/* @__PURE__ */ jsx10(
|
|
2421
2426
|
SOLModal,
|
|
2422
2427
|
{
|
|
2423
2428
|
isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
|
|
@@ -2427,7 +2432,7 @@ function BusinessProvider({ children }) {
|
|
|
2427
2432
|
zIndex: 199
|
|
2428
2433
|
}
|
|
2429
2434
|
),
|
|
2430
|
-
/* @__PURE__ */
|
|
2435
|
+
/* @__PURE__ */ jsx10(
|
|
2431
2436
|
TRONModal,
|
|
2432
2437
|
{
|
|
2433
2438
|
isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
|
|
@@ -2437,7 +2442,7 @@ function BusinessProvider({ children }) {
|
|
|
2437
2442
|
zIndex: 199
|
|
2438
2443
|
}
|
|
2439
2444
|
),
|
|
2440
|
-
/* @__PURE__ */
|
|
2445
|
+
/* @__PURE__ */ jsx10(
|
|
2441
2446
|
TONModal,
|
|
2442
2447
|
{
|
|
2443
2448
|
isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
|
|
@@ -2447,7 +2452,7 @@ function BusinessProvider({ children }) {
|
|
|
2447
2452
|
zIndex: 199
|
|
2448
2453
|
}
|
|
2449
2454
|
),
|
|
2450
|
-
/* @__PURE__ */
|
|
2455
|
+
/* @__PURE__ */ jsx10(
|
|
2451
2456
|
BTCModal,
|
|
2452
2457
|
{
|
|
2453
2458
|
isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
|
|
@@ -2457,7 +2462,7 @@ function BusinessProvider({ children }) {
|
|
|
2457
2462
|
zIndex: 199
|
|
2458
2463
|
}
|
|
2459
2464
|
),
|
|
2460
|
-
/* @__PURE__ */
|
|
2465
|
+
/* @__PURE__ */ jsx10(
|
|
2461
2466
|
CEXBindModal,
|
|
2462
2467
|
{
|
|
2463
2468
|
isOpen: CEXIsOpen && (!!token && !!overview),
|
|
@@ -2466,7 +2471,7 @@ function BusinessProvider({ children }) {
|
|
|
2466
2471
|
zIndex: 199
|
|
2467
2472
|
}
|
|
2468
2473
|
),
|
|
2469
|
-
/* @__PURE__ */
|
|
2474
|
+
/* @__PURE__ */ jsx10(
|
|
2470
2475
|
WalletModal,
|
|
2471
2476
|
{
|
|
2472
2477
|
isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
|
|
@@ -2481,14 +2486,14 @@ function BusinessProvider({ children }) {
|
|
|
2481
2486
|
}
|
|
2482
2487
|
|
|
2483
2488
|
// src/context/index.tsx
|
|
2484
|
-
import { jsx as
|
|
2489
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
2485
2490
|
var Providers = ({ children }) => {
|
|
2486
|
-
return /* @__PURE__ */
|
|
2491
|
+
return /* @__PURE__ */ jsx11(ToastProvider, { children: /* @__PURE__ */ jsx11(ModalProvider, { children: /* @__PURE__ */ jsx11(BusinessProvider, { children }) }) });
|
|
2487
2492
|
};
|
|
2488
2493
|
var context_default = Providers;
|
|
2489
2494
|
|
|
2490
2495
|
// src/hooks/useWalletInit.ts
|
|
2491
|
-
import { useEffect as
|
|
2496
|
+
import { useEffect as useEffect11, useRef as useRef2 } from "react";
|
|
2492
2497
|
|
|
2493
2498
|
// src/utils/wallet.ts
|
|
2494
2499
|
var sendMessage = ({ method, data, resolve, reject, timeout }) => {
|
|
@@ -2522,10 +2527,10 @@ function useWalletInit({
|
|
|
2522
2527
|
const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
|
|
2523
2528
|
const { setWalletReady, walletReady } = useStore_default();
|
|
2524
2529
|
const iframeReadyRef = useRef2(walletReady);
|
|
2525
|
-
|
|
2530
|
+
useEffect11(() => {
|
|
2526
2531
|
setWallet(config);
|
|
2527
2532
|
}, [config]);
|
|
2528
|
-
|
|
2533
|
+
useEffect11(() => {
|
|
2529
2534
|
matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
|
|
2530
2535
|
iframeReadyRef.current = walletReady;
|
|
2531
2536
|
if (iframeReadyRef.current) {
|
|
@@ -2542,7 +2547,7 @@ function useWalletInit({
|
|
|
2542
2547
|
onReady();
|
|
2543
2548
|
}
|
|
2544
2549
|
}, [walletReady]);
|
|
2545
|
-
|
|
2550
|
+
useEffect11(() => {
|
|
2546
2551
|
if (!endpoints.auth || !appid || !token || !config) {
|
|
2547
2552
|
const existingIframe = getWalletIframe();
|
|
2548
2553
|
if (existingIframe) {
|
|
@@ -2642,7 +2647,7 @@ function useWalletInit({
|
|
|
2642
2647
|
}
|
|
2643
2648
|
}
|
|
2644
2649
|
}, [endpoints.auth, appid, token, config]);
|
|
2645
|
-
|
|
2650
|
+
useEffect11(() => {
|
|
2646
2651
|
const messageHandle = async (e) => {
|
|
2647
2652
|
if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
|
|
2648
2653
|
return;
|
|
@@ -2723,7 +2728,7 @@ function useWalletInit({
|
|
|
2723
2728
|
}
|
|
2724
2729
|
|
|
2725
2730
|
// src/hooks/useInit.tsx
|
|
2726
|
-
import { useEffect as
|
|
2731
|
+
import { useEffect as useEffect12, useRef as useRef3 } from "react";
|
|
2727
2732
|
function useInit({
|
|
2728
2733
|
theme,
|
|
2729
2734
|
appid,
|
|
@@ -2747,19 +2752,19 @@ function useInit({
|
|
|
2747
2752
|
const searchParams = new URLSearchParams(window.location.search);
|
|
2748
2753
|
const matchToken = searchParams.get("matchToken");
|
|
2749
2754
|
const realEndpoints = endpoints || env_default.endpoints;
|
|
2750
|
-
|
|
2755
|
+
useEffect12(() => {
|
|
2751
2756
|
setTheme(theme);
|
|
2752
2757
|
}, [theme]);
|
|
2753
|
-
|
|
2758
|
+
useEffect12(() => {
|
|
2754
2759
|
setAppid(appid);
|
|
2755
2760
|
}, [appid]);
|
|
2756
|
-
|
|
2761
|
+
useEffect12(() => {
|
|
2757
2762
|
setEndpoints(realEndpoints);
|
|
2758
2763
|
}, [realEndpoints]);
|
|
2759
|
-
|
|
2764
|
+
useEffect12(() => {
|
|
2760
2765
|
setLocale(locale || "en");
|
|
2761
2766
|
}, [locale]);
|
|
2762
|
-
|
|
2767
|
+
useEffect12(() => {
|
|
2763
2768
|
if (matchToken) {
|
|
2764
2769
|
const tokenData = JSON.parse(atob(matchToken));
|
|
2765
2770
|
if (tokenData && tokenData.mid && tokenData.token) {
|
|
@@ -2770,7 +2775,7 @@ function useInit({
|
|
|
2770
2775
|
}
|
|
2771
2776
|
}
|
|
2772
2777
|
}, [matchToken]);
|
|
2773
|
-
|
|
2778
|
+
useEffect12(() => {
|
|
2774
2779
|
const onLoginMessage = (event) => {
|
|
2775
2780
|
const res = event.data;
|
|
2776
2781
|
if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
|
|
@@ -2807,7 +2812,7 @@ function useInit({
|
|
|
2807
2812
|
overviewLoadingRef.current = false;
|
|
2808
2813
|
}
|
|
2809
2814
|
};
|
|
2810
|
-
|
|
2815
|
+
useEffect12(() => {
|
|
2811
2816
|
if (token) {
|
|
2812
2817
|
loadOverview();
|
|
2813
2818
|
}
|
|
@@ -2904,7 +2909,6 @@ var en_default = {
|
|
|
2904
2909
|
copied: "Copied",
|
|
2905
2910
|
receiveQrcode: "Receive by scanning the QR code",
|
|
2906
2911
|
copyAddress: "Copy Address",
|
|
2907
|
-
importSuccess: "Imported successfully",
|
|
2908
2912
|
tokenSmartContract: "Token Smart Contract",
|
|
2909
2913
|
tokenSmartContractPlaceholder: "Enter the Token Smart Contract.",
|
|
2910
2914
|
tokenSymbol: "Token Symbol",
|
|
@@ -2913,7 +2917,13 @@ var en_default = {
|
|
|
2913
2917
|
tokenDecimalsPlaceholder: "Enter the Decimals.",
|
|
2914
2918
|
import: "Import",
|
|
2915
2919
|
receive: "Receive",
|
|
2916
|
-
customizedToken: "Customized Token"
|
|
2920
|
+
customizedToken: "Customized Token",
|
|
2921
|
+
noMoreRecords: "There is no more Records here!",
|
|
2922
|
+
noRecords: "No Records here!",
|
|
2923
|
+
close: "Close",
|
|
2924
|
+
back: "Back",
|
|
2925
|
+
importSuccess: "Import Token Successfully",
|
|
2926
|
+
importFail: "Failed to import Token"
|
|
2917
2927
|
};
|
|
2918
2928
|
|
|
2919
2929
|
// src/i18n/zh.json
|
|
@@ -2979,7 +2989,6 @@ var zh_default = {
|
|
|
2979
2989
|
copied: "\u5DF2\u590D\u5236",
|
|
2980
2990
|
receiveQrcode: "\u626B\u63CF QR \u7801\u63A5\u6536",
|
|
2981
2991
|
copyAddress: "\u590D\u5236\u5730\u5740",
|
|
2982
|
-
importSuccess: "\u5BFC\u5165\u6210\u529F",
|
|
2983
2992
|
tokenSmartContract: "\u4EE3\u5E01\u667A\u80FD\u5408\u7EA6",
|
|
2984
2993
|
tokenSmartContractPlaceholder: "\u8BF7\u8F93\u5165\u4EE3\u5E01\u667A\u80FD\u5408\u7EA6\u3002",
|
|
2985
2994
|
tokenSymbol: "\u4EE3\u5E01\u7B26\u53F7",
|
|
@@ -2988,7 +2997,13 @@ var zh_default = {
|
|
|
2988
2997
|
tokenDecimalsPlaceholder: "\u8BF7\u8F93\u5165\u5C0F\u6570\u4F4D\u6570\u3002",
|
|
2989
2998
|
import: "\u5BFC\u5165",
|
|
2990
2999
|
receive: "\u63A5\u6536",
|
|
2991
|
-
customizedToken: "\u81EA\u5B9A\u4E49\u4EE3\u5E01"
|
|
3000
|
+
customizedToken: "\u81EA\u5B9A\u4E49\u4EE3\u5E01",
|
|
3001
|
+
noMoreRecords: "\u6CA1\u6709\u66F4\u591A\u4EA4\u6613\u8BB0\u5F55\u4E86\uFF01",
|
|
3002
|
+
noRecords: "\u6682\u65E0\u4EA4\u6613\u8BB0\u5F55\uFF01",
|
|
3003
|
+
close: "\u5173\u95ED",
|
|
3004
|
+
back: "\u8FD4\u56DE",
|
|
3005
|
+
importSuccess: "\u6210\u529F\u5BFC\u5165\u4EE3\u5E01",
|
|
3006
|
+
importFail: "\u5BFC\u5165\u4EE3\u5E01\u5931\u8D25"
|
|
2992
3007
|
};
|
|
2993
3008
|
|
|
2994
3009
|
// src/i18n/tw.json
|
|
@@ -3054,7 +3069,6 @@ var tw_default = {
|
|
|
3054
3069
|
copied: "\u5DF2\u8907\u88FD",
|
|
3055
3070
|
receiveQrcode: "\u6383\u63CF QR \u78BC\u63A5\u6536",
|
|
3056
3071
|
copyAddress: "\u8907\u88FD\u5730\u5740",
|
|
3057
|
-
importSuccess: "\u5C0E\u5165\u6210\u529F",
|
|
3058
3072
|
tokenSmartContract: "\u4EE3\u5E63\u667A\u80FD\u5408\u7D04",
|
|
3059
3073
|
tokenSmartContractPlaceholder: "\u8ACB\u8F38\u5165\u4EE3\u5E63\u667A\u80FD\u5408\u7D04\u3002",
|
|
3060
3074
|
tokenSymbol: "\u4EE3\u5E63\u7B26\u865F",
|
|
@@ -3063,7 +3077,13 @@ var tw_default = {
|
|
|
3063
3077
|
tokenDecimalsPlaceholder: "\u8ACB\u8F38\u5165\u5C0F\u6578\u4F4D\u6578\u3002",
|
|
3064
3078
|
import: "\u5C0E\u5165",
|
|
3065
3079
|
receive: "\u63A5\u6536",
|
|
3066
|
-
customizedToken: "\u81EA\u5B9A\u7FA9\u4EE3\u5E63"
|
|
3080
|
+
customizedToken: "\u81EA\u5B9A\u7FA9\u4EE3\u5E63",
|
|
3081
|
+
noMoreRecords: "\u6C92\u6709\u66F4\u591A\u4EA4\u6613\u8A18\u9304\u4E86\uFF01",
|
|
3082
|
+
noRecords: "\u66AB\u7121\u4EA4\u6613\u8A18\u9304\uFF01",
|
|
3083
|
+
close: "\u95DC\u9589",
|
|
3084
|
+
back: "\u8FD4\u56DE",
|
|
3085
|
+
importSuccess: "\u6210\u529F\u532F\u5165\u4EE3\u5E63",
|
|
3086
|
+
importFail: "\u532F\u5165\u4EE3\u5E63\u5931\u6557"
|
|
3067
3087
|
};
|
|
3068
3088
|
|
|
3069
3089
|
// src/i18n/fr.json
|
|
@@ -3129,7 +3149,6 @@ var fr_default = {
|
|
|
3129
3149
|
copied: "Copi\xE9",
|
|
3130
3150
|
receiveQrcode: "Recevoir en scannant le code QR",
|
|
3131
3151
|
copyAddress: "Copier l'adresse",
|
|
3132
|
-
importSuccess: "Import\xE9 avec succ\xE8s",
|
|
3133
3152
|
tokenSmartContract: "Contrat intelligent du Token",
|
|
3134
3153
|
tokenSmartContractPlaceholder: "Entrez le contrat intelligent du Token.",
|
|
3135
3154
|
tokenSymbol: "Symbole du Token",
|
|
@@ -3138,7 +3157,13 @@ var fr_default = {
|
|
|
3138
3157
|
tokenDecimalsPlaceholder: "Entrez les d\xE9cimales.",
|
|
3139
3158
|
import: "Importer",
|
|
3140
3159
|
receive: "Recevoir",
|
|
3141
|
-
customizedToken: "Token personnalis\xE9"
|
|
3160
|
+
customizedToken: "Token personnalis\xE9",
|
|
3161
|
+
noMoreRecords: "Il n'y a plus d'enregistrements ici !",
|
|
3162
|
+
noRecords: "Il n'y a aucun enregistrement ici !",
|
|
3163
|
+
close: "Fermer",
|
|
3164
|
+
back: "Retour",
|
|
3165
|
+
importSuccess: "Importation du jeton r\xE9ussie",
|
|
3166
|
+
importFail: "\xC9chec de l'importation du jeton"
|
|
3142
3167
|
};
|
|
3143
3168
|
|
|
3144
3169
|
// src/i18n/ja.json
|
|
@@ -3204,7 +3229,6 @@ var ja_default = {
|
|
|
3204
3229
|
copied: "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
|
|
3205
3230
|
receiveQrcode: "QR\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u53D7\u3051\u53D6\u308B",
|
|
3206
3231
|
copyAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u30B3\u30D4\u30FC",
|
|
3207
|
-
importSuccess: "\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u6210\u529F\u3057\u307E\u3057\u305F",
|
|
3208
3232
|
tokenSmartContract: "\u30C8\u30FC\u30AF\u30F3\u306E\u30B9\u30DE\u30FC\u30C8\u30B3\u30F3\u30C8\u30E9\u30AF\u30C8",
|
|
3209
3233
|
tokenSmartContractPlaceholder: "\u30C8\u30FC\u30AF\u30F3\u306E\u30B9\u30DE\u30FC\u30C8\u30B3\u30F3\u30C8\u30E9\u30AF\u30C8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
3210
3234
|
tokenSymbol: "\u30C8\u30FC\u30AF\u30F3\u30B7\u30F3\u30DC\u30EB",
|
|
@@ -3213,7 +3237,13 @@ var ja_default = {
|
|
|
3213
3237
|
tokenDecimalsPlaceholder: "\u5C0F\u6570\u70B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
3214
3238
|
import: "\u30A4\u30F3\u30DD\u30FC\u30C8",
|
|
3215
3239
|
receive: "\u53D7\u3051\u53D6\u308B",
|
|
3216
|
-
customizedToken: "\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30C8\u30FC\u30AF\u30F3"
|
|
3240
|
+
customizedToken: "\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30C8\u30FC\u30AF\u30F3",
|
|
3241
|
+
noMoreRecords: "\u3053\u308C\u4EE5\u4E0A\u306E\u8A18\u9332\u306F\u3042\u308A\u307E\u305B\u3093\uFF01",
|
|
3242
|
+
noRecords: "\u8A18\u9332\u304C\u3042\u308A\u307E\u305B\u3093\uFF01",
|
|
3243
|
+
close: "\u9589\u3058\u308B",
|
|
3244
|
+
back: "\u623B\u308B",
|
|
3245
|
+
importSuccess: "\u30C8\u30FC\u30AF\u30F3\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u6210\u529F\u3057\u307E\u3057\u305F",
|
|
3246
|
+
importFail: "\u30C8\u30FC\u30AF\u30F3\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F"
|
|
3217
3247
|
};
|
|
3218
3248
|
|
|
3219
3249
|
// src/i18n/ko.json
|
|
@@ -3279,7 +3309,6 @@ var ko_default = {
|
|
|
3279
3309
|
copied: "\uBCF5\uC0AC\uB428",
|
|
3280
3310
|
receiveQrcode: "QR \uCF54\uB4DC\uB97C \uC2A4\uCE94\uD558\uC5EC \uBC1B\uAE30",
|
|
3281
3311
|
copyAddress: "\uC8FC\uC18C \uBCF5\uC0AC",
|
|
3282
|
-
importSuccess: "\uC131\uACF5\uC801\uC73C\uB85C \uAC00\uC838\uC654\uC2B5\uB2C8\uB2E4.",
|
|
3283
3312
|
tokenSmartContract: "\uD1A0\uD070 \uC2A4\uB9C8\uD2B8 \uCEE8\uD2B8\uB799\uD2B8",
|
|
3284
3313
|
tokenSmartContractPlaceholder: "\uD1A0\uD070 \uC2A4\uB9C8\uD2B8 \uCEE8\uD2B8\uB799\uD2B8\uB97C \uC785\uB825\uD558\uC138\uC694.",
|
|
3285
3314
|
tokenSymbol: "\uD1A0\uD070 \uC2EC\uBCFC",
|
|
@@ -3288,7 +3317,13 @@ var ko_default = {
|
|
|
3288
3317
|
tokenDecimalsPlaceholder: "\uC18C\uC218\uC810 \uC790\uB9AC\uC218\uB97C \uC785\uB825\uD558\uC138\uC694.",
|
|
3289
3318
|
import: "\uAC00\uC838\uC624\uAE30",
|
|
3290
3319
|
receive: "\uBC1B\uAE30",
|
|
3291
|
-
customizedToken: "\uB9DE\uCDA4\uD615 \uD1A0\uD070"
|
|
3320
|
+
customizedToken: "\uB9DE\uCDA4\uD615 \uD1A0\uD070",
|
|
3321
|
+
noMoreRecords: "\uC5EC\uAE30\uC5D0 \uB354 \uC774\uC0C1 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4!",
|
|
3322
|
+
noRecords: "\uC5EC\uAE30\uC5D0 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4!",
|
|
3323
|
+
close: "\uB2EB\uAE30",
|
|
3324
|
+
back: "\uB4A4\uB85C",
|
|
3325
|
+
importSuccess: "\uD1A0\uD070\uC744 \uC131\uACF5\uC801\uC73C\uB85C \uAC00\uC838\uC654\uC2B5\uB2C8\uB2E4",
|
|
3326
|
+
importFail: "\uD1A0\uD070 \uAC00\uC838\uC624\uAE30\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4"
|
|
3292
3327
|
};
|
|
3293
3328
|
|
|
3294
3329
|
// src/i18n/vi.json
|
|
@@ -3354,7 +3389,6 @@ var vi_default = {
|
|
|
3354
3389
|
copied: "\u0110\xE3 sao ch\xE9p",
|
|
3355
3390
|
receiveQrcode: "Nh\u1EADn b\u1EB1ng c\xE1ch qu\xE9t m\xE3 QR",
|
|
3356
3391
|
copyAddress: "Sao ch\xE9p \u0111\u1ECBa ch\u1EC9",
|
|
3357
|
-
importSuccess: "Nh\u1EADp th\xE0nh c\xF4ng",
|
|
3358
3392
|
tokenSmartContract: "H\u1EE3p \u0111\u1ED3ng th\xF4ng minh Token",
|
|
3359
3393
|
tokenSmartContractPlaceholder: "Nh\u1EADp h\u1EE3p \u0111\u1ED3ng th\xF4ng minh Token.",
|
|
3360
3394
|
tokenSymbol: "K\xFD hi\u1EC7u Token",
|
|
@@ -3363,7 +3397,13 @@ var vi_default = {
|
|
|
3363
3397
|
tokenDecimalsPlaceholder: "Nh\u1EADp s\u1ED1 th\u1EADp ph\xE2n.",
|
|
3364
3398
|
import: "Nh\u1EADp",
|
|
3365
3399
|
receive: "Nh\u1EADn",
|
|
3366
|
-
customizedToken: "Token t\xF9y ch\u1EC9nh"
|
|
3400
|
+
customizedToken: "Token t\xF9y ch\u1EC9nh",
|
|
3401
|
+
noMoreRecords: "Kh\xF4ng c\xF2n b\u1EA3n ghi n\xE0o \u1EDF \u0111\xE2y!",
|
|
3402
|
+
noRecords: "Kh\xF4ng c\xF3 b\u1EA3n ghi n\xE0o \u1EDF \u0111\xE2y!",
|
|
3403
|
+
close: "\u0110\xF3ng",
|
|
3404
|
+
back: "Quay l\u1EA1i",
|
|
3405
|
+
importSuccess: "Nh\u1EADp Token th\xE0nh c\xF4ng",
|
|
3406
|
+
importFail: "Kh\xF4ng th\u1EC3 nh\u1EADp Token"
|
|
3367
3407
|
};
|
|
3368
3408
|
|
|
3369
3409
|
// src/i18n/es.json
|
|
@@ -3429,7 +3469,6 @@ var es_default = {
|
|
|
3429
3469
|
copied: "Copiado",
|
|
3430
3470
|
receiveQrcode: "Recibir escaneando el c\xF3digo QR",
|
|
3431
3471
|
copyAddress: "Copiar direcci\xF3n",
|
|
3432
|
-
importSuccess: "Importado con \xE9xito",
|
|
3433
3472
|
tokenSmartContract: "Contrato inteligente del Token",
|
|
3434
3473
|
tokenSmartContractPlaceholder: "Ingrese el contrato inteligente del Token.",
|
|
3435
3474
|
tokenSymbol: "S\xEDmbolo del Token",
|
|
@@ -3438,7 +3477,13 @@ var es_default = {
|
|
|
3438
3477
|
tokenDecimalsPlaceholder: "Ingrese los decimales.",
|
|
3439
3478
|
import: "Importar",
|
|
3440
3479
|
receive: "Recibir",
|
|
3441
|
-
customizedToken: "Token personalizado"
|
|
3480
|
+
customizedToken: "Token personalizado",
|
|
3481
|
+
noMoreRecords: "\xA1No hay m\xE1s registros aqu\xED!",
|
|
3482
|
+
noRecords: "\xA1No hay registros aqu\xED!",
|
|
3483
|
+
close: "Cerrar",
|
|
3484
|
+
back: "Atr\xE1s",
|
|
3485
|
+
importSuccess: "Token importado con \xE9xito",
|
|
3486
|
+
importFail: "Error al importar el token"
|
|
3442
3487
|
};
|
|
3443
3488
|
|
|
3444
3489
|
// src/i18n/pt.json
|
|
@@ -3504,7 +3549,6 @@ var pt_default = {
|
|
|
3504
3549
|
copied: "Copiado",
|
|
3505
3550
|
receiveQrcode: "Receber escaneando o c\xF3digo QR",
|
|
3506
3551
|
copyAddress: "Copiar endere\xE7o",
|
|
3507
|
-
importSuccess: "Importado com sucesso",
|
|
3508
3552
|
tokenSmartContract: "Contrato inteligente do Token",
|
|
3509
3553
|
tokenSmartContractPlaceholder: "Digite o contrato inteligente do Token.",
|
|
3510
3554
|
tokenSymbol: "S\xEDmbolo do Token",
|
|
@@ -3513,7 +3557,13 @@ var pt_default = {
|
|
|
3513
3557
|
tokenDecimalsPlaceholder: "Digite os decimais.",
|
|
3514
3558
|
import: "Importar",
|
|
3515
3559
|
receive: "Receber",
|
|
3516
|
-
customizedToken: "Token personalizado"
|
|
3560
|
+
customizedToken: "Token personalizado",
|
|
3561
|
+
noMoreRecords: "N\xE3o h\xE1 mais registros aqui!",
|
|
3562
|
+
noRecords: "N\xE3o h\xE1 registros aqui!",
|
|
3563
|
+
close: "Fechar",
|
|
3564
|
+
back: "Voltar",
|
|
3565
|
+
importSuccess: "Token importado com sucesso",
|
|
3566
|
+
importFail: "Falha ao importar o token"
|
|
3517
3567
|
};
|
|
3518
3568
|
|
|
3519
3569
|
// src/i18n/index.ts
|
|
@@ -3530,7 +3580,7 @@ var messages = {
|
|
|
3530
3580
|
};
|
|
3531
3581
|
|
|
3532
3582
|
// src/MatchContext.tsx
|
|
3533
|
-
import { jsx as
|
|
3583
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
3534
3584
|
var queryClient = new QueryClient();
|
|
3535
3585
|
var MatchContext = createContext3(void 0);
|
|
3536
3586
|
var MatchProvider = ({
|
|
@@ -3552,7 +3602,7 @@ var MatchProvider = ({
|
|
|
3552
3602
|
useWalletInit({
|
|
3553
3603
|
config: wallet
|
|
3554
3604
|
});
|
|
3555
|
-
return /* @__PURE__ */
|
|
3605
|
+
return /* @__PURE__ */ jsx12(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx12(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx12(
|
|
3556
3606
|
MatchContext.Provider,
|
|
3557
3607
|
{
|
|
3558
3608
|
value: {
|
|
@@ -3563,7 +3613,7 @@ var MatchProvider = ({
|
|
|
3563
3613
|
theme,
|
|
3564
3614
|
locale: realLocale
|
|
3565
3615
|
},
|
|
3566
|
-
children: /* @__PURE__ */
|
|
3616
|
+
children: /* @__PURE__ */ jsx12(context_default, { children })
|
|
3567
3617
|
}
|
|
3568
3618
|
) }) });
|
|
3569
3619
|
};
|
|
@@ -3597,7 +3647,7 @@ function useUserInfo() {
|
|
|
3597
3647
|
const { open: BTCOpen } = useBTCModalStore();
|
|
3598
3648
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
3599
3649
|
const walletModalStore = useWalletModalStore();
|
|
3600
|
-
const isLogin =
|
|
3650
|
+
const isLogin = useMemo7(() => !!token && !!overview, [token, overview]);
|
|
3601
3651
|
const logout = async () => {
|
|
3602
3652
|
try {
|
|
3603
3653
|
await toLogoutApi();
|
|
@@ -3829,18 +3879,18 @@ function useUserInfo() {
|
|
|
3829
3879
|
}
|
|
3830
3880
|
|
|
3831
3881
|
// src/components/EmailModal/StepVerify.tsx
|
|
3832
|
-
import { useEffect as
|
|
3833
|
-
import { FormattedMessage as
|
|
3834
|
-
import { jsx as
|
|
3882
|
+
import { useEffect as useEffect14, useMemo as useMemo8, useRef as useRef4, useState as useState13 } from "react";
|
|
3883
|
+
import { FormattedMessage as FormattedMessage5, useIntl as useIntl5 } from "react-intl";
|
|
3884
|
+
import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3835
3885
|
function StepVerify(props) {
|
|
3836
|
-
const intl =
|
|
3886
|
+
const intl = useIntl5();
|
|
3837
3887
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
3838
|
-
const [error, setError] =
|
|
3839
|
-
const [code, setCode] =
|
|
3840
|
-
const [sending, setSending] =
|
|
3841
|
-
const [submitting, setSubmitting] =
|
|
3888
|
+
const [error, setError] = useState13("");
|
|
3889
|
+
const [code, setCode] = useState13("");
|
|
3890
|
+
const [sending, setSending] = useState13(false);
|
|
3891
|
+
const [submitting, setSubmitting] = useState13(false);
|
|
3842
3892
|
const sendTimeRef = useRef4(0);
|
|
3843
|
-
const [sendBtnText, setSendBtnText] =
|
|
3893
|
+
const [sendBtnText, setSendBtnText] = useState13(intl.formatMessage({
|
|
3844
3894
|
id: "send"
|
|
3845
3895
|
}));
|
|
3846
3896
|
const intervalTime = EMAIL_INTERVAL;
|
|
@@ -3876,7 +3926,7 @@ function StepVerify(props) {
|
|
|
3876
3926
|
setSending(false);
|
|
3877
3927
|
}
|
|
3878
3928
|
};
|
|
3879
|
-
|
|
3929
|
+
useEffect14(() => {
|
|
3880
3930
|
onSend();
|
|
3881
3931
|
return () => {
|
|
3882
3932
|
if (intervalRef.current) {
|
|
@@ -3884,7 +3934,7 @@ function StepVerify(props) {
|
|
|
3884
3934
|
}
|
|
3885
3935
|
};
|
|
3886
3936
|
}, []);
|
|
3887
|
-
const canContinue =
|
|
3937
|
+
const canContinue = useMemo8(() => {
|
|
3888
3938
|
return code.length === codeLength;
|
|
3889
3939
|
}, [code]);
|
|
3890
3940
|
const onContinue = async () => {
|
|
@@ -3908,17 +3958,17 @@ function StepVerify(props) {
|
|
|
3908
3958
|
setSubmitting(false);
|
|
3909
3959
|
}
|
|
3910
3960
|
};
|
|
3911
|
-
return /* @__PURE__ */
|
|
3912
|
-
/* @__PURE__ */
|
|
3913
|
-
/* @__PURE__ */
|
|
3914
|
-
/* @__PURE__ */
|
|
3915
|
-
/* @__PURE__ */
|
|
3916
|
-
/* @__PURE__ */
|
|
3961
|
+
return /* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-box", children: [
|
|
3962
|
+
/* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-header", children: [
|
|
3963
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx13(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
3964
|
+
/* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-header-content", children: [
|
|
3965
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
3966
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx13(FormattedMessage5, { id: "sendEmailTips" }) })
|
|
3917
3967
|
] })
|
|
3918
3968
|
] }),
|
|
3919
|
-
/* @__PURE__ */
|
|
3969
|
+
/* @__PURE__ */ jsx13(Field, { label: intl.formatMessage({
|
|
3920
3970
|
id: "verificationCode"
|
|
3921
|
-
}), error, children: /* @__PURE__ */
|
|
3971
|
+
}), error, children: /* @__PURE__ */ jsx13(
|
|
3922
3972
|
Input,
|
|
3923
3973
|
{
|
|
3924
3974
|
placeholder: intl.formatMessage({
|
|
@@ -3928,7 +3978,7 @@ function StepVerify(props) {
|
|
|
3928
3978
|
maxLength: codeLength,
|
|
3929
3979
|
onChange: (e) => setCode(e.target.value),
|
|
3930
3980
|
value: code,
|
|
3931
|
-
after: /* @__PURE__ */
|
|
3981
|
+
after: /* @__PURE__ */ jsx13(
|
|
3932
3982
|
Button,
|
|
3933
3983
|
{
|
|
3934
3984
|
highlight: true,
|
|
@@ -3947,13 +3997,13 @@ function StepVerify(props) {
|
|
|
3947
3997
|
)
|
|
3948
3998
|
}
|
|
3949
3999
|
) }),
|
|
3950
|
-
/* @__PURE__ */
|
|
4000
|
+
/* @__PURE__ */ jsx13(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx13(FormattedMessage5, { id: "continue" }) })
|
|
3951
4001
|
] });
|
|
3952
4002
|
}
|
|
3953
4003
|
|
|
3954
4004
|
// src/components/EmailModal/index.tsx
|
|
3955
|
-
import { useIntl as
|
|
3956
|
-
import { jsx as
|
|
4005
|
+
import { useIntl as useIntl6 } from "react-intl";
|
|
4006
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
3957
4007
|
function EmailModal({
|
|
3958
4008
|
isOpen = false,
|
|
3959
4009
|
width = 480,
|
|
@@ -3961,16 +4011,16 @@ function EmailModal({
|
|
|
3961
4011
|
onBack,
|
|
3962
4012
|
onLogin
|
|
3963
4013
|
}) {
|
|
3964
|
-
const [step, setStep] =
|
|
3965
|
-
const [emailVal, setEmailVal] =
|
|
3966
|
-
const intl =
|
|
3967
|
-
|
|
4014
|
+
const [step, setStep] = useState14("input");
|
|
4015
|
+
const [emailVal, setEmailVal] = useState14("");
|
|
4016
|
+
const intl = useIntl6();
|
|
4017
|
+
useEffect15(() => {
|
|
3968
4018
|
if (!isOpen) {
|
|
3969
4019
|
setStep("input");
|
|
3970
4020
|
setEmailVal("");
|
|
3971
4021
|
}
|
|
3972
4022
|
}, [isOpen]);
|
|
3973
|
-
return /* @__PURE__ */
|
|
4023
|
+
return /* @__PURE__ */ jsx14(
|
|
3974
4024
|
ModalWithHeader,
|
|
3975
4025
|
{
|
|
3976
4026
|
isOpen,
|
|
@@ -3980,17 +4030,17 @@ function EmailModal({
|
|
|
3980
4030
|
id: "email"
|
|
3981
4031
|
}),
|
|
3982
4032
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
3983
|
-
children: step === "input" ? /* @__PURE__ */
|
|
4033
|
+
children: step === "input" ? /* @__PURE__ */ jsx14(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
3984
4034
|
setEmailVal(email);
|
|
3985
4035
|
setStep("verify");
|
|
3986
|
-
} }) : /* @__PURE__ */
|
|
4036
|
+
} }) : /* @__PURE__ */ jsx14(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
3987
4037
|
}
|
|
3988
4038
|
);
|
|
3989
4039
|
}
|
|
3990
4040
|
|
|
3991
4041
|
// src/components/LoginBox/index.tsx
|
|
3992
|
-
import { useMemo as
|
|
3993
|
-
import { FormattedMessage as
|
|
4042
|
+
import { useMemo as useMemo9, useState as useState15 } from "react";
|
|
4043
|
+
import { FormattedMessage as FormattedMessage6, useIntl as useIntl7 } from "react-intl";
|
|
3994
4044
|
|
|
3995
4045
|
// src/hooks/useAppConfig.ts
|
|
3996
4046
|
import { useQuery as useQuery5 } from "@tanstack/react-query";
|
|
@@ -4013,7 +4063,7 @@ function useAppConfig() {
|
|
|
4013
4063
|
}
|
|
4014
4064
|
|
|
4015
4065
|
// src/components/LoginBox/index.tsx
|
|
4016
|
-
import { Fragment as Fragment2, jsx as
|
|
4066
|
+
import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
4017
4067
|
var RecommendItem = ({
|
|
4018
4068
|
icon,
|
|
4019
4069
|
name,
|
|
@@ -4022,20 +4072,20 @@ var RecommendItem = ({
|
|
|
4022
4072
|
children,
|
|
4023
4073
|
footer
|
|
4024
4074
|
}) => {
|
|
4025
|
-
return /* @__PURE__ */
|
|
4026
|
-
/* @__PURE__ */
|
|
4027
|
-
/* @__PURE__ */
|
|
4028
|
-
/* @__PURE__ */
|
|
4029
|
-
/* @__PURE__ */
|
|
4075
|
+
return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method", children: [
|
|
4076
|
+
/* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
4077
|
+
/* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method-content", children: [
|
|
4078
|
+
/* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
4079
|
+
/* @__PURE__ */ jsx15("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
4030
4080
|
] }),
|
|
4031
|
-
footer ? footer : children ? /* @__PURE__ */
|
|
4081
|
+
footer ? footer : children ? /* @__PURE__ */ jsx15(
|
|
4032
4082
|
ArrowDownIcon,
|
|
4033
4083
|
{
|
|
4034
4084
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
4035
4085
|
size: 20,
|
|
4036
4086
|
color: "var(--matchid-arrow-color)"
|
|
4037
4087
|
}
|
|
4038
|
-
) : /* @__PURE__ */
|
|
4088
|
+
) : /* @__PURE__ */ jsx15(
|
|
4039
4089
|
ArrowRightIcon,
|
|
4040
4090
|
{
|
|
4041
4091
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -4044,7 +4094,7 @@ var RecommendItem = ({
|
|
|
4044
4094
|
}
|
|
4045
4095
|
)
|
|
4046
4096
|
] }),
|
|
4047
|
-
children && /* @__PURE__ */
|
|
4097
|
+
children && /* @__PURE__ */ jsx15(
|
|
4048
4098
|
"div",
|
|
4049
4099
|
{
|
|
4050
4100
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -4060,7 +4110,7 @@ function LoginBox({
|
|
|
4060
4110
|
inModal = false
|
|
4061
4111
|
}) {
|
|
4062
4112
|
const config = useAppConfig();
|
|
4063
|
-
const methodConfig =
|
|
4113
|
+
const methodConfig = useMemo9(() => {
|
|
4064
4114
|
if (recommendMethods || methods || walletMethods) {
|
|
4065
4115
|
return {
|
|
4066
4116
|
recommendMethods: recommendMethods ? recommendMethods : walletMethods ? ["wallet"] : [],
|
|
@@ -4102,82 +4152,82 @@ function LoginBox({
|
|
|
4102
4152
|
walletMethods: walletMethodList
|
|
4103
4153
|
};
|
|
4104
4154
|
}, [config.platform, recommendMethods, methods, walletMethods]);
|
|
4105
|
-
const [emailOpen, setEmailOpen] =
|
|
4155
|
+
const [emailOpen, setEmailOpen] = useState15(false);
|
|
4106
4156
|
const { login } = useUserInfo();
|
|
4107
|
-
const [showWallet, setShowWallet] =
|
|
4108
|
-
const intl =
|
|
4157
|
+
const [showWallet, setShowWallet] = useState15(false);
|
|
4158
|
+
const intl = useIntl7();
|
|
4109
4159
|
const isDownMd = useDownMd();
|
|
4110
4160
|
const methodMap = {
|
|
4111
4161
|
wallet: {
|
|
4112
|
-
icon: /* @__PURE__ */
|
|
4162
|
+
icon: /* @__PURE__ */ jsx15(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
4113
4163
|
name: intl.formatMessage({ id: "wallet" }),
|
|
4114
4164
|
onClick: () => setShowWallet(!showWallet),
|
|
4115
4165
|
type: "wallet"
|
|
4116
4166
|
},
|
|
4117
4167
|
email: {
|
|
4118
|
-
icon: /* @__PURE__ */
|
|
4168
|
+
icon: /* @__PURE__ */ jsx15(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
4119
4169
|
name: intl.formatMessage({ id: "email" }),
|
|
4120
4170
|
onClick: () => {
|
|
4121
4171
|
setEmailOpen(true);
|
|
4122
4172
|
}
|
|
4123
4173
|
},
|
|
4124
4174
|
google: {
|
|
4125
|
-
icon: /* @__PURE__ */
|
|
4175
|
+
icon: /* @__PURE__ */ jsx15(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
4126
4176
|
name: "Google",
|
|
4127
4177
|
onClick: () => login("google")
|
|
4128
4178
|
},
|
|
4129
4179
|
twitter: {
|
|
4130
|
-
icon: /* @__PURE__ */
|
|
4180
|
+
icon: /* @__PURE__ */ jsx15(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
4131
4181
|
name: "X",
|
|
4132
4182
|
onClick: () => login("twitter")
|
|
4133
4183
|
},
|
|
4134
4184
|
telegram: {
|
|
4135
|
-
icon: /* @__PURE__ */
|
|
4185
|
+
icon: /* @__PURE__ */ jsx15(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
4136
4186
|
name: "Telegram",
|
|
4137
4187
|
onClick: () => login("telegram")
|
|
4138
4188
|
},
|
|
4139
4189
|
github: {
|
|
4140
|
-
icon: /* @__PURE__ */
|
|
4190
|
+
icon: /* @__PURE__ */ jsx15(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
4141
4191
|
name: "Github",
|
|
4142
4192
|
onClick: () => login("github")
|
|
4143
4193
|
},
|
|
4144
4194
|
discord: {
|
|
4145
|
-
icon: /* @__PURE__ */
|
|
4195
|
+
icon: /* @__PURE__ */ jsx15(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
4146
4196
|
name: "Discord",
|
|
4147
4197
|
onClick: () => login("discord")
|
|
4148
4198
|
},
|
|
4149
4199
|
linkedin: {
|
|
4150
|
-
icon: /* @__PURE__ */
|
|
4200
|
+
icon: /* @__PURE__ */ jsx15(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
4151
4201
|
name: "LinkedIn",
|
|
4152
4202
|
onClick: () => login("linkedin")
|
|
4153
4203
|
},
|
|
4154
4204
|
facebook: {
|
|
4155
|
-
icon: /* @__PURE__ */
|
|
4205
|
+
icon: /* @__PURE__ */ jsx15(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
4156
4206
|
name: "Facebook",
|
|
4157
4207
|
onClick: () => login("facebook")
|
|
4158
4208
|
},
|
|
4159
4209
|
youtube: {
|
|
4160
|
-
icon: /* @__PURE__ */
|
|
4210
|
+
icon: /* @__PURE__ */ jsx15(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
4161
4211
|
name: "Youtube",
|
|
4162
4212
|
onClick: () => login("youtube")
|
|
4163
4213
|
}
|
|
4164
4214
|
};
|
|
4165
4215
|
const { walletMap } = useWalletConfig();
|
|
4166
|
-
return /* @__PURE__ */
|
|
4167
|
-
(!inModal || !emailOpen) && /* @__PURE__ */
|
|
4168
|
-
/* @__PURE__ */
|
|
4169
|
-
return /* @__PURE__ */
|
|
4216
|
+
return /* @__PURE__ */ jsxs10(Fragment2, { children: [
|
|
4217
|
+
(!inModal || !emailOpen) && /* @__PURE__ */ jsxs10("div", { className: "matchid-login-box", children: [
|
|
4218
|
+
/* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
|
|
4219
|
+
return /* @__PURE__ */ jsx15(
|
|
4170
4220
|
RecommendItem,
|
|
4171
4221
|
{
|
|
4172
4222
|
icon: methodMap[m]?.icon,
|
|
4173
4223
|
name: methodMap[m]?.name,
|
|
4174
4224
|
onClick: methodMap[m]?.onClick,
|
|
4175
4225
|
showChildren: m == "wallet" && showWallet,
|
|
4176
|
-
children: m == "wallet" && /* @__PURE__ */
|
|
4177
|
-
/* @__PURE__ */
|
|
4178
|
-
/* @__PURE__ */
|
|
4226
|
+
children: m == "wallet" && /* @__PURE__ */ jsxs10(Fragment2, { children: [
|
|
4227
|
+
/* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
4228
|
+
/* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
|
|
4179
4229
|
const m2 = walletMap[n];
|
|
4180
|
-
return /* @__PURE__ */
|
|
4230
|
+
return /* @__PURE__ */ jsxs10(
|
|
4181
4231
|
"div",
|
|
4182
4232
|
{
|
|
4183
4233
|
className: "matchid-login-recommend-wallet-item",
|
|
@@ -4185,16 +4235,16 @@ function LoginBox({
|
|
|
4185
4235
|
login(m2.method);
|
|
4186
4236
|
},
|
|
4187
4237
|
children: [
|
|
4188
|
-
/* @__PURE__ */
|
|
4189
|
-
/* @__PURE__ */
|
|
4190
|
-
/* @__PURE__ */
|
|
4238
|
+
/* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
4239
|
+
/* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
4240
|
+
/* @__PURE__ */ jsx15(
|
|
4191
4241
|
"div",
|
|
4192
4242
|
{
|
|
4193
4243
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
4194
4244
|
children: m2.activeIcon
|
|
4195
4245
|
}
|
|
4196
4246
|
),
|
|
4197
|
-
/* @__PURE__ */
|
|
4247
|
+
/* @__PURE__ */ jsx15(
|
|
4198
4248
|
"span",
|
|
4199
4249
|
{
|
|
4200
4250
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -4202,7 +4252,7 @@ function LoginBox({
|
|
|
4202
4252
|
}
|
|
4203
4253
|
)
|
|
4204
4254
|
] }),
|
|
4205
|
-
/* @__PURE__ */
|
|
4255
|
+
/* @__PURE__ */ jsx15(
|
|
4206
4256
|
ArrowRightIcon,
|
|
4207
4257
|
{
|
|
4208
4258
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -4220,10 +4270,10 @@ function LoginBox({
|
|
|
4220
4270
|
m
|
|
4221
4271
|
);
|
|
4222
4272
|
}) }),
|
|
4223
|
-
methodConfig.methods.length > 0 && /* @__PURE__ */
|
|
4224
|
-
/* @__PURE__ */
|
|
4225
|
-
/* @__PURE__ */
|
|
4226
|
-
return /* @__PURE__ */
|
|
4273
|
+
methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs10("div", { className: "matchid-login-other", children: [
|
|
4274
|
+
/* @__PURE__ */ jsx15("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx15(FormattedMessage6, { id: "otherLoginMethods" }) }),
|
|
4275
|
+
/* @__PURE__ */ jsx15("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
|
|
4276
|
+
return /* @__PURE__ */ jsx15(
|
|
4227
4277
|
"div",
|
|
4228
4278
|
{
|
|
4229
4279
|
className: "matchid-login-method-item",
|
|
@@ -4236,7 +4286,7 @@ function LoginBox({
|
|
|
4236
4286
|
}) })
|
|
4237
4287
|
] })
|
|
4238
4288
|
] }),
|
|
4239
|
-
/* @__PURE__ */
|
|
4289
|
+
/* @__PURE__ */ jsx15(
|
|
4240
4290
|
EmailModal,
|
|
4241
4291
|
{
|
|
4242
4292
|
isOpen: emailOpen,
|
|
@@ -4252,56 +4302,56 @@ function LoginBox({
|
|
|
4252
4302
|
}
|
|
4253
4303
|
|
|
4254
4304
|
// src/components/LoginButton/index.tsx
|
|
4255
|
-
import { useState as
|
|
4305
|
+
import { useState as useState17 } from "react";
|
|
4256
4306
|
|
|
4257
4307
|
// src/components/LoginPanel/index.tsx
|
|
4258
|
-
import { FormattedMessage as
|
|
4259
|
-
import { jsx as
|
|
4308
|
+
import { FormattedMessage as FormattedMessage7 } from "react-intl";
|
|
4309
|
+
import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
4260
4310
|
function LoginPanel({
|
|
4261
4311
|
header,
|
|
4262
4312
|
onClose,
|
|
4263
4313
|
...props
|
|
4264
4314
|
}) {
|
|
4265
4315
|
const isDownMd = useDownMd();
|
|
4266
|
-
return /* @__PURE__ */
|
|
4267
|
-
header ? header : /* @__PURE__ */
|
|
4268
|
-
/* @__PURE__ */
|
|
4269
|
-
/* @__PURE__ */
|
|
4270
|
-
/* @__PURE__ */
|
|
4316
|
+
return /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel", children: [
|
|
4317
|
+
header ? header : /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel-header", children: [
|
|
4318
|
+
/* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel-header-content", children: [
|
|
4319
|
+
/* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx16(FormattedMessage7, { id: "loginTitle" }) }),
|
|
4320
|
+
/* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx16(FormattedMessage7, { id: "loginTips" }) })
|
|
4271
4321
|
] }),
|
|
4272
|
-
onClose && /* @__PURE__ */
|
|
4322
|
+
onClose && /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx16(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
4273
4323
|
] }),
|
|
4274
|
-
/* @__PURE__ */
|
|
4275
|
-
/* @__PURE__ */
|
|
4324
|
+
/* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-divide" }),
|
|
4325
|
+
/* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx16(LoginBox, { ...props }) })
|
|
4276
4326
|
] });
|
|
4277
4327
|
}
|
|
4278
4328
|
|
|
4279
4329
|
// src/components/LoginModal/index.tsx
|
|
4280
|
-
import { jsx as
|
|
4330
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
4281
4331
|
function LoginModal({
|
|
4282
4332
|
isOpen = false,
|
|
4283
4333
|
width = 480,
|
|
4284
4334
|
...props
|
|
4285
4335
|
}) {
|
|
4286
4336
|
const { isLogin } = useUserInfo();
|
|
4287
|
-
return /* @__PURE__ */
|
|
4337
|
+
return /* @__PURE__ */ jsx17(
|
|
4288
4338
|
Modal,
|
|
4289
4339
|
{
|
|
4290
4340
|
isOpen: isOpen && !isLogin,
|
|
4291
4341
|
width,
|
|
4292
|
-
children: /* @__PURE__ */
|
|
4342
|
+
children: /* @__PURE__ */ jsx17(LoginPanel, { ...props, inModal: true })
|
|
4293
4343
|
}
|
|
4294
4344
|
);
|
|
4295
4345
|
}
|
|
4296
4346
|
|
|
4297
4347
|
// src/components/UserPopover/index.tsx
|
|
4298
|
-
import { useState as
|
|
4348
|
+
import { useState as useState16 } from "react";
|
|
4299
4349
|
|
|
4300
4350
|
// src/assets/icon/ProfileIcon.tsx
|
|
4301
|
-
import { jsx as
|
|
4351
|
+
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
4302
4352
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
4303
|
-
return /* @__PURE__ */
|
|
4304
|
-
/* @__PURE__ */
|
|
4353
|
+
return /* @__PURE__ */ jsxs12("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
4354
|
+
/* @__PURE__ */ jsx18(
|
|
4305
4355
|
"path",
|
|
4306
4356
|
{
|
|
4307
4357
|
fillRule: "evenodd",
|
|
@@ -4310,7 +4360,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
4310
4360
|
fill: color
|
|
4311
4361
|
}
|
|
4312
4362
|
),
|
|
4313
|
-
/* @__PURE__ */
|
|
4363
|
+
/* @__PURE__ */ jsx18(
|
|
4314
4364
|
"path",
|
|
4315
4365
|
{
|
|
4316
4366
|
fillRule: "evenodd",
|
|
@@ -4323,11 +4373,11 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
4323
4373
|
}
|
|
4324
4374
|
|
|
4325
4375
|
// src/components/UserPopover/index.tsx
|
|
4326
|
-
import { FormattedMessage as
|
|
4327
|
-
import { jsx as
|
|
4376
|
+
import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
|
|
4377
|
+
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
4328
4378
|
function UserContent() {
|
|
4329
4379
|
const { logout, address, username } = useUserInfo();
|
|
4330
|
-
const [logouting, setLogouting] =
|
|
4380
|
+
const [logouting, setLogouting] = useState16(false);
|
|
4331
4381
|
const onLogout = async () => {
|
|
4332
4382
|
if (logouting) return;
|
|
4333
4383
|
try {
|
|
@@ -4345,34 +4395,34 @@ function UserContent() {
|
|
|
4345
4395
|
rightIcon,
|
|
4346
4396
|
onClick
|
|
4347
4397
|
}) => {
|
|
4348
|
-
return /* @__PURE__ */
|
|
4349
|
-
/* @__PURE__ */
|
|
4398
|
+
return /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
4399
|
+
/* @__PURE__ */ jsxs13("div", { className: `matchid-user-popover-item-content`, children: [
|
|
4350
4400
|
icon,
|
|
4351
|
-
/* @__PURE__ */
|
|
4401
|
+
/* @__PURE__ */ jsx19("div", { className: "matchid-user-popover-item-text", children })
|
|
4352
4402
|
] }),
|
|
4353
4403
|
rightIcon
|
|
4354
4404
|
] });
|
|
4355
4405
|
};
|
|
4356
4406
|
const UserDivider = () => {
|
|
4357
|
-
return /* @__PURE__ */
|
|
4407
|
+
return /* @__PURE__ */ jsx19("div", { className: `matchid-user-popover-divider` });
|
|
4358
4408
|
};
|
|
4359
|
-
const [usernameOpen, setUsernameOpen] =
|
|
4409
|
+
const [usernameOpen, setUsernameOpen] = useState16(false);
|
|
4360
4410
|
const [copied, setCopied] = useCopyClipboard();
|
|
4361
|
-
const intl =
|
|
4362
|
-
return /* @__PURE__ */
|
|
4363
|
-
/* @__PURE__ */
|
|
4364
|
-
/* @__PURE__ */
|
|
4411
|
+
const intl = useIntl8();
|
|
4412
|
+
return /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-content", children: [
|
|
4413
|
+
/* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-list", children: [
|
|
4414
|
+
/* @__PURE__ */ jsx19(UserItem, { onClick: () => {
|
|
4365
4415
|
setCopied(address);
|
|
4366
|
-
}, icon: copied ? /* @__PURE__ */
|
|
4367
|
-
/* @__PURE__ */
|
|
4368
|
-
/* @__PURE__ */
|
|
4416
|
+
}, icon: copied ? /* @__PURE__ */ jsx19(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx19(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx19(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
|
|
4417
|
+
/* @__PURE__ */ jsx19(UserDivider, {}),
|
|
4418
|
+
/* @__PURE__ */ jsx19(UserItem, { onClick: () => {
|
|
4369
4419
|
setUsernameOpen(true);
|
|
4370
|
-
}, icon: /* @__PURE__ */
|
|
4420
|
+
}, icon: /* @__PURE__ */ jsx19(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx19(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
|
|
4371
4421
|
id: "setUsername"
|
|
4372
4422
|
}) })
|
|
4373
4423
|
] }),
|
|
4374
|
-
/* @__PURE__ */
|
|
4375
|
-
/* @__PURE__ */
|
|
4424
|
+
/* @__PURE__ */ jsx19(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "disconnect" }) }),
|
|
4425
|
+
/* @__PURE__ */ jsx19(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
4376
4426
|
setUsernameOpen(false);
|
|
4377
4427
|
}, onSuccess: () => {
|
|
4378
4428
|
setUsernameOpen(false);
|
|
@@ -4383,12 +4433,12 @@ function UserPopover({
|
|
|
4383
4433
|
children,
|
|
4384
4434
|
...props
|
|
4385
4435
|
}) {
|
|
4386
|
-
return /* @__PURE__ */
|
|
4436
|
+
return /* @__PURE__ */ jsx19(Popover, { ...props, content: /* @__PURE__ */ jsx19(UserContent, {}), children });
|
|
4387
4437
|
}
|
|
4388
4438
|
|
|
4389
4439
|
// src/components/LoginButton/index.tsx
|
|
4390
|
-
import { FormattedMessage as
|
|
4391
|
-
import { Fragment as Fragment3, jsx as
|
|
4440
|
+
import { FormattedMessage as FormattedMessage9, useIntl as useIntl9 } from "react-intl";
|
|
4441
|
+
import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
4392
4442
|
function LoginButton({
|
|
4393
4443
|
loginRender,
|
|
4394
4444
|
methods,
|
|
@@ -4400,12 +4450,12 @@ function LoginButton({
|
|
|
4400
4450
|
walletMethods,
|
|
4401
4451
|
...props
|
|
4402
4452
|
}) {
|
|
4403
|
-
const intl =
|
|
4453
|
+
const intl = useIntl9();
|
|
4404
4454
|
const { isLogin, username } = useUserInfo();
|
|
4405
|
-
const [loginOpen, setLoginOpen] =
|
|
4455
|
+
const [loginOpen, setLoginOpen] = useState17(false);
|
|
4406
4456
|
if (!isLogin) {
|
|
4407
|
-
return /* @__PURE__ */
|
|
4408
|
-
/* @__PURE__ */
|
|
4457
|
+
return /* @__PURE__ */ jsxs14(Fragment3, { children: [
|
|
4458
|
+
/* @__PURE__ */ jsx20(
|
|
4409
4459
|
LoginModal,
|
|
4410
4460
|
{
|
|
4411
4461
|
methods,
|
|
@@ -4415,32 +4465,32 @@ function LoginButton({
|
|
|
4415
4465
|
onClose: () => setLoginOpen(false)
|
|
4416
4466
|
}
|
|
4417
4467
|
),
|
|
4418
|
-
/* @__PURE__ */
|
|
4419
|
-
/* @__PURE__ */
|
|
4420
|
-
/* @__PURE__ */
|
|
4468
|
+
/* @__PURE__ */ jsxs14(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
4469
|
+
/* @__PURE__ */ jsx20(UnLoginIcon_default, {}),
|
|
4470
|
+
/* @__PURE__ */ jsx20("span", { children: /* @__PURE__ */ jsx20(FormattedMessage9, { id: "login" }) })
|
|
4421
4471
|
] })
|
|
4422
4472
|
] });
|
|
4423
4473
|
}
|
|
4424
|
-
return loginRender ? /* @__PURE__ */
|
|
4425
|
-
/* @__PURE__ */
|
|
4426
|
-
/* @__PURE__ */
|
|
4474
|
+
return loginRender ? /* @__PURE__ */ jsx20(Fragment3, { children: loginRender }) : /* @__PURE__ */ jsx20(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs14(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
|
|
4475
|
+
/* @__PURE__ */ jsx20(LoginIcon_default, {}),
|
|
4476
|
+
/* @__PURE__ */ jsx20("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
4427
4477
|
id: "user"
|
|
4428
4478
|
}) })
|
|
4429
4479
|
] }) });
|
|
4430
4480
|
}
|
|
4431
4481
|
|
|
4432
4482
|
// src/components/UsernameModal/index.tsx
|
|
4433
|
-
import { useEffect as
|
|
4434
|
-
import { FormattedMessage as
|
|
4435
|
-
import { jsx as
|
|
4483
|
+
import { useEffect as useEffect16, useMemo as useMemo10, useState as useState18 } from "react";
|
|
4484
|
+
import { FormattedMessage as FormattedMessage10, useIntl as useIntl10 } from "react-intl";
|
|
4485
|
+
import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4436
4486
|
var ValidItem = ({
|
|
4437
4487
|
success = false,
|
|
4438
4488
|
text
|
|
4439
4489
|
}) => {
|
|
4440
4490
|
const isDownMd = useDownMd();
|
|
4441
|
-
return /* @__PURE__ */
|
|
4442
|
-
success ? /* @__PURE__ */
|
|
4443
|
-
/* @__PURE__ */
|
|
4491
|
+
return /* @__PURE__ */ jsxs15("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
4492
|
+
success ? /* @__PURE__ */ jsx21(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx21(InfoLineIcon, { size: isDownMd ? 12 : 16 }),
|
|
4493
|
+
/* @__PURE__ */ jsx21("span", { children: text })
|
|
4444
4494
|
] });
|
|
4445
4495
|
};
|
|
4446
4496
|
function UsernameModal({
|
|
@@ -4451,23 +4501,23 @@ function UsernameModal({
|
|
|
4451
4501
|
}) {
|
|
4452
4502
|
const { username, refreshOverview } = useUserInfo();
|
|
4453
4503
|
const { isLogin } = useUserInfo();
|
|
4454
|
-
const [val, setVal] =
|
|
4455
|
-
const [error, setError] =
|
|
4504
|
+
const [val, setVal] = useState18(username);
|
|
4505
|
+
const [error, setError] = useState18("");
|
|
4456
4506
|
const isDownMd = useDownMd();
|
|
4457
|
-
|
|
4507
|
+
useEffect16(() => {
|
|
4458
4508
|
if (isOpen) {
|
|
4459
4509
|
setVal(username);
|
|
4460
4510
|
setError("");
|
|
4461
4511
|
}
|
|
4462
4512
|
}, [isOpen]);
|
|
4463
|
-
const isValid =
|
|
4513
|
+
const isValid = useMemo10(() => {
|
|
4464
4514
|
return isValidUsername(val);
|
|
4465
4515
|
}, [val]);
|
|
4466
|
-
const isLength =
|
|
4516
|
+
const isLength = useMemo10(() => {
|
|
4467
4517
|
return val.length >= 2 && val.length <= 32;
|
|
4468
4518
|
}, [val]);
|
|
4469
4519
|
const isSafe = isValid && isLength;
|
|
4470
|
-
const [isSubmitting, setIsSubmitting] =
|
|
4520
|
+
const [isSubmitting, setIsSubmitting] = useState18(false);
|
|
4471
4521
|
const onSubmit = async () => {
|
|
4472
4522
|
if (isSubmitting) return;
|
|
4473
4523
|
try {
|
|
@@ -4487,13 +4537,13 @@ function UsernameModal({
|
|
|
4487
4537
|
setIsSubmitting(false);
|
|
4488
4538
|
}
|
|
4489
4539
|
};
|
|
4490
|
-
const intl =
|
|
4491
|
-
return /* @__PURE__ */
|
|
4540
|
+
const intl = useIntl10();
|
|
4541
|
+
return /* @__PURE__ */ jsx21(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
4492
4542
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
4493
|
-
}), children: /* @__PURE__ */
|
|
4494
|
-
/* @__PURE__ */
|
|
4543
|
+
}), children: /* @__PURE__ */ jsxs15("div", { className: "matchid-username-box", children: [
|
|
4544
|
+
/* @__PURE__ */ jsx21(Field, { label: intl.formatMessage({
|
|
4495
4545
|
id: "username"
|
|
4496
|
-
}), error, children: /* @__PURE__ */
|
|
4546
|
+
}), error, children: /* @__PURE__ */ jsx21(
|
|
4497
4547
|
Input,
|
|
4498
4548
|
{
|
|
4499
4549
|
placeholder: intl.formatMessage({
|
|
@@ -4506,8 +4556,8 @@ function UsernameModal({
|
|
|
4506
4556
|
value: val
|
|
4507
4557
|
}
|
|
4508
4558
|
) }),
|
|
4509
|
-
/* @__PURE__ */
|
|
4510
|
-
/* @__PURE__ */
|
|
4559
|
+
/* @__PURE__ */ jsxs15("div", { className: "matchid-valid", children: [
|
|
4560
|
+
/* @__PURE__ */ jsx21(
|
|
4511
4561
|
ValidItem,
|
|
4512
4562
|
{
|
|
4513
4563
|
success: isValid,
|
|
@@ -4516,21 +4566,21 @@ function UsernameModal({
|
|
|
4516
4566
|
})
|
|
4517
4567
|
}
|
|
4518
4568
|
),
|
|
4519
|
-
/* @__PURE__ */
|
|
4569
|
+
/* @__PURE__ */ jsx21(ValidItem, { success: isLength, text: intl.formatMessage({
|
|
4520
4570
|
id: "usernameLengthError"
|
|
4521
4571
|
}) })
|
|
4522
4572
|
] }),
|
|
4523
|
-
/* @__PURE__ */
|
|
4573
|
+
/* @__PURE__ */ jsx21(Button, { disabled: !isSafe, loading: isSubmitting, style: {
|
|
4524
4574
|
marginTop: isDownMd ? "36px" : "64px"
|
|
4525
|
-
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */
|
|
4526
|
-
/* @__PURE__ */
|
|
4575
|
+
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ jsx21(FormattedMessage10, { id: "confirm" }) }),
|
|
4576
|
+
/* @__PURE__ */ jsx21(Button, { style: {
|
|
4527
4577
|
marginTop: isDownMd ? "12px" : "24px"
|
|
4528
|
-
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */
|
|
4578
|
+
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ jsx21(FormattedMessage10, { id: "cancel" }) })
|
|
4529
4579
|
] }) });
|
|
4530
4580
|
}
|
|
4531
4581
|
|
|
4532
4582
|
// src/components/SOLModal/index.tsx
|
|
4533
|
-
import React7, { useEffect as
|
|
4583
|
+
import React7, { useEffect as useEffect17, useState as useState19 } from "react";
|
|
4534
4584
|
import { clusterApiUrl } from "@solana/web3.js";
|
|
4535
4585
|
import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
|
|
4536
4586
|
import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
|
|
@@ -4581,10 +4631,10 @@ import {
|
|
|
4581
4631
|
XDEFIWalletAdapter
|
|
4582
4632
|
} from "@solana/wallet-adapter-wallets";
|
|
4583
4633
|
import "@solana/wallet-adapter-react-ui/styles.css";
|
|
4584
|
-
import { useIntl as
|
|
4634
|
+
import { useIntl as useIntl11 } from "react-intl";
|
|
4585
4635
|
|
|
4586
4636
|
// src/components/WalletModalContent/index.tsx
|
|
4587
|
-
import { useMemo as
|
|
4637
|
+
import { useMemo as useMemo11 } from "react";
|
|
4588
4638
|
|
|
4589
4639
|
// src/assets/wallet.ts
|
|
4590
4640
|
var walletErrorImage = "data:image/png;base64,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";
|
|
@@ -4594,7 +4644,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
4594
4644
|
var walletSigningImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAABAsUlEQVR4Xu19CXQUx7X2vCUveS/vJdgx+yaJHQwI8G4wzWIbG2LLNrbxPgnY7CC0SyNpJBAIECAZAbLB8gAyKGGxiFnkGJwmz47xsU0mvyEWoGW0D0jgSeK88L84/7l/fS2V3GrNaDRCEiPpfud8p3qqu6tnpvt+favqVpXJxGAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYbYvCwkKlpKREvXDhglpQUKCKz+qlS5e0z8j3N5aXl6tXrlwJMf4OBoPRDD777LPg7Ozs0MOHD1NiYiLNnTuX7rzrDho5ejj179+f+vbt69ccNGgQBQQE0LBhw2jUqFE0ZswYun3sGBo3cQxNmDiexk+8XaTBIh1LwYLfbY/vcvsnTpyofUbqjXfeeSdNnjyZHnnkEXrxxRcpKSmJfvnLX9KuXbtCz5w5ozgcjmDjs8LoQlBVNcBqtZrFjbfjIYAR/fCHP6Qf/OAH9C//8i/0z//8zw2p3P6nf/qnhtRfKH4K00B534z5kvr/71//9V/p3/7t36hHjx6aeM6cOZPWr19Pubm56tmzZ81CCHqYGF0LH3/8sW3lypXqtGnTqHfv3tpDAOLBkakkHiQ8KJ4EwOTmAfMHGoWiO1HeO2O+O+r/M5wDMfiv//ovuuuuuyg6OloTAhOj68But6cvWLBAc51xs40PhHwojHmeiGP9jcbv2N3Y0v/A+L/p/z94gqhiwSPYsWNHuonRuSFc/h5Qc9xQvNXxpseN/t73vtcgBCbDQyDdf32e/hh/pvFh7040/hetIcrBs4H7P2LECEpNTaWTJ08miRcIVwk6G/Lz8wOys7Nts2fPph/96EcNN9hI5Mt9uPF4AOAW6vPkMc1RHmcsl+l/bMk9wjMwdOhQraHw008/zTAxOheE8eehoQ91O1mnd2f4ktLY5bEyT79tPEdPvWi0N+HJQKi+//3v03/8x39o3gw+y7eXPAapvlFT5hn3ucvrDMfrabwfbUWIQHJyMrYZnQUOhyMdXXvS+EWWx4dFNgLp98OQjMcZzzWWhxQPJozylltu0bwOtDKD+B4y78c//vEN77/11lu1/J/85CdainzwP//zP7XfAqI+ixTfR6b6bX3aWY9vDfUNhfr7647yWYAIcJtAJwFc/xUrVtjRvac3UiPxIOBBQl3vwQcfJPQQWFcnqVu3blW3bNmiWiwWdc6cOWpwcLADDwCMW76JcD4eJqMIoMwJEybQnj17KC8vT33vvffUo0ePqkeOHNFSfJbbN7L/3XffVQ8ePKju3btXfeutt9SsrCx127ZtGtPT09XMzEwtxW+Rv0fmdbX9mzZtajHXrVunrlq1ShXPh+uJJ57QYiggoNJ701N/b/GciGeBcnJy8sTLJUD/vDH8DMIIdk+ZMqXhLe6O4jCttffhhx8mq9WqijqezViOxIcffmjeuHGjberUqdSzZ88GATCWb6p/cFDuzp07STwoiqEohp9A3JvQL7/80iZEwfbMM884ho8Y1qzXB/FH13FoaCjZ7XZz49IYfoOTJ08qP/vZzxxwjY1GrzdUuJfiOPv27dvNBQUFAcZy3OFXv/pVRkREBPXp06dJmfoHB28LRVEIobrGMhj+h9zcXGVn9puOsWPHau0pRhEAkQeP74477iB4XuwF+ClWr15txk0yvp0l4eqhPv3CCy+QMH6fwj7RFSREIEm4j5rb6O4apvoHBvXxQ4cOsQB0EiA0fPXqdSSqew1VO5MbEYAHuHbtWnQNKo0KYNx8nDt3ThH1Qs34jIYpjR+NZC+98gqlpaUpxvNbijNnziQtXbrU1ZwAYPupp56y48Eyns/wT6iqGrxhwwY72oQ8tQkg/7777iPxnIU2Pptx0wGjxgAPfVeYnlB2xH2/8dZbqv3SpRsyzHfeeSc0MDCwyTVMuodlxowZlJ+fbzOey/Bf5OTkKM8++6wDPS0mNwKA5wptAeL+I4/hTzh+/HgeRnrpu3kk0YgDz0DU+0m8wc3Gc1uDV4QnoTd8vQCAw4cPx5uCBaCTYdOmTbtRjTS5EQA8R2gnCAsLYwHwN6SkpIQOGTLErQDg7T948GAM/T3dViO93n77bQoKCvIoAGgsfOmll1gAOhnsdvtus9ncRABA3GM8Xz/96U9ZAPwNBw8epF69ejW6WZKoFowfP55sAsbzWot58+Yp9957b0N8gF4AsI3AHfGg5LW0l4HhPxBVSdVdOwCIe/vAAw+wAPgbsrKytBZ+k0EAZCgp+vFVVW0zAYiIiFBmzZrVcA2T7iGRvQ3oNz5//ry58ZkMfwcChvSNySaDCED4Oc7Dz7BlyxatfmYyCADcfwgAxgVcvHixzQQgPj5eCQkJaQglNukeEHzGd1myZAkJD8Dc+EyGvwMRlQi39iQAmF2I4zz8DBkZGc0KwOOPPw7V7hABkB7AE0880WZtDoyOAwtAJ4QnD0DWzxH73VECACJYaMHChXRSVZPy8/OV9iQCU0BRxem2tNvtjXnunHKuoEApqCdcdqSY+BXbzXHnzp12xIywAHQiePIAZCNdRwsArouBQYgcjIyMbHPGxMSQxWLRJjXFcFWMW09JSdEo6rDdjrj/r7/+OmVmZtZx2zba8eablJ2djcZfre8eg7RycnI07t27l3bv3k3ozcF+EMciLyEhQZsr0p3xgywAfojmBOBmeAAgrov97UHZzoA3FSiHCoNyGHF3JFx3SYwJQXdsv379tAlg0RWMAC6kAwYM0HqNbrvtNi3EV27LFM+N8X5KsgD4ITZv3uxWAGAsN0sAmP5DOZRbP6TbeIx8Zjy5/pIsAH4ITx6ADA1uawFITU1F2KhWtj8IgBQ7fJfuRCnwoNHI9cYu9+vT5ozcE3EOC4AfwlMjYHt5AOnp6cpzzz2nXQvXQMrseMr73JwAIh9G725KMWN53oiyJk2axALgb+hoATh69KiC+QEwt4DJzYPC7FrUi8VDDz1ERUVFvCSbP8FTFUDeuLYWAFVVe8ydOzcJjUnNNRgxuw7xLKF3YNmyZfjM8Cds2rSpQQD0xt9eAgB88sknIUlJSY5x48ZpLfH//u//rrU5QBA6gsa6bnekNzcex8iZk2WPCT7LvOaov5f4jKHA6NbNzMxUvnsKGH4BbwLw2GOPtbkAAJgjbs+ePa6ly5cThgg/+eST2gSSiDxsTz766KPa+AYQcyB2R959991ad59RBORnGC4m+MCYDYSC475gnQi48NjGfwhiW79f5uE8yaeeegqxFw7h+dkcvIio/0EKgNH421sAAFGucvb8efN///d/m/Pz8815eXnm48ePtytxjezsbI1ZWVnmrVu3djvu2LFjNyZ2xZvapBMAGD7uO0ZkIlgqNzc3ad++fea9e/eabTab9p/hsy987733zIgwbHznGX4DbwIARW8vAWDcHMAo582b16QhFu46XH8E9KBtiA23G8CbALSnB8C4OYAnhAVgMBOziQWge8ObALAH0PUAAUAwFnsADBaAbggpAOwBMLwKAFrOWQC6FiAATz/9NAsAw7sAsAfQ9QAB4EZAhgZvAsCNgF0P7AEwGsAC0P3QnADgviNIiAWgm0COBTAaP1cBui6a6wXAfWcPoBtBjgY0Gr8UACzmUFBQ4JMA5OXl9Th16pSKqaQwDVdUVJTPxCoyGDW4atWqNiPKRYTb+vXrCZ4Pfntubi4dOHAgD3MEOm5gIlI6kxXwzckYxZHzolKQOUs5lxmiFGbOUxyZcwXnKIXpsxRHukhTZymFabO0z9h2ZNal2mfkp32X5+54yXOCBWkhSs2BjT6H10IAEKILgzcZBAApIgExTRgLQDfA1q1bPQoAiPhuXwRAGH8AlvZCqCkGgaBOaRyM0xLKCUmQthXxgOOthymw8JDD1e3fv782LgDz4YkHPsP4e1qC62pWgOu91WpNjpkcWY9Q4ZbJdHHLNCrdMoOK02ZSyeYp5Fh3H5VsuI+K19xDJevupWLBErHtqM9zpIp0rchLEUy9V8sr1R3vECxKvoeKVwsm3UcF1sl0IfFBqt4b7qg9mKoYv1NzgABg7AX+E5NOAPC/I8WUYPX/h9LoREbXgzcBwCAPXwRg7969edOnT9eMV3zUypCjxPCAod4pU2mY+jwpAPL89iLKl/MEQhRuv/12wn9h8hGu3+0LrnlvvXpx7RwqjA6mysShVJU4XGO5dQhVxg+lSstQKo8KosqoQKqKGkhlUYNFOpiqowZQaVSASAdprNseqO2rO2aAOCdAcBBVYH9EgChnIJWHB1Fp+FAqXjaSioQIlO5c4qjNb7kIYDwEuneNAiC9Pk0AduwgzBDc6ERG14M3AfC1ChAXF6eN/TYZHiz5cMlUDknV72tvowfl9SAyss4L4cGQZCxdJaoB6SYfUHs0XanIDqWC6DuoLHYMOeMCyRkdRM6YIKrStgVjYMz9qDpSMLyvRmd4P0G5Xceq+jy5LffJc2ReZThEQIjJKiEEEePp0rrZ9Cc1006XPmhRdQBjAYxVAP190ARg+3YWgO4AowCYDMaC4Z6+CMDzL9UtNW5yY3w3m3rB0f9W+RlVlt///veqyQcU7opRLqSZqXj5aKpeFUhXwvtQjTDSWkFsOyMGkDNyoDDkQfVG36f1jB1MTosowyLKjO5D5ZGDqTxiFP0x+X669sE6+vbcQcX4/dwBHgDmeWhWALKyWAC6A7wJAHoBuooAeKL87WgT8FUAnDnxStHmF+nCijFUFjZEGLww0Mj+goPqjF+48M4oCACIN7obw24JIwXjRHnx/eiydQDVWPuINIAc8SOpdPMM+tPHm1SqYQ+A4SO8CYCvbQDuBMBd2f7I1giAKy+9hyNz0e4LsVOpOHocVccMo7K4ocL9H07lsUFUZhlGFTGiHh8p6vfhom4vPIHWsAqCEicYP4iqE0W1InEQVVqH0cXUO6nk7afp6vFIs/G7eQILAKMB3gTA1yoAZvw1CgDq9rJ+L3sF5PX0n3GezHf3fVpDX8rCuoS+CgBQc3ijuSw7lC4mKeSwjKcSwVJBh2Wctu2wjCVH7GgqTRwhPgsiTdBtI43XbbvZXyr2l8YJWoJEeSKNGUGX4iZSyRvP0+WjyaddedYWd2G2qArAjYDdA94EwNdGQMSYy+4kSTm9tJwa+uc//7lXLliwAFNQ2e+99171Rvnggw/aQ0JCHFOmTHGhsU//3fTEvHeffPKJ2vBjfMCfP8xNuvrORvWybaG9Yt8KKtu3khxvL7aX7npVrXjjJbVo29P1fEot2fa44E+17eptT4g0RPAJkTdHdWybq1Zqx9TtR55+f9HWp9XC9Lka/5D5onrt4DafGi0Bd3EATQQA3YAsAF0f3gTA1zgARJgZy5HE8lsvv/yyA5GF3lhZWWmrqalpUZ3WG+RCl7t27VIRA2By893AGxEACXLkB/z94vu2v/7xlO2vLWyV72iwB8BogDcB8LUNoDkBQB1beAg3ZGA3gv3796swcpOb7wa2hQB0BrAAMBrgTQB8rQJ4EgDkQQBeeOGFm2ZgEABj/Lue3UUAuBGQ0QBvAtAWjYCgvwgAewDuPQCwkQBwHED3gDcB8DUOoDkBQISgPwsA2ii6gwC48wBA9gC6IfQCYHJjtL62ATz/4gseBQD0ZwFAJODp06dv2vfrKHgSgEaDgVgAuge8CUBbVgH8XQAwDv6jjz66ad+vo+CpCiA/cyNgN4I3AfC1EZA9APdA9+A3n2cpjpwFiiNrgVKYPldxYs6AtLmKQ7Ci/jO2keIztr/7PEfbrhXbko4ss+L6IN3nrkZ3cQBgIwHgOIDuAW8C4GscwHPPd14PoGfPnu3iAVw/kx5w/cw2tfa4hS6+/jgVbvgpFabMpLI106kwaQY51ggmT6PytdOpOGm6lq8xaRqVJk8V2/dRRfIUcdw0urJuKjnXKeRMnU6laSFUfTjJ4TqZrhiv2RzYA2A0wJsA+NoG8Nzzz3daAWiPKsDf7R8E/+nERrVi60/pj5Z76Fz4CLqwagQVrxpGJauGUEmoSMOGUsnKQCpePlykg7X84hVDqXRlEJWtHCj2D6bS0CCqDBtIZdGBVB4RRNXhgVQqyvpq3SNU+osoh+tMmmK8tiewADAa4E0AulMVoE+fPqQK6M+5UbiOZipVtlByxAdTWcwoKhIGXBwWRCVRgpGBVBIu0nCkAcLwsR2gGXxJKIRggGBf8bmfxqrovlRlGUDVMYPrRhau6EMOyyT6atNsKj/8qtl4bU/w1AjYSAC4EbB7wJsA+NwI2ImrAO3hARTusioX0udTqWUkOS2B5EwYIdKhgkOoXHyusgRQhUgrRIrtstgAqowIEG/3fuRY1YfKV/al6uX9qWJlb+EF9BHGL0Qgsh9dEZ+vLO9FTrHvgvVuqj2RQN9+vksxXt8dWuQBcBxA94A3AfA1DqAzewC9evVq80bAioOpSskbi6nMOoac1iC6kjKMnIlBdYwfJIRAvMktIo3tVzfeXxi4MxqTiPSiytDe5Fx5G1Wu6klVK3tp25ct/akyIUAcJ46PEIIgvATHusn0p/etKl060KIGQfYAGA3wJgC+tgF0ZgFoj16A65/nKVd+lUzFaXdT5cYJVLVhnCYCV9ZACPrXze5jwWw/mPBDMKY+FQLgjLyVnGG30OVQka66RduuSehPV9YOo8vWgdo5pTHDqXxHCF3Nu7H5AEAWgG4IbwLgcxWA4wAagex5Pf780eakv7z7Gl3a9ACVbb6HKtYHU1nKSCpLGCaqBoKxgXWMGkylcUOoNFqksYJRA0VVYCCVhdWlGiNFNSFxKJXFiPMiBVdPpWvH4ugfjvfMxmt7QouqANwI2D3gTQC6eiOg/F5ge3gAElSwK+mb38So1Yfmq19smaX+PmWK+qV1hkgnC+KzZN3nApF+mTJD/cPqyepXSVPVr6yK+oc194vPM9Wv4u9Vz8eLfWseVv9+eF2bzAcAchxAN4Q3AejqcQB6AcBgpbb2APwRnjyARqHA7AF0D3gTAF/bAJqLA4Dx+YsA6A1f7wH85je/uWnfr6PgTgDkf4BtFoBuBG8C0JZVAH8aDmw0fhBtAN1BAIyNgPr/AJ+5EbAbwZsA+NwI2EwVwJ8FAHMW4sHvDgJg9ADcCgDHAXQPeBOAtowD8GcBQP2XPQD2ALodvAmAr20AnVkAuosHwALAaIA3AfC5CtBMHIA/CADm/jcaP4gpy7uLALSoCsCNgN0D3gSgrRoBQUwJ9sorr9D27dvzhLutgH369HFLm82mHjlyhMTD6pEt2X/s2DF666238kaOHKksW7bMrl+URE985+5SBTDGAbgVAI4D6B7wJgBtFQcA4oHDSrx4C4OYox9egZ633HKLlo+HsG/fvlp8PkbpgdhGHrrrwJbsxxh/+flHP/qRtgqw0fhB9gDYA+iW8CYAvrYBeIoDAGFk+odNrhZkpPG89qAnAeiOgUBuBQAegN2u6M9zOBzWs2fPhurzGJ0c3gSgtVUAd+WBRsNrjsZzb4TGco3Xkr0A3XFWYON/YxQAIYrK0aNHVavV6nruuedcoaGhKoRSCEKLRh8y/BjeBMDXRsAX573o8S1uNLqW0FhGa2gs0x3hjaC68Hu7XTV1cbTIA3jjDTpXUKD89re/paVLl9Lw4cO1SE5U4XDe2LFjKTU1FROosAh0ZngTAF/jAKKiorQHxeTGEPU0GqCRxuPbmnLFYnk9eACjRo2icxcuqKYujpZ4AHgu3n///Qzcz379+mmGD+J/klW3oUOH0ttvv+3Iz89XDJdgdBZ4EwBf2wD27dtHgwcPblKWvxHVFNkmIdseHnvsMSoqKgoxdXF4EwA0xIaFhdGKFSs040ceiP8MS6tBCLANTpkyhTIyMhwnT55UGl2E0TngTQB8rQKIByE0MjJSa9E3uTG8m028vfAWw8MPyof69ttvp+zsbBzT5WGsAoB6EcDzgLc7elHkcyH34f+CAMgl33HsXXfdRTt27LB/9tlnXB3obPAmAL42AgJ2uz1E1A/VZ5991oVuxIceekjjzJkzbzqnT59OkydP1nj33XfT1KlTEZvgOnTokCq+d7d4gI1xAJJ6ETB6BcY8fT6enzFjxtCWLVu4TaCzwZsA+BoHoMdXX30V+sUXX9jOnDnjN/z4449tH374YQNFlQX5ZuN378pw5wHo6cnQjZT5siqFhsG9e/c6xP+pfHc1hl/DmwD42gbA8H/4KgCSxihK43nYD69KeALcJtBZ4E0AWlMFYPg3jI2ARhoNXxq/NwEA0Z7ywAMP0M6dO7lNoDPAmwD42gjI8H+01AOQ20jR4IexHD/+8Y+0RkBPIoDjEG49ceJESktLIxYBP4c3AfA1DoDh/5CNgDBkkxsBAI1dpBif8fjjj9OC1xbQyJEjG3pS3J0HLwBCINsEOE7Aj+FNALgNoOsBHsDcuXM1oza5MX5QBkmh2w+DqNCDcvjwYfrkky8yNm3aRKNHj9YM3d1zIwmRQJyAeMa4YdBfIQXAZDB8Sa4CdD1s377d/PDDD2uGbTIYrbzvMuIP7jzq9MnJyRkwYrvd3uPXv/510tq1a7XYCTnuw5MQoNowY8YM2rNnj727dLN2KuzYsUPU637s9iEA0X8vbpzPAkD2/IDrH9mU63mpSu3BNco3B2OUb46GKtfz4xVXvtjOjxCMF5R5ESKNqd8Xqu1zNezrXMfjOOxD/rdnMhWy7/ObB3/rtq2hC15doN1zo9Hq3X4YP4554oknXJs3b24yAtDhcCTl5uaqgwYP0kK/5ZTi7ojy7rnnHjp69Cg+M/wJCN3Vh3vqjR+fFUWhDz74wCcBIHtuwJ/yt6k1B61Um72cqna+SleyX6bad56nr/f/jK7sf5muCdaK7dr9z4tt5L0o9r0iUjNdFdtXtbwXOuXx2EaeS/Cvx2Lpb/nr1OtqVoDxf+povPXWWyELF79GAUGDtPq7UQBkrD88QlQP4P0J47caimmEhYsXqePGjXPbHqAnvI1169axAPgbWiIAx48fb7EA/FXdF3z1SJpauvFpuhg3mYotk6gkfqxIx4h0DDkSRndxjqEy61jB0VSRPJqq19xPFRufpMrsJWbjf9WRyM7ONi9evNjRp29vzVhlHd9kMFTkw1hnzZpFcXFxSY0KcYPU1FTl5Zdf1lx9kxvDl0RVITo6mgXA39DWAlCRE6EUZ5qpMPIOqloRSBURg7T17KoiBlBVeH/Bfl2a1Sv7kjNMpKv6UrX43dUrB1FR6ASqWP+KvWan9aZUBXbt2qWEhq1wDR8xXDNwk+4+Y1t+hpFipqZ7770Xxp+Rnp7ew1BUEwijtgcFBXkcAi4Jj2Ljxo0sAP4GCMCAAQMa3Sz9w3Hffff5JAB/+3QnFW2YRo7oIHJG9iOnMIrKsAFUEd6XyoUYVEciHSgEoZ+2zn1ZfR5S5FVGimOFWFRHiLzIQVpaHll/vKDM044X51eKYysi64+/SeVXRvQRxt+HrqzsSc5VP6HLWNY7HCv89iNHZCAVh42lwuRHqTBtrmL8v9obb775ZuiyZcuof//+Ho1U3m80+Am3322d3wibzRYgXHo7Rn56qv8jH2XC40BA2alTp+yNCmHcfOzfv58GDhzo9oHAtu8CkEVF66ZQZWIAXbOKt2FUX6qKEsYS25+cMQOpOq4vVYjUGSPSuAHkjMY+sC6vPG6QSIXhxQhvIU4cHy2Ow75YnCeOjxPHxoAiT5RVHi2OF+dXivKRdzPK15b2jhKM6Fm3rHdE/WexvyphMBWGj6KilCfJkW5WjP9XeyIvLy9k0aJFmofnyUhB3Gs05KG1Pisry6ovwx1g/BaLRcVAKk/Tv0niuiNGjKD169erH3zwwU3xgBjNoK0F4JtPMzMcrz9OjsRRdDlRGL1FGIulX9169gnCYCwg8pFiHzjIkMptHGfMc5fe7OPFb4mBAMDwezYIQLkQmKqkYXTBOoHKdqyk2pw0xfh/tRcOHz5sXrJkicPbsGzcZ9Tf8YZuSZ1/586dwfHx8SqGALvrRjQSDYSLFy8+LYQloKEQhv8AAgD30GR4KForANc/ylGuHU6hi/H3UUlkkHCXhRcQ2afuTRmFbT37eUjd5SF1l+cPx/fVjP7Kil6a618Z1odKBR2i+lMSPZwK1s6m2vey6PqZPMX4f7UHcnJylNjYWBem8TIZDFJG6snPsp8/NTU1Q7zZvdb5k5OT7ePHj28IBza5MXoQ+1E9QDUhPT09QFcEw5/Q1h4A8I9P3gxx/iJSLc+e7yrf+hiVb5hN5RtnUXHaI1Qm6BAsESytT/EZ2512//qHqXTDw1S87kFtf1E9L2x9nK7uX0pfv5/h+vbzjgmH3bFjR6h482tTpMsGPyMhAjBQdPc9/PDDrm3btrW4zh8YGOj2OZGUwUPwEKxWK9f5/R0QgLZsBNSDCk+E/u+ZLJvr9Hqb69Rmwa3dix9n2ajgkI0uHTcb/5v2gLiXIWjwg6B7Mn4QAgAjvfPOO7328wNw36Ojo1X0DsjnQs6sZBQBVCfGCQ8h1hKr7tvnPwFQDA9oTwFgdBxQ53/11VcdWADFXZCPJPLR1YfRgKGhoUn6MtwBdf6YmBh1woQJWkOhfDbkdGryM/iDf/0BTVWmUERk5GlxToCxLIYfAgIwaNCgJg8JC0DnAfr5wyPDXAGBAY0M0qS7p/o5/BDbcejQoSYLf7hDbGys/Y477tCMH16DfPPL8uRgIWwPGzGELPFJdlQXjOUw/BRtHQfA6Figzv/z+T/T4vZRr5cRfkYBkG/+xx57zHX69GnV6XQqjUtqDBgxjB9Lrsn4Afnm15eP68HtR51/zZo1XOfvbGiPRkBGx+DECTUE03cPChigvZXloh24d1IMTPX3E2/wadOmUXx8vNVYjhH6Oj/K0AuAUVxwPUwIiuO3b9/Odf7OBhaAzgnU+VesCHUMGTJEewNLQ9ULAPLR5QfvAP38UVFRScZyjECdPzIyUkVXn7d+flwH1YOIiIjTubm5Ad+Vwug0aOs4AEb74+DBo0psfJwrMChQq9PLOrnRRcdbH/vxJhfueYv6+dHVh94B1PfdtfJLQmCwdgDcfg7y6cRoTw8A4+Cvf5SpuPJTlW8EkbY7j6ZqcxBgW6bI++Zo47xv8q11Y/ZPpgmK/Pw1ddsiH6n2fU+mK3TpgF+5tdnZ2aFYsUeO54fhS0M11d87eAMgBGD27Nktiu3HGxz99rI9SD4D7maLwjXvvf9uCl21kuv8nR3t0Q1IBXkBNflx5q+PJduvHY6kmtxldGXfUqret5yq31kiuKyOOYvrt5G35Mb35yyiK3sXUa1tETn3LKxL9y6kGttCurJHbO9+jWqzxTl7FlNtzny6kmOma79YSl/nLqznEvp6/3wt78q+RVSdG0Z//k26w/leqhkTnBh/Z0cD/fyLFy/WVuwxGe6V9ADkNgQCdf61a9dajeUYgUg9dPVhSm99I6IsSx9TIOv8CAfmfv4ugLYWANfv9gVfPZmhlr39M6rYPIWKUyZRSfIEKrYGU1nSRJGOJ4d1IpVo28FUap1UnxdMxSKvRGyXiv3YLkOe2O8QeSX1+0vFdrHY79CODRacVJ8XTOWJo6k47nbBMVQSN5pKYkdqn0vikIo8yyiRjqIisa84fox2vCN5FFWljKHKtWPE9miqWnc7Va4eTWVrx2rXu7jlKSrKXkLO46lm42/tSKDOj/H8xth+owBI48eCLi2J7d+4cWOwKFeFOy/X+5MeBVK5FqDs/oNIJCYmcp2/q6Ct4wAq8qxKkXjzXlh9N1UlBpIjJpCqYgdQFYbURjZO3eUhdZfXsuMx30D9vAPY1ob4DqhLkd+Qh9F+4nhLf6qJ70fO+P5Um9BfS68liu1kcVxCAFXFD6GLCRPpXPJMqv1lnP3v6s6b8sY7evSoEp8Y5woaEthwXyT1b2sYr34Ov5bW+THBp5wkBJTtCHLcAAjjh+eRkpJiZ+PvQmjrOIDLJ9+g/5M4VbxdR5IzoR99vaY31VgxGAjDY+uHyWL4LIg8pBhJd6P7Lb6xNqmP9r1cKb0b8euUPnQtRXzvlL5UkTCISiKH0aW4u6lw+3xy5EQoxt/b3hACHRoeHq411LprlJPReDBW1Pnnzp3rU2w/xF8OFUaqd/dBuSw45vkXb36u83c1tHUjoOtEplpgnU5lUUOoOqYv1cb3rDNaGGm7E8N1+xKGH9dRbiMFG++vsfalq6v7CoMXb/7VvenqmgGa4V9NGaSxKn4QlYYPocLISVSevphqd1kV4+9tT2A8P/r5MZ7fGHZr0t0rGC7cfix42tLx/PFWi3rf/fc1lCerEMbx/fAG4CEIEeJ+/q6IthYAzHpzcfUjVBR+u+aKX175E3Kuuq1uhpx2Znn0YG3IcWXUQKoSxHZF1Hd51VH9NVZEDdIm+dDG88f3pcvC0C/Hic/C/b8sBKI6cTBdESyLC6CK8JF0IfJOKtk6nypsMYrx97YXPvzwQ/OKFSscPXv2bHQ/jCmM/7bbbtPWb2hpbD8a8CZODBau/Xcr/Bgb+yQR4RcZGcnj+bsq2joOoDY/UyndH0cXEu6n0tiRVB42iCrDwf5UJlLnyl4irw9VCDpX9KJqYbiVob01Ylqt8lBMrdWrYT+Oxfj66pW9yRlWtx9lIK8srO5YbIOYogtCUB3eV6PcRqrN11efr+VhjgJtPL9II4QIrKr7TpfFdaojhXjEBlKVJZCKku+i4s1PUcW+6AxHXqjXOnVbAAtrirq2CyvwmAwGKe+NfFujfo7Y/o0bN7ZoDj9h/HYM7JGz+OrLk/dccsiwQK3Oz7H9XRht7QEAmA+g5kiSoypnAZW+PptKNs+i0g0PUfmGmVQiiBQsrk8dgqX122X1n/X75Xk4Rr+/SXnrH6Sy9TOoJHWGtl0kWCq2C0XqECwW2yX12471OEack/ogFaaIY5JnCortJGzPoCJxbNnrc4ThL3M53gn1WqduKyC2f9HiRYQ3v7s3Mu4LjBdEg9+zzz5Lx44dczkcDqVRQQagqy8iIsKOhjx9W4L+XsttXBcigbgAh6M63VgWowuhrbsBJTAG/h9nd9swD8C145YO4dW81bZrx+JEGiOYZLt6LMFWcyjadu09q+3qEcHDMWK/OO5IUt0x78XZHIdXi2Msgjg2STBO238tf7Xtf/57m40KDluNv629oKpqyNJlS6l3315NDF8S9wXuOsJ07598Px04cMAmjN+sK6YJ4L4vW7ZMxUo+xn5+dwIAcVkVFkaYWchYFqOLob0EgOEb0M+/dOlSh/FegLJ7Dtu4LxjVh0U7Fi1ZlKQvwx1kbD8a8tCaLxv7TG7utfz8Y1E+lowrKCxUGhXG6Hpo6zgAhu84ePCgEhUV5cIcevqRd0jltiSMH639wj1vUZ1/48aN9kmTJjX085sM4qK/10hxzK233EIZGRl07tw5RV8WowuireMAGL5h7969Wmz/LcLoTAZj14sAhAGj++bMmdOi2H403MH4vc3hp6cUAPQqbNqyhXhF324Ad42AIAtA+wOx/StXriRMuuGpbi7vA+r8WNG3pXP4xcbGauP5TR7uqzvK6/W49VbKyMxs0YxBjE4OFoCbA+F5mZcvX+5Aq7zsgzcavgzBxZsfsf1hYWFJxnKMQLBORESEGhwc3GTZd2+U18V4g0wWgO4Bd3EAIAtA+wGt6xaLxTVq1Ci3hi8pg3ywYk9L5+1HuC668GTkoMmNoXuivC6qI6+//joLQHdAe3oA2nwAJzO1MfjXD1pFukak8fWpVbcd37r9KFcSY/dV7wZysyGMWKvzu3P7ZQs98mH8eIO3NLY/Kz0rIDk5ye7pXurFQJZvFAh5HHsA3QjuugHBGxUA564FytdHku3XcsLo2ptL6OqbC6h250LBnwu+Vs/5VLsLedjn2/5rgl/vWkrX3l5C1/asoNqccPrm0NoM4/fwJyC2PzomShtPL1fW0RN50vDl7L0tje2PCI1QJ0+5r2Fgj576bkRcAx6fDAgyHgtiJV/0ArAAdAO0tQBgPgDn8U220s1POsqtU6jMEkxFceOpKHo8lYq02DKeSupZVJ8iDyytT1uyv1iUWyJYahlLjoRgKg6fQBXJc+jyLqvXt+XNAPr5Q0NDHT173aYZocmN4YEwVDT4YTIPX2L7sQaffskvT0SXYFxcnCYu6FI07gdZALoR3MUBgK0VgNqja5TK3UuoKOFOqooMpGpBbSx/9ACqjhKME8R2jMiT25gvINa3/RjPr80BEDFAG2dQsbw/VS0fSlXpL7qun9yeZPxeNxOI7U9ISHAFBQU1+Z/1RL0dRonW+5iYmAyr1eq1SoPYfkzg6eltrieEfsuWLfZ9+/YlhYSEeJz0kwWgG8FdHADYWgEoTAtRCpOnUUVMEF2J7kdXlvWiy8sFQ3vXjdrDIJ82YkVoH2H0vahyRW8q1wYTDaSSzTPJuS+sxd+3vYE5/DCeX9b5TW4MDsT/LWP7jxw54vX7I7YfE3JCVHCesT4Pok0BwoAgIHgI69ev18bzi/tpfuqpp7T5A4zngCwA3Qht3QhYmDpLCMA9VCHe2DWWXuSM6C/e0P3ockRvbV6AK2G9tG2NYb210XiXw3vXMbK3z/vLMeJvlTB+bVnu3lS0fjo5bEta/H3bE+jnxxx+qHN7M34Y3axZsxDb7/AW2w/jX7p0qQp3HsYPQzeG+IKoEsCjGDt2LDwKFdUFnA8BeOyxxzx2E7IAdCO0tQCcy5ynFGAUnmUIVVuEkSYNocvWwU1m5GlTYlYgS38qTwiiws0/JcehhBZ/3/YCxvOjzm+cw89I/M9wxadOnYr59ZOKiopCdMU0gYztRxeirMOjDKMAyNiC+unBGs3hxwLAaEBbxwE481KV0j3L6I+WCVSxKohKIwOpLCqAKiP7U1nkIO2Njm0Q2+UYey/SCm1ev35ULSjzWnI8xvRXirzSmED6Y/wEKrYttjvyrAHG79WRkLH9w4cPb/K/Gon/GWMAXn755Qyz2ey1zo9+fkzSIeftN7kpTwsb/v4PafiIoejPbzKHHwsAowFt7QEArhPrQirfXumoWDeXCpMVKl03nUpTp9eP359Bjg3TtLH9GO9fJrYxvr9uvP80La2bH2C62D+jfvz/DJE/XTvH/fkzqDT9MSrZvdhOhSdu6vh19PMvWbLEYwObJP5fEG9pBN688sorlJaW5rEHA119mJwDYiFXApJlyHslvQnU7Sc/cC+t37DF7Rx+LACMBrR1N6DEXz7MNf/PsQzbldwltqpfRNqcR6Lrx+1H21zHwxrG8LuOr9Rthzbadh2vO8d1PFIw3OP52v58sf3Bxps6Zx36+ZcvX95o3n5PlIaLtzUa6SAC8+bNI6z021BgPWRsv5y3H29+We9HWZJyngD0IgixUA8ccL+oCQsAowHuBED/VmmtAHQ3yH7+Xr16NXkzu6P+GBiu7AKcP38+RvuZZbmyzo9WfLj98lyjAMg83K+4uLjTzU3jxQLAaIC7OAAWAN+AOn94eLhr2LBhjQy7OQEAjceCAQEB9NJLLzk2bdqkNQainx+t+PrQXaSye09fFob+rl271uscfiwAjAa4iwNgAWg53n///dCIiAht0I6xXt6cALg7DimiBFEdeP755xEJqN0b6SHIY3EdGD/q+viM7XvuuUczft1X8wgWAEYD3DUCsgC0HPj/MN2WfjVdkd1ksA2MFG9yEK6+XizkMaDM+8lPfqIFD2FbLtkl90EQcD05OSiur+/n9wYWAEYDWABuDLLFX/bD6wUABgbDxZsaQ3pzc3MRipvxxBNPaG95vQvfHPX1fXkNlAsRueOOO2jVqlXN1vmNYAFgNMBdHAALQMvgcDjS0TIPY5dvfP0bXa6rh2MOHDhAX331VSjm8cOinYj6g6HJYyWNZYAwfhirUWRQPUA4sK+LdrAAMBrAHkDrcezYMRVdfvL/0v9vSGFgs2fPdqWkpDTp39++fXuS2Wx2oU/fWF0AIRz6Vn7Z9Yfj8Pa///77G2L7fQULAKMB3A3YOtgLCpTFS5bY9XVzk+4/hLEGBA6it956SzWc2oATJ06EYkkvNCDKFXlNBmM0jiGAYNx5552YIchjP783sAAwGsAC0Dqov/3t7meeecat0Ur+9LE5dOrUqWZj+48cOaLV490JgHzr6z/PnDmT1q1b51Od3wgWAEYDOA7AdzidTiUvL881adykJkYridV6rVYrtptFenq69v/r3/Ty/5d5SCEEGPorjreLawc0LsU3sAAwGnAz4gDIkdfjun2Xcv1kmvLNmXTl2zO7FDp3UEG+8Vh/xPnz57GKT5MZdeR/hnTixIl06NAhj3V0DNCJjY21DxkypNFb3kjZAIgBQGlpaR7L8wUsAIwGdGQjoOtQZsilrDBzTV6k7drRSLr2i4VUm7eE/nw0jv6ippNLfT3jW3u+YjzP37B161YzptRC/d9kMFb8bzCs+fPnw2CVxmfWAeP50W+PtfrcjejTE3V+HJeQkKAKsW5Vnd8IFgBGAzpCAL49k6X8+XCcrWSL2VGQ+gQVpUyliqQJVLVmlOAIKl89joo3KnQxcx5d/dV61/UPNpqNZfgLxNs/ODMzUzVWm0C5/BbGA2zatIlUVVX05xYUFFgP5x22vfTKK+rQoUObCIik/P9BZfoDCPK5oTq/ESwAjAa0dxwARui58mIdZRtnU2H8JCqyTKRSyyhyWoaQM2EgXbYGkTNpOJUmj6FC6x1UnDaDyrc+7vjrqU0qXWpdK3d7Ij8/X0lOTtbq+CaD4UgPAPMAiLd8hjCgHg6HI/jTTz9VrVar+vOf/9yF1X0guJ6MH5T/P6pmmZmve43t9xUQgCeffNLjJKIsAN0I7ekB/F3dGVx7cBUVJk8mR9RgKg0fSM6oAeSMDiBnjGCUoCWwEaviAqkybgSVpD9Ff87fSnTpgyYigLaCb9R05VzWIsV5fAtdfnc9VR/dQF//OoscWS8qtbZFiisvJsB4XlvgzV1vhirTprqtt+M/gxeAlXvfffddTOlNDz30EI0YMUIzKnfnGAkPAm0L6OrDBJ51V21bQAAwJ6Cn2YlZALoR2qsb8NvPc5Wv37XaL1oVKowcSRWY3Se8vzB+kUbVM7apAJRHDqbKmGFUEjWJyjaH0P+e3eugwu/aBa5/uNnsOhJnu/KLMPoq/Rk6b51ax2TBNVPIkf4IOXc8TeXZC23Xf5dl/u4btQ3yjuRR4JCARv+RnqjTY1QgGu0wOs+XFXpwHMYAYGAPPIa2qvMbwQLAaEB7CcCVEym7K3Y+TYUxo6kkZogQgMHC+IUARAjDj8a2YJw0fMwZCIrtmEFUDS9AiEZJ8gS6sm8x/b/fbXb87+l029W9S23X9r5GpWunUmnKJCpOvJ3KLSOoNHYYVVpHUNWakVS5ZjRVi+2ilClUvus1+r8nNzSJwrsRYIRec7P9yP/OXfy+8VjjPrjksp8/NTU1ANdrD+Tl5ZkxHsHTWAQWgG6E9ogD+PbzHKXmF4tdjg2TqDp5GFUJ464WVQBnrGDEAO3tXyE8gVJsW0B4AiC260VBHFsVLzyC16dTza4n6MquZ6h8/TRRFhYIGUrOhEFif3+qtvQT7Eu1yf2odm0Q1a4WImMZSA7LSLoQN4Eqsxe7rh1fm2T8jq0BYv8x244xOk9PT4buifr/Gl2CycnJ9vz8/ABTO+K9997TPAAWAEabxwFgfb7ag2HpVZvvpWsp/ena6j7iTd9PGLSo/2NRDxi2eMtXWUZTzepxVJ10O1UlBgljDtDe/HWeQB+6LHjN0ptc4vxrSX3E/oFUHRmgTQLqjMMxaEvoK8qFoAwUgjJYW4ikLHywYH8qiQ6gS1GBVBx/JxW+OT/PdabxxJitAcJ6MYrP5MZoboRojYewCKNrlzq/EewBMBrQ1o2AroPxSk22cNNXj6UryYOo1ioMNnpg3WIeUQOoPGEYla4RnkHmHPUvtqdtNTufViuy5lBh4jjh9qNqII4Vb/Wa2D70dVxP+jqhL11N6E9XhcFrC41E9BLVhLppwPGmhyhgQRBnOBoVRfUhfJAQgH5UFtWfyoSXURwzgi69MZ+cH+40G7+rLxBvf2XVqlV2T4tpuKO+KuDOM0Aff/8B/emhWQ/Txo0b263ObwR7AIwGtLUAXD31Rl7xujnCBR9FzuShmpE6heE6w4TBCuMs3XAXVWc9fdqVtygAx5Oa3uMvv07ZXfb6s+SIG02VMGYLGgnFm1+IQE1Sf7psHaK96Wvj+pAr5laqEd5BTaLwEuLFW19UF8piMO14gOZdOGPE+bH9NC8C6wVUrR5JJW++QjUfbjU3/qa+4ZNPPtk9d+5cj11nngjjl1UGOUcA4gSwDsBrr71GWZmZdCI///SZM2cCtAt1AFgAGA2QcQD6N9SNCMC1j3ZTYdJUYZTDRH1cvLXX1C8Mgl6AmOFUnvkIXT+d3qi862pWwF9OrM678sYzVGUdSuX1AnBFGPDlxL50bU0/rSrxdYIQgIRb6WtRJfg6WQjEalEFSB5GzsTh5EwaSpeF4NRVHW6ja1bs701VW6dS7a+WnXbZb2zp8JycnN1YiUcas7s3upE4BkYGw0eLOyb2nPfM07R961bK2b8/IzMzU/n8ozOK8C4C5HU6AlwFYDQg95e/1Cai1Bv9jQhAzantdC51lvAAArUGuStrh2m8bB1GjjXjqDxrvmo8R+L/frIp4/KuZ6go5W7hwgcJ1x7dhn21HoPqiH5UFd2HKuMHirf6cKpOvZ2qXp9KV95+mr7OWeAq3zZHLd/xqKskZQKVWEZQoahmlKTdTX87tsLl+sTzfPstxcGDB3djxV6TzrhBCIK+UVBO9QVPAZ4VYgIwa9CWLVscH330kcff3pGQ3YAsAH4O4XaGwF3DlNPeiJvaGm574w1NAPSu6o0IwPXP96olb5jpojWYytcM14y1cu0ociSMp9KNs+l/T6ZZjefo8bffpKiV2fPpUuL9VBgxkiqXDaDSFQOpXKSO5YF0MWYcFax5gKp3v0SuX7ya948vttvo0nEzzr12whLqzF1JlzKeo4KMeVR2OJyoILvZ67UUWOoLkXxy2C7e6vi/0M8vu/tg9GjJRwwAFvoQhp937Ngx2x/+8Acb2hCMZd4ssAfgx0Do6BdffGGLjo62mc1mB+qdWDACq8Zi/Plzzz3X8BkzxyKVeSCU3RdOnjxZ69duqyqAS9Tpne8m7i7NfpFKMqZR4eo7qGjDA3Qx43FyHk5Cmc0CvQh//XCzuTonQi3fupCK1j5KF5NnUqF1OhWte4xKc0Kp5vja0ziGzjSdCusfX+aaXfnp5pr8zWbX2b1m4/4bwalTp9QpU6ZoBiIDfGD0/fr1o+DgYFq4cKG2FNfatWvNqqqahQEFGMvwB7AA+DGwMkxiYiKNHDlSizdH3REzwIJ42NCIJD9jG3lyH4ib6gtRvnRbTW0gAIArPzXgb59szLt2PJ4uvSm8gexXqTovMaNWzVKMx3qCEJJgZ84a5fLhlNBvPsymq3kbMwqzzIozP02hghvv0msNIM7CI6MVK1Zob3kYPdz7zenptH3nTq1OL4ymQ1rybwTcCOinwAOWsjZFCweVRtiRNLWRAHQHiHuVJKga8zsD2APwU4gHKvTxkMcbzTDbkTS5eRhYALoe2APwY2B+OKNhdhRNbh4GFoCuBxYAP8b4iWObGKaRJjc3DTQe5yuN5YEsAF0PXAXwY4ybOKaJYeopJ4jEtgwzlY14raHJzQOgJwtA1wO6f9kD8FN4EgBp6Gi1RyMhbhLmk+/Zs6fGW2+9VctDzwG69UB8Roo8EBNNGPfLJaZMbh4EEGPThcvIAtCFwB6AH8OTAMBQccMQYLJlyxaNmHcO00qnpaU1fMaNk/uxb/PmzVoKIs+4HwtTYFCKJ48Ao9RYALoWWAD8GM0JAPr5N2zYYP/8888V8MyZM+h31lL9Z1+YmZmpDU4xxgJIwgMQDwwLQBcCNwL6KdCvjPnkxWYTAUAe3P+tW7eqxvNuBNu3b29WAOABIJy18VmMzgx4ACEhIR4nJmUBuEloTgBAjEXHuHHjeTcCVB/kUtXuJq3kNoCuBzQCYlpwT2sSoH2IBeAmAAKAN67JgwCgCoDJIo3n3QiEoGgCYHLzIOCaiH3nXoCuhX379pkx96AnAYAH8Pq2bWQ/d07Rn8doZyAUePr06U0MXxJVAIvF4iouLk4ynttaREREaOWifJMbAcA69h9//DELQBdCZGSkefTo0Y26j0319xtpz9496e09b1OhH41g7DZA3Uw/QEdP1Nkw+g+jBY3ntQafffZZsH6Mu5G45pw5c1xnz5694fH0DP+AzWbrsXDhwnSMYNQbPyhD0DE8fP/+/Q68kIznM9oZCQkJWp++DPYxEotMoCHQ0QazyBw8eFAdPHhwE8OXxHeYN2+eqj+H0bkRHx+vvPTSS1pMiN74sS1HkyL4a/PmzWbDqYyOwIGDv2y08ISR6LM3m82ESUCM5/qC3/3ud+b58+c7mpvjDo1BqampLABdCOLlkQf3310PADwANDRDIDABSqMTGR2DXbt2hT748IMePQBUDbCw5KZNm+xw4Y3ntwSIGcjMzHSNHz++yUOgJ1zBd999lwWgi0B4jemYPAaNfO4aAPFsYX7Il19++bTdbr+hORQZrQRWlF23bp0W7uuuHUByzJgxlLVrF32mqj6JAIKFwsLC0r0tTY12CMxApD+X0TkhDL+HeFmoclWj5u77zAdn0iEO/Lp5QN3+wIEDKuphctopI8VhWl0NQ4d373zLkZubqxjLcYcTJ06E7Ny5U5uSGlUJd/3+knj7JyQk5OnPZ3Q+nD9/3pyfn29bunSptgKUpyXBwe/9y/do0fKFjrMFBWZdEYyOxtmzZ81oDESEnn5yEJPhhmEf6nPPP/+8Qxi2raCgwNa4pDocPXpUydiaYXvhpRccQUFB2hRiIrvZQUCoB6alpSnflcLoTBAuvFk8R7YdWTvoqblParEeciSpSXef9c/V2DFjCfMeNiqI0fGAF3D48OE89MEb+2r1RB5uKG4uqgRw2efPn6+uWbNG3bZtm2qxWNTZs2erISEhDgQYYfSgp7L05WF0oTgXXUF2QZXZOWiz2dQtW7aoMTExqnjju+bMmUMDBw6gH/ygbhVgd/cd9xsNwRglunbtWuKuPz/Cpk2bMoYPH+7RCzBWDWQrLurvoLEhUX+ukdgvRwXKBwIp8uQkpChb5oG8v/326ydubSnxImjOxXdH3G+chyoCJjU1MfwLycnJhL56o7G7Ix4eiAAM3928giY3D4CeRsFg3jwa701LKO+7Mb85wvjhKRw6dEi9dOkSv/39DZ9++mlGUlKStsqMsc5ufGgkPQmAu4dLn+fpGGbXJDwODAvOysrq0LUJGT4A/bH5+flJcXFxWiuuSXcDjYatZ3NdiO7orjz9tZhdg3g5oLoBbxFrG+zbt88unq8AE8P/gTaBB6Y+QP/5Xz/UbqbRYJldj7jPraGnc9G1jHal6OhotPjbTYzOhUPvHlLnL/iZFg2IBh/jA+PpwTHul3MMGvObY2vaCHw9R3ZVGfObI85pzW9pzTnGPG9szTltRf39R5UQ3cqPPvqotlApRnhyi38nBKK6RH3N/M4776CbjyZMmEB9+/bVBnfIh83kRvkl5cPRUQbQXFuEJ/p6HX8WgNb8/rYiro0uXSwzh1GkmzIyKDs721xQUKB890QxOiUqKyuDEeCTkpISumvXLlq1ahU99NBDdP/99xNi/DFqcNiwYcxOSNw7EEFecNcR4+ErMcz7hRde0Gb22bNnz+nU1FRF/egjxfgcMboYzp8/H/zll1+qvz9/Xj3/1VfqVwYWFRWhu0e9cOGCto20sLBQo3gz8P4ust/Bk3kwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDN/x/wHjsXZ4EUApzgAAAABJRU5ErkJggg==";
|
|
4595
4645
|
|
|
4596
4646
|
// src/components/WalletModalContent/index.tsx
|
|
4597
|
-
import { jsx as
|
|
4647
|
+
import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4598
4648
|
function WalletModalContent({
|
|
4599
4649
|
status,
|
|
4600
4650
|
error,
|
|
@@ -4605,7 +4655,7 @@ function WalletModalContent({
|
|
|
4605
4655
|
address,
|
|
4606
4656
|
connected
|
|
4607
4657
|
}) {
|
|
4608
|
-
const pageData =
|
|
4658
|
+
const pageData = useMemo11(() => {
|
|
4609
4659
|
if (status == "success") {
|
|
4610
4660
|
return {
|
|
4611
4661
|
btnText: "Disconnect Wallet",
|
|
@@ -4664,12 +4714,12 @@ function WalletModalContent({
|
|
|
4664
4714
|
statusImage: walletConnectImage
|
|
4665
4715
|
};
|
|
4666
4716
|
}, [visible, connected, status, error, address]);
|
|
4667
|
-
return /* @__PURE__ */
|
|
4668
|
-
/* @__PURE__ */
|
|
4669
|
-
/* @__PURE__ */
|
|
4670
|
-
/* @__PURE__ */
|
|
4717
|
+
return /* @__PURE__ */ jsx22("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
|
|
4718
|
+
/* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-content`, children: [
|
|
4719
|
+
/* @__PURE__ */ jsx22("img", { src: pageData.statusImage }),
|
|
4720
|
+
/* @__PURE__ */ jsx22("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
4671
4721
|
] }),
|
|
4672
|
-
/* @__PURE__ */
|
|
4722
|
+
/* @__PURE__ */ jsx22(
|
|
4673
4723
|
Button,
|
|
4674
4724
|
{
|
|
4675
4725
|
block: true,
|
|
@@ -4684,7 +4734,7 @@ function WalletModalContent({
|
|
|
4684
4734
|
}
|
|
4685
4735
|
|
|
4686
4736
|
// src/components/SOLModal/index.tsx
|
|
4687
|
-
import { jsx as
|
|
4737
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
4688
4738
|
function WalletContent({
|
|
4689
4739
|
onSuccess,
|
|
4690
4740
|
type
|
|
@@ -4692,17 +4742,17 @@ function WalletContent({
|
|
|
4692
4742
|
const { setVisible, visible } = useWalletModal();
|
|
4693
4743
|
const wallet = useWallet2();
|
|
4694
4744
|
const { events, login } = useMatch();
|
|
4695
|
-
const [status, setStatus] =
|
|
4745
|
+
const [status, setStatus] = useState19("");
|
|
4696
4746
|
const statusRef = React7.useRef(status);
|
|
4697
|
-
const [error, setError] =
|
|
4698
|
-
|
|
4747
|
+
const [error, setError] = useState19("");
|
|
4748
|
+
useEffect17(() => {
|
|
4699
4749
|
const init = async () => {
|
|
4700
4750
|
await wallet.disconnect();
|
|
4701
4751
|
setVisible(true);
|
|
4702
4752
|
};
|
|
4703
4753
|
init();
|
|
4704
4754
|
}, []);
|
|
4705
|
-
|
|
4755
|
+
useEffect17(() => {
|
|
4706
4756
|
if (wallet.connected) {
|
|
4707
4757
|
console.log("wallet.connected", wallet.connected);
|
|
4708
4758
|
toLoginInWallet();
|
|
@@ -4766,7 +4816,7 @@ function WalletContent({
|
|
|
4766
4816
|
statusRef.current = "";
|
|
4767
4817
|
}
|
|
4768
4818
|
};
|
|
4769
|
-
return /* @__PURE__ */
|
|
4819
|
+
return /* @__PURE__ */ jsx23(
|
|
4770
4820
|
WalletModalContent,
|
|
4771
4821
|
{
|
|
4772
4822
|
connected: wallet.connected,
|
|
@@ -4826,20 +4876,20 @@ function SOLConnectModal({
|
|
|
4826
4876
|
onSuccess,
|
|
4827
4877
|
...props
|
|
4828
4878
|
}) {
|
|
4829
|
-
const intl =
|
|
4830
|
-
return /* @__PURE__ */
|
|
4879
|
+
const intl = useIntl11();
|
|
4880
|
+
return /* @__PURE__ */ jsx23(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
4831
4881
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
4832
4882
|
}, {
|
|
4833
4883
|
name: "SOL"
|
|
4834
|
-
}), children: /* @__PURE__ */
|
|
4884
|
+
}), children: /* @__PURE__ */ jsx23(ConnectionProvider, { endpoint: clusterApiUrl("devnet"), children: /* @__PURE__ */ jsx23(WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ jsx23(WalletModalProvider, { children: /* @__PURE__ */ jsx23(WalletContent, { onSuccess, type }) }) }) }) });
|
|
4835
4885
|
}
|
|
4836
4886
|
function SOLModal(props) {
|
|
4837
|
-
return props.isOpen && /* @__PURE__ */
|
|
4887
|
+
return props.isOpen && /* @__PURE__ */ jsx23(SOLConnectModal, { ...props });
|
|
4838
4888
|
}
|
|
4839
4889
|
|
|
4840
4890
|
// src/components/TRONModal/index.tsx
|
|
4841
|
-
import React8, { useEffect as
|
|
4842
|
-
import { useIntl as
|
|
4891
|
+
import React8, { useEffect as useEffect19, useMemo as useMemo12, useState as useState21 } from "react";
|
|
4892
|
+
import { useIntl as useIntl12 } from "react-intl";
|
|
4843
4893
|
|
|
4844
4894
|
// src/lib/tron/TronLinkAdapter.ts
|
|
4845
4895
|
var TronLinkAdapter = class {
|
|
@@ -4872,7 +4922,7 @@ var TronLinkAdapter = class {
|
|
|
4872
4922
|
};
|
|
4873
4923
|
|
|
4874
4924
|
// src/hooks/useTRONWallet.ts
|
|
4875
|
-
import { useEffect as
|
|
4925
|
+
import { useEffect as useEffect18, useState as useState20 } from "react";
|
|
4876
4926
|
|
|
4877
4927
|
// src/lib/tron/BitgetAdapter.ts
|
|
4878
4928
|
var BitgetAdapter = class {
|
|
@@ -4917,9 +4967,9 @@ var OKXAdapter = class {
|
|
|
4917
4967
|
// src/hooks/useTRONWallet.ts
|
|
4918
4968
|
var useTRONWallet = () => {
|
|
4919
4969
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
4920
|
-
const [installedWallets, setInstalledWallets] =
|
|
4921
|
-
const [address, setAddress] =
|
|
4922
|
-
|
|
4970
|
+
const [installedWallets, setInstalledWallets] = useState20([]);
|
|
4971
|
+
const [address, setAddress] = useState20(null);
|
|
4972
|
+
useEffect18(() => {
|
|
4923
4973
|
const getInstalled = async () => {
|
|
4924
4974
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
4925
4975
|
wallet: wallet2,
|
|
@@ -4929,11 +4979,11 @@ var useTRONWallet = () => {
|
|
|
4929
4979
|
};
|
|
4930
4980
|
getInstalled();
|
|
4931
4981
|
}, []);
|
|
4932
|
-
const [wallet, chooseWallet] =
|
|
4982
|
+
const [wallet, chooseWallet] = useState20(null);
|
|
4933
4983
|
const onConnect = async () => {
|
|
4934
4984
|
setAddress(await wallet.connect());
|
|
4935
4985
|
};
|
|
4936
|
-
|
|
4986
|
+
useEffect18(() => {
|
|
4937
4987
|
if (!wallet) {
|
|
4938
4988
|
setAddress(null);
|
|
4939
4989
|
}
|
|
@@ -4949,25 +4999,25 @@ var useTRONWallet = () => {
|
|
|
4949
4999
|
};
|
|
4950
5000
|
|
|
4951
5001
|
// src/components/TRONModal/index.tsx
|
|
4952
|
-
import { jsx as
|
|
5002
|
+
import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4953
5003
|
function TRONConnectModal({
|
|
4954
5004
|
type = "login",
|
|
4955
5005
|
onSuccess,
|
|
4956
5006
|
...props
|
|
4957
5007
|
}) {
|
|
4958
5008
|
const isDownMd = useDownMd();
|
|
4959
|
-
const intl =
|
|
5009
|
+
const intl = useIntl12();
|
|
4960
5010
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
|
|
4961
5011
|
const iconMaps = {
|
|
4962
|
-
tronlink: /* @__PURE__ */
|
|
4963
|
-
bitget: /* @__PURE__ */
|
|
4964
|
-
okx: /* @__PURE__ */
|
|
5012
|
+
tronlink: /* @__PURE__ */ jsx24(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
|
|
5013
|
+
bitget: /* @__PURE__ */ jsx24(BitgetIcon, { size: isDownMd ? 36 : 40 }),
|
|
5014
|
+
okx: /* @__PURE__ */ jsx24(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
4965
5015
|
};
|
|
4966
5016
|
const { events, login } = useMatch();
|
|
4967
|
-
const [status, setStatus] =
|
|
5017
|
+
const [status, setStatus] = useState21("");
|
|
4968
5018
|
const statusRef = React8.useRef(status);
|
|
4969
|
-
const [error, setError] =
|
|
4970
|
-
const connected =
|
|
5019
|
+
const [error, setError] = useState21("");
|
|
5020
|
+
const connected = useMemo12(() => {
|
|
4971
5021
|
return !!address;
|
|
4972
5022
|
}, [address]);
|
|
4973
5023
|
const disconnect = async () => {
|
|
@@ -5035,7 +5085,7 @@ function TRONConnectModal({
|
|
|
5035
5085
|
statusRef.current = "";
|
|
5036
5086
|
}
|
|
5037
5087
|
};
|
|
5038
|
-
|
|
5088
|
+
useEffect19(() => {
|
|
5039
5089
|
if (wallet) {
|
|
5040
5090
|
console.log("onConnect");
|
|
5041
5091
|
onConnect();
|
|
@@ -5043,21 +5093,21 @@ function TRONConnectModal({
|
|
|
5043
5093
|
setStatus("");
|
|
5044
5094
|
}
|
|
5045
5095
|
}, [wallet]);
|
|
5046
|
-
|
|
5096
|
+
useEffect19(() => {
|
|
5047
5097
|
if (address) {
|
|
5048
5098
|
toLoginInWallet();
|
|
5049
5099
|
}
|
|
5050
5100
|
}, [address]);
|
|
5051
|
-
|
|
5101
|
+
useEffect19(() => {
|
|
5052
5102
|
if (!props.isOpen) {
|
|
5053
5103
|
disconnect();
|
|
5054
5104
|
}
|
|
5055
5105
|
}, [props.isOpen]);
|
|
5056
|
-
return /* @__PURE__ */
|
|
5106
|
+
return /* @__PURE__ */ jsx24(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
5057
5107
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
5058
5108
|
}, {
|
|
5059
5109
|
name: "TRON"
|
|
5060
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */
|
|
5110
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx24(
|
|
5061
5111
|
WalletModalContent,
|
|
5062
5112
|
{
|
|
5063
5113
|
error,
|
|
@@ -5070,9 +5120,9 @@ function TRONConnectModal({
|
|
|
5070
5120
|
setVisible: () => {
|
|
5071
5121
|
}
|
|
5072
5122
|
}
|
|
5073
|
-
) : /* @__PURE__ */
|
|
5123
|
+
) : /* @__PURE__ */ jsx24("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
|
|
5074
5124
|
installedWallets.map((wallet2) => {
|
|
5075
|
-
return /* @__PURE__ */
|
|
5125
|
+
return /* @__PURE__ */ jsx24(
|
|
5076
5126
|
RecommendItem,
|
|
5077
5127
|
{
|
|
5078
5128
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -5085,14 +5135,14 @@ function TRONConnectModal({
|
|
|
5085
5135
|
);
|
|
5086
5136
|
}),
|
|
5087
5137
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
5088
|
-
return /* @__PURE__ */
|
|
5138
|
+
return /* @__PURE__ */ jsx24(
|
|
5089
5139
|
RecommendItem,
|
|
5090
5140
|
{
|
|
5091
5141
|
icon: iconMaps[wallet2.walletKey],
|
|
5092
5142
|
name: wallet2.name,
|
|
5093
5143
|
onClick: () => {
|
|
5094
5144
|
},
|
|
5095
|
-
footer: /* @__PURE__ */
|
|
5145
|
+
footer: /* @__PURE__ */ jsx24(Button, { size: "sm", onClick: () => {
|
|
5096
5146
|
window.open(wallet2.website);
|
|
5097
5147
|
}, children: "Install" })
|
|
5098
5148
|
},
|
|
@@ -5102,12 +5152,12 @@ function TRONConnectModal({
|
|
|
5102
5152
|
] }) }) });
|
|
5103
5153
|
}
|
|
5104
5154
|
function TRONModal(props) {
|
|
5105
|
-
return props.isOpen && /* @__PURE__ */
|
|
5155
|
+
return props.isOpen && /* @__PURE__ */ jsx24(TRONConnectModal, { ...props, type: props.type });
|
|
5106
5156
|
}
|
|
5107
5157
|
|
|
5108
5158
|
// src/components/TONModal/index.tsx
|
|
5109
|
-
import React9, { useEffect as
|
|
5110
|
-
import { useIntl as
|
|
5159
|
+
import React9, { useEffect as useEffect20, useState as useState22 } from "react";
|
|
5160
|
+
import { useIntl as useIntl13 } from "react-intl";
|
|
5111
5161
|
import {
|
|
5112
5162
|
TonConnectUIProvider,
|
|
5113
5163
|
useTonAddress,
|
|
@@ -5115,21 +5165,21 @@ import {
|
|
|
5115
5165
|
useTonConnectUI,
|
|
5116
5166
|
useTonWallet
|
|
5117
5167
|
} from "@tonconnect/ui-react";
|
|
5118
|
-
import { jsx as
|
|
5168
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
5119
5169
|
function WalletContent2({
|
|
5120
5170
|
onSuccess,
|
|
5121
5171
|
type
|
|
5122
5172
|
}) {
|
|
5123
5173
|
const { events, login } = useMatch();
|
|
5124
|
-
const [connected, setConnected] =
|
|
5174
|
+
const [connected, setConnected] = useState22(false);
|
|
5125
5175
|
const wallet = useTonWallet();
|
|
5126
5176
|
const userFriendlyAddress = useTonAddress();
|
|
5127
5177
|
const [tonConnectUI] = useTonConnectUI();
|
|
5128
5178
|
const { state, open, close } = useTonConnectModal();
|
|
5129
|
-
const [status, setStatus] =
|
|
5179
|
+
const [status, setStatus] = useState22("");
|
|
5130
5180
|
const statusRef = React9.useRef(status);
|
|
5131
|
-
const [error, setError] =
|
|
5132
|
-
|
|
5181
|
+
const [error, setError] = useState22("");
|
|
5182
|
+
useEffect20(() => {
|
|
5133
5183
|
const init = async () => {
|
|
5134
5184
|
if (wallet) {
|
|
5135
5185
|
await tonConnectUI.disconnect();
|
|
@@ -5202,7 +5252,7 @@ function WalletContent2({
|
|
|
5202
5252
|
}
|
|
5203
5253
|
});
|
|
5204
5254
|
}, []);
|
|
5205
|
-
|
|
5255
|
+
useEffect20(() => {
|
|
5206
5256
|
if (wallet) {
|
|
5207
5257
|
setConnected(true);
|
|
5208
5258
|
console.log("Wallet connected:", wallet);
|
|
@@ -5213,7 +5263,7 @@ function WalletContent2({
|
|
|
5213
5263
|
setStatus("");
|
|
5214
5264
|
}
|
|
5215
5265
|
}, [wallet]);
|
|
5216
|
-
|
|
5266
|
+
useEffect20(() => {
|
|
5217
5267
|
console.log({
|
|
5218
5268
|
state,
|
|
5219
5269
|
wallet
|
|
@@ -5242,7 +5292,7 @@ function WalletContent2({
|
|
|
5242
5292
|
}
|
|
5243
5293
|
}
|
|
5244
5294
|
}, [state]);
|
|
5245
|
-
return /* @__PURE__ */
|
|
5295
|
+
return /* @__PURE__ */ jsx25(
|
|
5246
5296
|
WalletModalContent,
|
|
5247
5297
|
{
|
|
5248
5298
|
connected,
|
|
@@ -5273,28 +5323,28 @@ function TONConnectModal({
|
|
|
5273
5323
|
onSuccess,
|
|
5274
5324
|
...props
|
|
5275
5325
|
}) {
|
|
5276
|
-
const intl =
|
|
5326
|
+
const intl = useIntl13();
|
|
5277
5327
|
const { endpoints, appid } = useLocalStore_default();
|
|
5278
5328
|
const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
|
|
5279
|
-
return /* @__PURE__ */
|
|
5329
|
+
return /* @__PURE__ */ jsx25(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
5280
5330
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
5281
5331
|
}, {
|
|
5282
5332
|
name: "TON"
|
|
5283
|
-
}), children: /* @__PURE__ */
|
|
5333
|
+
}), children: /* @__PURE__ */ jsx25(
|
|
5284
5334
|
TonConnectUIProvider,
|
|
5285
5335
|
{
|
|
5286
5336
|
manifestUrl,
|
|
5287
|
-
children: /* @__PURE__ */
|
|
5337
|
+
children: /* @__PURE__ */ jsx25(WalletContent2, { onSuccess, type })
|
|
5288
5338
|
}
|
|
5289
5339
|
) });
|
|
5290
5340
|
}
|
|
5291
5341
|
function TONModal(props) {
|
|
5292
|
-
return props.isOpen && /* @__PURE__ */
|
|
5342
|
+
return props.isOpen && /* @__PURE__ */ jsx25(TONConnectModal, { ...props });
|
|
5293
5343
|
}
|
|
5294
5344
|
|
|
5295
5345
|
// src/components/BTCModal/index.tsx
|
|
5296
|
-
import React10, { useEffect as
|
|
5297
|
-
import { useIntl as
|
|
5346
|
+
import React10, { useEffect as useEffect22, useMemo as useMemo13, useState as useState24 } from "react";
|
|
5347
|
+
import { useIntl as useIntl14 } from "react-intl";
|
|
5298
5348
|
|
|
5299
5349
|
// src/lib/btc/UnisatAdapter.ts
|
|
5300
5350
|
var UnisatAdapter = class {
|
|
@@ -5448,12 +5498,12 @@ var LeatherAdapter = class {
|
|
|
5448
5498
|
};
|
|
5449
5499
|
|
|
5450
5500
|
// src/hooks/useBTCWallet.ts
|
|
5451
|
-
import { useEffect as
|
|
5501
|
+
import { useEffect as useEffect21, useState as useState23 } from "react";
|
|
5452
5502
|
var useBTCWallet = () => {
|
|
5453
5503
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
5454
|
-
const [installedWallets, setInstalledWallets] =
|
|
5455
|
-
const [address, setAddress] =
|
|
5456
|
-
|
|
5504
|
+
const [installedWallets, setInstalledWallets] = useState23([]);
|
|
5505
|
+
const [address, setAddress] = useState23(null);
|
|
5506
|
+
useEffect21(() => {
|
|
5457
5507
|
const getInstalled = async () => {
|
|
5458
5508
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
5459
5509
|
wallet: wallet2,
|
|
@@ -5463,11 +5513,11 @@ var useBTCWallet = () => {
|
|
|
5463
5513
|
};
|
|
5464
5514
|
getInstalled();
|
|
5465
5515
|
}, []);
|
|
5466
|
-
const [wallet, chooseWallet] =
|
|
5516
|
+
const [wallet, chooseWallet] = useState23(null);
|
|
5467
5517
|
const onConnect = async () => {
|
|
5468
5518
|
setAddress(await wallet.connect());
|
|
5469
5519
|
};
|
|
5470
|
-
|
|
5520
|
+
useEffect21(() => {
|
|
5471
5521
|
if (!wallet) {
|
|
5472
5522
|
setAddress(null);
|
|
5473
5523
|
}
|
|
@@ -5483,25 +5533,25 @@ var useBTCWallet = () => {
|
|
|
5483
5533
|
};
|
|
5484
5534
|
|
|
5485
5535
|
// src/components/BTCModal/index.tsx
|
|
5486
|
-
import { jsx as
|
|
5536
|
+
import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5487
5537
|
function BTCConnectModal({
|
|
5488
5538
|
type = "login",
|
|
5489
5539
|
onSuccess,
|
|
5490
5540
|
...props
|
|
5491
5541
|
}) {
|
|
5492
5542
|
const isDownMd = useDownMd();
|
|
5493
|
-
const intl =
|
|
5543
|
+
const intl = useIntl14();
|
|
5494
5544
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
|
|
5495
5545
|
const iconMaps = {
|
|
5496
|
-
leather: /* @__PURE__ */
|
|
5497
|
-
unisat: /* @__PURE__ */
|
|
5498
|
-
xverse: /* @__PURE__ */
|
|
5546
|
+
leather: /* @__PURE__ */ jsx26(LeatherIcon, { size: isDownMd ? 36 : 40 }),
|
|
5547
|
+
unisat: /* @__PURE__ */ jsx26(UnisatIcon, { size: isDownMd ? 36 : 40 }),
|
|
5548
|
+
xverse: /* @__PURE__ */ jsx26(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
5499
5549
|
};
|
|
5500
5550
|
const { events, login } = useMatch();
|
|
5501
|
-
const [status, setStatus] =
|
|
5551
|
+
const [status, setStatus] = useState24("");
|
|
5502
5552
|
const statusRef = React10.useRef(status);
|
|
5503
|
-
const [error, setError] =
|
|
5504
|
-
const connected =
|
|
5553
|
+
const [error, setError] = useState24("");
|
|
5554
|
+
const connected = useMemo13(() => {
|
|
5505
5555
|
return !!address;
|
|
5506
5556
|
}, [address]);
|
|
5507
5557
|
const disconnect = async () => {
|
|
@@ -5565,7 +5615,7 @@ function BTCConnectModal({
|
|
|
5565
5615
|
statusRef.current = "";
|
|
5566
5616
|
}
|
|
5567
5617
|
};
|
|
5568
|
-
|
|
5618
|
+
useEffect22(() => {
|
|
5569
5619
|
if (wallet) {
|
|
5570
5620
|
console.log("onConnect");
|
|
5571
5621
|
try {
|
|
@@ -5578,12 +5628,12 @@ function BTCConnectModal({
|
|
|
5578
5628
|
setStatus("");
|
|
5579
5629
|
}
|
|
5580
5630
|
}, [wallet]);
|
|
5581
|
-
|
|
5631
|
+
useEffect22(() => {
|
|
5582
5632
|
if (address) {
|
|
5583
5633
|
toLoginInWallet();
|
|
5584
5634
|
}
|
|
5585
5635
|
}, [address]);
|
|
5586
|
-
|
|
5636
|
+
useEffect22(() => {
|
|
5587
5637
|
if (!props.isOpen) {
|
|
5588
5638
|
disconnect();
|
|
5589
5639
|
}
|
|
@@ -5595,11 +5645,11 @@ function BTCConnectModal({
|
|
|
5595
5645
|
statusRef.current = "";
|
|
5596
5646
|
setError("");
|
|
5597
5647
|
};
|
|
5598
|
-
return /* @__PURE__ */
|
|
5648
|
+
return /* @__PURE__ */ jsx26(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
5599
5649
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
5600
5650
|
}, {
|
|
5601
5651
|
name: "BTC"
|
|
5602
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */
|
|
5652
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx26(
|
|
5603
5653
|
WalletModalContent,
|
|
5604
5654
|
{
|
|
5605
5655
|
error,
|
|
@@ -5612,9 +5662,9 @@ function BTCConnectModal({
|
|
|
5612
5662
|
setVisible: () => {
|
|
5613
5663
|
}
|
|
5614
5664
|
}
|
|
5615
|
-
) : /* @__PURE__ */
|
|
5665
|
+
) : /* @__PURE__ */ jsx26("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
|
|
5616
5666
|
installedWallets.map((wallet2) => {
|
|
5617
|
-
return /* @__PURE__ */
|
|
5667
|
+
return /* @__PURE__ */ jsx26(
|
|
5618
5668
|
RecommendItem,
|
|
5619
5669
|
{
|
|
5620
5670
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -5627,14 +5677,14 @@ function BTCConnectModal({
|
|
|
5627
5677
|
);
|
|
5628
5678
|
}),
|
|
5629
5679
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
5630
|
-
return /* @__PURE__ */
|
|
5680
|
+
return /* @__PURE__ */ jsx26(
|
|
5631
5681
|
RecommendItem,
|
|
5632
5682
|
{
|
|
5633
5683
|
icon: iconMaps[wallet2.walletKey],
|
|
5634
5684
|
name: wallet2.name,
|
|
5635
5685
|
onClick: () => {
|
|
5636
5686
|
},
|
|
5637
|
-
footer: /* @__PURE__ */
|
|
5687
|
+
footer: /* @__PURE__ */ jsx26(Button, { size: "sm", onClick: () => {
|
|
5638
5688
|
window.open(wallet2.website);
|
|
5639
5689
|
}, children: "Install" })
|
|
5640
5690
|
},
|
|
@@ -5644,23 +5694,23 @@ function BTCConnectModal({
|
|
|
5644
5694
|
] }) }) });
|
|
5645
5695
|
}
|
|
5646
5696
|
function BTCModal(props) {
|
|
5647
|
-
return props.isOpen && /* @__PURE__ */
|
|
5697
|
+
return props.isOpen && /* @__PURE__ */ jsx26(BTCConnectModal, { ...props });
|
|
5648
5698
|
}
|
|
5649
5699
|
|
|
5650
5700
|
// src/components/WalletModal/index.tsx
|
|
5651
|
-
import { useMemo as
|
|
5652
|
-
import { useIntl as
|
|
5653
|
-
import { jsx as
|
|
5701
|
+
import { useMemo as useMemo14 } from "react";
|
|
5702
|
+
import { useIntl as useIntl15 } from "react-intl";
|
|
5703
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
5654
5704
|
function WalletConnectModal({
|
|
5655
5705
|
type,
|
|
5656
5706
|
methods: _methods,
|
|
5657
5707
|
...props
|
|
5658
5708
|
}) {
|
|
5659
|
-
const intl =
|
|
5709
|
+
const intl = useIntl15();
|
|
5660
5710
|
const { walletMap } = useWalletConfig();
|
|
5661
5711
|
const { bind, login } = useUserInfo();
|
|
5662
5712
|
const config = useAppConfig();
|
|
5663
|
-
const methods =
|
|
5713
|
+
const methods = useMemo14(() => {
|
|
5664
5714
|
if (_methods) return _methods;
|
|
5665
5715
|
if (!config.platform) {
|
|
5666
5716
|
return [];
|
|
@@ -5668,13 +5718,13 @@ function WalletConnectModal({
|
|
|
5668
5718
|
const platform = config.platform.map((p) => p.toLowerCase());
|
|
5669
5719
|
return WALLET_METHODS.filter((m) => platform.includes(m));
|
|
5670
5720
|
}, [config.platform, _methods]);
|
|
5671
|
-
return /* @__PURE__ */
|
|
5721
|
+
return /* @__PURE__ */ jsx27(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
5672
5722
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
5673
5723
|
}, {
|
|
5674
5724
|
name: ""
|
|
5675
|
-
}), children: /* @__PURE__ */
|
|
5725
|
+
}), children: /* @__PURE__ */ jsx27("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsx27("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
|
|
5676
5726
|
const m = walletMap[method];
|
|
5677
|
-
return /* @__PURE__ */
|
|
5727
|
+
return /* @__PURE__ */ jsx27(
|
|
5678
5728
|
RecommendItem,
|
|
5679
5729
|
{
|
|
5680
5730
|
icon: m?.icon,
|
|
@@ -5688,21 +5738,21 @@ function WalletConnectModal({
|
|
|
5688
5738
|
}) }) }) });
|
|
5689
5739
|
}
|
|
5690
5740
|
function WalletModal(props) {
|
|
5691
|
-
return props.isOpen && /* @__PURE__ */
|
|
5741
|
+
return props.isOpen && /* @__PURE__ */ jsx27(WalletConnectModal, { ...props });
|
|
5692
5742
|
}
|
|
5693
5743
|
|
|
5694
5744
|
// src/components/AlphaAvatar/index.tsx
|
|
5695
|
-
import { useEffect as
|
|
5696
|
-
import { jsx as
|
|
5745
|
+
import { useEffect as useEffect23, useState as useState25 } from "react";
|
|
5746
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
5697
5747
|
function AlphaAvatar2({ name, size = 40, className = "" }) {
|
|
5698
|
-
const [avatar, setAvatar] =
|
|
5699
|
-
|
|
5748
|
+
const [avatar, setAvatar] = useState25(void 0);
|
|
5749
|
+
useEffect23(() => {
|
|
5700
5750
|
if (name) {
|
|
5701
5751
|
const char = name[0].toUpperCase();
|
|
5702
5752
|
setAvatar(char);
|
|
5703
5753
|
}
|
|
5704
5754
|
}, [name]);
|
|
5705
|
-
return /* @__PURE__ */
|
|
5755
|
+
return /* @__PURE__ */ jsx28("div", { className: `matchid-alpha-avatar ${className}`, style: {
|
|
5706
5756
|
width: size,
|
|
5707
5757
|
height: size,
|
|
5708
5758
|
fontSize: Math.ceil(size / 2)
|
|
@@ -5710,7 +5760,7 @@ function AlphaAvatar2({ name, size = 40, className = "" }) {
|
|
|
5710
5760
|
}
|
|
5711
5761
|
|
|
5712
5762
|
// src/components/WalletAsset/index.tsx
|
|
5713
|
-
import { jsx as
|
|
5763
|
+
import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
5714
5764
|
function WalletAsset({
|
|
5715
5765
|
onAssetClick,
|
|
5716
5766
|
matchWalletAssetsOptions
|
|
@@ -5720,7 +5770,7 @@ function WalletAsset({
|
|
|
5720
5770
|
list: walletAssets.mergedAssets
|
|
5721
5771
|
});
|
|
5722
5772
|
const { list } = useMatchChain();
|
|
5723
|
-
return /* @__PURE__ */
|
|
5773
|
+
return /* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-list", children: matchWalletAssetList.list.map((n, index) => {
|
|
5724
5774
|
const clickFunc = onAssetClick && onAssetClick(n);
|
|
5725
5775
|
const chain = list?.find((m) => m.id.toString() === n.chain_id);
|
|
5726
5776
|
const getFooterColor = () => {
|
|
@@ -5735,11 +5785,11 @@ function WalletAsset({
|
|
|
5735
5785
|
}
|
|
5736
5786
|
return "";
|
|
5737
5787
|
};
|
|
5738
|
-
return /* @__PURE__ */
|
|
5788
|
+
return /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-item`, onClick: clickFunc, style: {
|
|
5739
5789
|
cursor: clickFunc ? "pointer" : "default"
|
|
5740
5790
|
}, children: [
|
|
5741
|
-
/* @__PURE__ */
|
|
5742
|
-
n.icon ? /* @__PURE__ */
|
|
5791
|
+
/* @__PURE__ */ jsxs19("div", { className: "matchid-wallet-asset-logo", title: n.symbol || n.name || "", children: [
|
|
5792
|
+
n.icon ? /* @__PURE__ */ jsx29("img", { src: n.icon, alt: n.symbol, className: `matchid-wallet-asset-icon` }) : /* @__PURE__ */ jsx29(
|
|
5743
5793
|
AlphaAvatar2,
|
|
5744
5794
|
{
|
|
5745
5795
|
className: `matchid-wallet-asset-icon`,
|
|
@@ -5747,12 +5797,12 @@ function WalletAsset({
|
|
|
5747
5797
|
name: n.symbol || n.name || ""
|
|
5748
5798
|
}
|
|
5749
5799
|
),
|
|
5750
|
-
chain?.iconUrl && /* @__PURE__ */
|
|
5800
|
+
chain?.iconUrl && /* @__PURE__ */ jsx29("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-wallet-asset-chain` })
|
|
5751
5801
|
] }),
|
|
5752
|
-
/* @__PURE__ */
|
|
5753
|
-
/* @__PURE__ */
|
|
5754
|
-
"price" in n && /* @__PURE__ */
|
|
5755
|
-
/* @__PURE__ */
|
|
5802
|
+
/* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-info`, children: [
|
|
5803
|
+
/* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-name`, children: n.symbol }),
|
|
5804
|
+
"price" in n && /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-content`, children: [
|
|
5805
|
+
/* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-price", children: /* @__PURE__ */ jsx29(
|
|
5756
5806
|
NumberFormatter,
|
|
5757
5807
|
{
|
|
5758
5808
|
value: n.price,
|
|
@@ -5760,7 +5810,7 @@ function WalletAsset({
|
|
|
5760
5810
|
tFixNum: 2
|
|
5761
5811
|
}
|
|
5762
5812
|
) }),
|
|
5763
|
-
/* @__PURE__ */
|
|
5813
|
+
/* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-value", children: /* @__PURE__ */ jsx29(
|
|
5764
5814
|
NumberFormatter,
|
|
5765
5815
|
{
|
|
5766
5816
|
value: n.value,
|
|
@@ -5769,15 +5819,15 @@ function WalletAsset({
|
|
|
5769
5819
|
}
|
|
5770
5820
|
) })
|
|
5771
5821
|
] }),
|
|
5772
|
-
/* @__PURE__ */
|
|
5773
|
-
/* @__PURE__ */
|
|
5822
|
+
/* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-footer`, children: [
|
|
5823
|
+
/* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-balance`, children: /* @__PURE__ */ jsx29(
|
|
5774
5824
|
NumberFormatter,
|
|
5775
5825
|
{
|
|
5776
5826
|
value: n.balance,
|
|
5777
5827
|
tFixNum: 3
|
|
5778
5828
|
}
|
|
5779
5829
|
) }),
|
|
5780
|
-
"price_change_24h" in n && /* @__PURE__ */
|
|
5830
|
+
"price_change_24h" in n && /* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-change ${getFooterColor()}`, children: /* @__PURE__ */ jsx29(
|
|
5781
5831
|
NumberFormatter,
|
|
5782
5832
|
{
|
|
5783
5833
|
prefix: `${(n?.price_change_24h || 0) < 0 ? "-" : "+"} `,
|
|
@@ -5793,10 +5843,10 @@ function WalletAsset({
|
|
|
5793
5843
|
}
|
|
5794
5844
|
|
|
5795
5845
|
// src/components/TokenSend/index.tsx
|
|
5796
|
-
import { useEffect as
|
|
5846
|
+
import { useEffect as useEffect24, useMemo as useMemo15, useState as useState26 } from "react";
|
|
5797
5847
|
import { defineChain as defineChain3, encodeFunctionData as encodeFunctionData2, http as http5, parseUnits as parseUnits2 } from "viem";
|
|
5798
|
-
import { FormattedMessage as
|
|
5799
|
-
import { jsx as
|
|
5848
|
+
import { FormattedMessage as FormattedMessage11, useIntl as useIntl16 } from "react-intl";
|
|
5849
|
+
import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5800
5850
|
function Input2({
|
|
5801
5851
|
onChange,
|
|
5802
5852
|
placeholder,
|
|
@@ -5806,8 +5856,8 @@ function Input2({
|
|
|
5806
5856
|
error,
|
|
5807
5857
|
size = "df"
|
|
5808
5858
|
}) {
|
|
5809
|
-
return /* @__PURE__ */
|
|
5810
|
-
/* @__PURE__ */
|
|
5859
|
+
return /* @__PURE__ */ jsxs20("div", { className: `matchid-token-input-box ${"matchid-token-input-" + size}`, children: [
|
|
5860
|
+
/* @__PURE__ */ jsx30(
|
|
5811
5861
|
"input",
|
|
5812
5862
|
{
|
|
5813
5863
|
placeholder,
|
|
@@ -5818,7 +5868,7 @@ function Input2({
|
|
|
5818
5868
|
className: `matchid-token-input ${error ? "matchid-token-input-error" : ""}`
|
|
5819
5869
|
}
|
|
5820
5870
|
),
|
|
5821
|
-
error && /* @__PURE__ */
|
|
5871
|
+
error && /* @__PURE__ */ jsx30("div", { className: "matchid-token-input-error-text", children: error })
|
|
5822
5872
|
] });
|
|
5823
5873
|
}
|
|
5824
5874
|
function TokenSend({
|
|
@@ -5828,25 +5878,25 @@ function TokenSend({
|
|
|
5828
5878
|
onBack
|
|
5829
5879
|
}) {
|
|
5830
5880
|
const { list: chainList } = useMatchChain();
|
|
5831
|
-
const intl =
|
|
5881
|
+
const intl = useIntl16();
|
|
5832
5882
|
const { createWalletClient: createWalletClient2 } = useWallet();
|
|
5833
5883
|
const isNative = token.address.toLowerCase() == NATIVE_TOKEN_ADDRESS;
|
|
5834
|
-
const chain =
|
|
5884
|
+
const chain = useMemo15(() => {
|
|
5835
5885
|
return chainList?.find((m) => m.id.toString() === token.chain_id);
|
|
5836
5886
|
}, [chainList, token.chain_id]);
|
|
5837
|
-
const walletClient =
|
|
5887
|
+
const walletClient = useMemo15(() => {
|
|
5838
5888
|
return createWalletClient2({
|
|
5839
5889
|
// @ts-ignore
|
|
5840
5890
|
chain: defineChain3(chain),
|
|
5841
5891
|
transport: http5()
|
|
5842
5892
|
});
|
|
5843
5893
|
}, [chain]);
|
|
5844
|
-
const [amount, setAmount] =
|
|
5845
|
-
const [address, setAddress] =
|
|
5846
|
-
const [loading, setLoading] =
|
|
5847
|
-
const [sending, setSending] =
|
|
5848
|
-
const [txError, setTxError] =
|
|
5849
|
-
const transaction =
|
|
5894
|
+
const [amount, setAmount] = useState26("");
|
|
5895
|
+
const [address, setAddress] = useState26("");
|
|
5896
|
+
const [loading, setLoading] = useState26(false);
|
|
5897
|
+
const [sending, setSending] = useState26(false);
|
|
5898
|
+
const [txError, setTxError] = useState26("");
|
|
5899
|
+
const transaction = useMemo15(() => {
|
|
5850
5900
|
if (!amount || !address) {
|
|
5851
5901
|
return;
|
|
5852
5902
|
}
|
|
@@ -5901,7 +5951,7 @@ function TokenSend({
|
|
|
5901
5951
|
setLoading(false);
|
|
5902
5952
|
}
|
|
5903
5953
|
};
|
|
5904
|
-
const error =
|
|
5954
|
+
const error = useMemo15(() => {
|
|
5905
5955
|
setTxError("");
|
|
5906
5956
|
let amountError = "";
|
|
5907
5957
|
let addressError = "";
|
|
@@ -5944,7 +5994,7 @@ function TokenSend({
|
|
|
5944
5994
|
setAmount(value);
|
|
5945
5995
|
}
|
|
5946
5996
|
};
|
|
5947
|
-
const canSend =
|
|
5997
|
+
const canSend = useMemo15(() => {
|
|
5948
5998
|
return !error.amount && !error.address && amount && address;
|
|
5949
5999
|
}, [error]);
|
|
5950
6000
|
const onNext = async () => {
|
|
@@ -5954,7 +6004,7 @@ function TokenSend({
|
|
|
5954
6004
|
}
|
|
5955
6005
|
onClose();
|
|
5956
6006
|
};
|
|
5957
|
-
|
|
6007
|
+
useEffect24(() => {
|
|
5958
6008
|
const receiveMessage = (event) => {
|
|
5959
6009
|
if (event.data) {
|
|
5960
6010
|
if (event.data.source == "match-wallet") {
|
|
@@ -5970,24 +6020,24 @@ function TokenSend({
|
|
|
5970
6020
|
window.removeEventListener("message", receiveMessage);
|
|
5971
6021
|
};
|
|
5972
6022
|
}, []);
|
|
5973
|
-
return /* @__PURE__ */
|
|
5974
|
-
/* @__PURE__ */
|
|
5975
|
-
/* @__PURE__ */
|
|
5976
|
-
/* @__PURE__ */
|
|
5977
|
-
/* @__PURE__ */
|
|
5978
|
-
/* @__PURE__ */
|
|
5979
|
-
token.icon ? /* @__PURE__ */
|
|
6023
|
+
return /* @__PURE__ */ jsx30(ModalDrawer, { isOpen: true, onClose, zIndex, title: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "send" }), onBack, children: /* @__PURE__ */ jsxs20("div", { className: `matchid-token-send-box`, children: [
|
|
6024
|
+
/* @__PURE__ */ jsxs20("div", { className: "matchid-token-send-content", children: [
|
|
6025
|
+
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-content`, children: [
|
|
6026
|
+
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-header`, children: [
|
|
6027
|
+
/* @__PURE__ */ jsx30("div", { className: `matchid-token-amount-title`, children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "amount" }) }),
|
|
6028
|
+
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-chain`, children: [
|
|
6029
|
+
token.icon ? /* @__PURE__ */ jsx30(
|
|
5980
6030
|
"img",
|
|
5981
6031
|
{
|
|
5982
6032
|
src: token?.icon,
|
|
5983
6033
|
alt: token?.symbol,
|
|
5984
6034
|
className: `matchid-token-amount-chain-icon`
|
|
5985
6035
|
}
|
|
5986
|
-
) : /* @__PURE__ */
|
|
5987
|
-
/* @__PURE__ */
|
|
6036
|
+
) : /* @__PURE__ */ jsx30(AlphaAvatar, { name: token.symbol || token.name || "", size: 16 }),
|
|
6037
|
+
/* @__PURE__ */ jsx30("span", { children: token?.symbol })
|
|
5988
6038
|
] })
|
|
5989
6039
|
] }),
|
|
5990
|
-
/* @__PURE__ */
|
|
6040
|
+
/* @__PURE__ */ jsx30(
|
|
5991
6041
|
Input2,
|
|
5992
6042
|
{
|
|
5993
6043
|
type: "text",
|
|
@@ -6000,18 +6050,18 @@ function TokenSend({
|
|
|
6000
6050
|
error: error.amount || txError
|
|
6001
6051
|
}
|
|
6002
6052
|
),
|
|
6003
|
-
/* @__PURE__ */
|
|
6004
|
-
/* @__PURE__ */
|
|
6005
|
-
/* @__PURE__ */
|
|
6053
|
+
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-footer`, children: [
|
|
6054
|
+
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-title`, children: [
|
|
6055
|
+
/* @__PURE__ */ jsx30(FormattedMessage11, { id: "balance" }),
|
|
6006
6056
|
":"
|
|
6007
6057
|
] }),
|
|
6008
|
-
/* @__PURE__ */
|
|
6058
|
+
/* @__PURE__ */ jsx30("div", { className: `matchid-token-amount-value`, children: /* @__PURE__ */ jsx30(NumberFormatter, { value: token.balance, tFixNum: 10, suffix: " " + token.symbol }) })
|
|
6009
6059
|
] }),
|
|
6010
|
-
/* @__PURE__ */
|
|
6060
|
+
/* @__PURE__ */ jsx30(TransferIcon, { className: "matchid-token-amount-transfer" })
|
|
6011
6061
|
] }),
|
|
6012
|
-
/* @__PURE__ */
|
|
6013
|
-
/* @__PURE__ */
|
|
6014
|
-
/* @__PURE__ */
|
|
6062
|
+
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-address-content`, children: [
|
|
6063
|
+
/* @__PURE__ */ jsx30("div", { className: `matchid-token-address-header`, children: /* @__PURE__ */ jsx30("div", { className: `matchid-token-address-title`, children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "receiveTitle" }) }) }),
|
|
6064
|
+
/* @__PURE__ */ jsx30(
|
|
6015
6065
|
Input2,
|
|
6016
6066
|
{
|
|
6017
6067
|
type: "text",
|
|
@@ -6027,7 +6077,7 @@ function TokenSend({
|
|
|
6027
6077
|
)
|
|
6028
6078
|
] })
|
|
6029
6079
|
] }),
|
|
6030
|
-
/* @__PURE__ */
|
|
6080
|
+
/* @__PURE__ */ jsx30(
|
|
6031
6081
|
Button,
|
|
6032
6082
|
{
|
|
6033
6083
|
size: "lg",
|
|
@@ -6036,15 +6086,15 @@ function TokenSend({
|
|
|
6036
6086
|
disabled: !canSend || !!txError,
|
|
6037
6087
|
onClick: onNext,
|
|
6038
6088
|
loading: loading || sending,
|
|
6039
|
-
children: /* @__PURE__ */
|
|
6089
|
+
children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "next" })
|
|
6040
6090
|
}
|
|
6041
6091
|
)
|
|
6042
6092
|
] }) });
|
|
6043
6093
|
}
|
|
6044
6094
|
|
|
6045
6095
|
// src/components/TokenDetail/index.tsx
|
|
6046
|
-
import { FormattedMessage as
|
|
6047
|
-
import { jsx as
|
|
6096
|
+
import { FormattedMessage as FormattedMessage12, useIntl as useIntl17 } from "react-intl";
|
|
6097
|
+
import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
6048
6098
|
function TokenDetail({
|
|
6049
6099
|
onClose,
|
|
6050
6100
|
token
|
|
@@ -6054,61 +6104,61 @@ function TokenDetail({
|
|
|
6054
6104
|
const chain = chainList?.find((m) => m.id.toString() === token.chain_id);
|
|
6055
6105
|
const onSend = () => {
|
|
6056
6106
|
modal.show((props) => {
|
|
6057
|
-
return /* @__PURE__ */
|
|
6107
|
+
return /* @__PURE__ */ jsx31(TokenSend, { onClose: () => {
|
|
6058
6108
|
props.close();
|
|
6059
6109
|
onClose();
|
|
6060
6110
|
}, onBack: props.close, zIndex: props.zIndex, token });
|
|
6061
6111
|
});
|
|
6062
6112
|
};
|
|
6063
|
-
const intl =
|
|
6064
|
-
return /* @__PURE__ */
|
|
6113
|
+
const intl = useIntl17();
|
|
6114
|
+
return /* @__PURE__ */ jsx31(ModalDrawer, { isOpen: true, title: intl.formatMessage({
|
|
6065
6115
|
id: "tokenDetails"
|
|
6066
|
-
}), onClose, children: /* @__PURE__ */
|
|
6067
|
-
/* @__PURE__ */
|
|
6068
|
-
/* @__PURE__ */
|
|
6069
|
-
/* @__PURE__ */
|
|
6070
|
-
token.icon ? /* @__PURE__ */
|
|
6071
|
-
chain?.iconUrl && /* @__PURE__ */
|
|
6116
|
+
}), onClose, children: /* @__PURE__ */ jsxs21("div", { className: `matchid-token-detail`, children: [
|
|
6117
|
+
/* @__PURE__ */ jsxs21("div", { className: `matchid-token-main`, children: [
|
|
6118
|
+
/* @__PURE__ */ jsxs21("div", { className: `matchid-token-info`, children: [
|
|
6119
|
+
/* @__PURE__ */ jsxs21("div", { className: `matchid-token-logo`, children: [
|
|
6120
|
+
token.icon ? /* @__PURE__ */ jsx31("img", { src: token.icon, alt: token.symbol, className: `matchid-token-icon` }) : /* @__PURE__ */ jsx31(AlphaAvatar, { className: `matchid-token-icon`, size: 48, name: token.symbol || token.name || "" }),
|
|
6121
|
+
chain?.iconUrl && /* @__PURE__ */ jsx31("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-token-chain` })
|
|
6072
6122
|
] }),
|
|
6073
|
-
/* @__PURE__ */
|
|
6074
|
-
/* @__PURE__ */
|
|
6123
|
+
/* @__PURE__ */ jsxs21("div", { className: `matchid-token-name`, children: [
|
|
6124
|
+
/* @__PURE__ */ jsx31(NumberFormatter, { value: token.balance, tFixNum: 10 }),
|
|
6075
6125
|
" ",
|
|
6076
6126
|
token.symbol
|
|
6077
6127
|
] })
|
|
6078
6128
|
] }),
|
|
6079
|
-
token.address.toLowerCase() != NATIVE_TOKEN_ADDRESS && /* @__PURE__ */
|
|
6080
|
-
/* @__PURE__ */
|
|
6081
|
-
/* @__PURE__ */
|
|
6129
|
+
token.address.toLowerCase() != NATIVE_TOKEN_ADDRESS && /* @__PURE__ */ jsxs21("div", { className: `matchid-token-contract`, children: [
|
|
6130
|
+
/* @__PURE__ */ jsx31("div", { className: "matchid-token-contract-title", children: "Contract address" }),
|
|
6131
|
+
/* @__PURE__ */ jsx31("div", { className: "matchid-token-contract-address", children: token.address })
|
|
6082
6132
|
] })
|
|
6083
6133
|
] }),
|
|
6084
|
-
/* @__PURE__ */
|
|
6134
|
+
/* @__PURE__ */ jsx31(Button, { size: "lg", block: true, highlight: true, onClick: onSend, children: /* @__PURE__ */ jsx31(FormattedMessage12, { id: "send" }) })
|
|
6085
6135
|
] }) });
|
|
6086
6136
|
}
|
|
6087
6137
|
|
|
6088
6138
|
// src/components/TokenSendList/index.tsx
|
|
6089
|
-
import { useState as
|
|
6090
|
-
import { FormattedMessage as
|
|
6091
|
-
import { jsx as
|
|
6139
|
+
import { useState as useState27 } from "react";
|
|
6140
|
+
import { FormattedMessage as FormattedMessage13 } from "react-intl";
|
|
6141
|
+
import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
6092
6142
|
function TokenSendList({ close }) {
|
|
6093
6143
|
const walletAssets = useMatchWalletAssets();
|
|
6094
6144
|
const matchWalletAssetList = useMatchWalletAssetList({
|
|
6095
6145
|
list: walletAssets.mergedAssets
|
|
6096
6146
|
});
|
|
6097
6147
|
const { list } = useMatchChain();
|
|
6098
|
-
const [checked, setChecked] =
|
|
6148
|
+
const [checked, setChecked] = useState27();
|
|
6099
6149
|
const modal = useModal();
|
|
6100
6150
|
const onNext = () => {
|
|
6101
6151
|
checked && modal.show((props) => {
|
|
6102
|
-
return /* @__PURE__ */
|
|
6152
|
+
return /* @__PURE__ */ jsx32(TokenSend, { onClose: () => {
|
|
6103
6153
|
props.close();
|
|
6104
6154
|
close();
|
|
6105
6155
|
}, onBack: props.close, zIndex: props.zIndex, token: checked });
|
|
6106
6156
|
});
|
|
6107
6157
|
};
|
|
6108
|
-
return /* @__PURE__ */
|
|
6109
|
-
/* @__PURE__ */
|
|
6158
|
+
return /* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-list-box", children: [
|
|
6159
|
+
/* @__PURE__ */ jsx32("div", { className: "matchid-token-send-list", children: matchWalletAssetList.list.map((n, index) => {
|
|
6110
6160
|
const chain = list?.find((m) => m.id.toString() === n.chain_id);
|
|
6111
|
-
return /* @__PURE__ */
|
|
6161
|
+
return /* @__PURE__ */ jsxs22(
|
|
6112
6162
|
"div",
|
|
6113
6163
|
{
|
|
6114
6164
|
className: `matchid-token-send-item ${checked?.address == n.address ? "matchid-token-send-chekced" : ""}`,
|
|
@@ -6116,10 +6166,10 @@ function TokenSendList({ close }) {
|
|
|
6116
6166
|
setChecked(n);
|
|
6117
6167
|
},
|
|
6118
6168
|
children: [
|
|
6119
|
-
/* @__PURE__ */
|
|
6120
|
-
/* @__PURE__ */
|
|
6121
|
-
/* @__PURE__ */
|
|
6122
|
-
n.icon ? /* @__PURE__ */
|
|
6169
|
+
/* @__PURE__ */ jsx32(Radio, { checked: checked?.address == n.address }),
|
|
6170
|
+
/* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-content", children: [
|
|
6171
|
+
/* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-logo", children: [
|
|
6172
|
+
n.icon ? /* @__PURE__ */ jsx32("img", { src: n.icon, alt: n.symbol, className: `matchid-token-send-icon` }) : /* @__PURE__ */ jsx32(
|
|
6123
6173
|
AlphaAvatar2,
|
|
6124
6174
|
{
|
|
6125
6175
|
className: `matchid-token-send-icon`,
|
|
@@ -6127,7 +6177,7 @@ function TokenSendList({ close }) {
|
|
|
6127
6177
|
name: n.symbol || n.name || ""
|
|
6128
6178
|
}
|
|
6129
6179
|
),
|
|
6130
|
-
chain?.iconUrl && /* @__PURE__ */
|
|
6180
|
+
chain?.iconUrl && /* @__PURE__ */ jsx32(
|
|
6131
6181
|
"img",
|
|
6132
6182
|
{
|
|
6133
6183
|
src: chain.iconUrl,
|
|
@@ -6136,9 +6186,9 @@ function TokenSendList({ close }) {
|
|
|
6136
6186
|
}
|
|
6137
6187
|
)
|
|
6138
6188
|
] }),
|
|
6139
|
-
/* @__PURE__ */
|
|
6140
|
-
/* @__PURE__ */
|
|
6141
|
-
/* @__PURE__ */
|
|
6189
|
+
/* @__PURE__ */ jsxs22("div", { className: `matchid-token-send-info`, children: [
|
|
6190
|
+
/* @__PURE__ */ jsx32("div", { className: `matchid-token-send-name`, children: n.symbol }),
|
|
6191
|
+
/* @__PURE__ */ jsx32("div", { className: `matchid-token-send-balance`, children: /* @__PURE__ */ jsx32(NumberFormatter, { value: n.balance, tFixNum: 3 }) })
|
|
6142
6192
|
] })
|
|
6143
6193
|
] })
|
|
6144
6194
|
]
|
|
@@ -6146,23 +6196,24 @@ function TokenSendList({ close }) {
|
|
|
6146
6196
|
index
|
|
6147
6197
|
);
|
|
6148
6198
|
}) }),
|
|
6149
|
-
/* @__PURE__ */
|
|
6199
|
+
/* @__PURE__ */ jsx32(Button, { size: "lg", highlight: true, block: true, disabled: !checked, onClick: onNext, children: /* @__PURE__ */ jsx32(FormattedMessage13, { id: "next" }) })
|
|
6150
6200
|
] });
|
|
6151
6201
|
}
|
|
6152
6202
|
|
|
6153
6203
|
// src/components/TransactionList/index.tsx
|
|
6154
6204
|
import InfiniteScroll from "react-infinite-scroll-component";
|
|
6155
|
-
import { useEffect as
|
|
6205
|
+
import { useEffect as useEffect25, useMemo as useMemo16, useState as useState28 } from "react";
|
|
6156
6206
|
import { decodeFunctionData, defineChain as defineChain4, formatUnits as formatUnits3 } from "viem";
|
|
6157
|
-
import { erc20Abi as
|
|
6158
|
-
import {
|
|
6207
|
+
import { erc20Abi as erc20Abi3 } from "viem";
|
|
6208
|
+
import { FormattedMessage as FormattedMessage14 } from "react-intl";
|
|
6209
|
+
import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
6159
6210
|
var Item = ({ data }) => {
|
|
6160
6211
|
const { address } = useWallet();
|
|
6161
6212
|
const isOut = data.from == address;
|
|
6162
6213
|
const { chain, chainId, explorerLink, formatUnits: chainFormatUnits } = useMatchChain();
|
|
6163
6214
|
const { getContract } = useContractStore_default();
|
|
6164
|
-
const [shouldRefetch, setShouldRefetch] =
|
|
6165
|
-
const transferType =
|
|
6215
|
+
const [shouldRefetch, setShouldRefetch] = useState28(true);
|
|
6216
|
+
const transferType = useMemo16(() => {
|
|
6166
6217
|
const methodId = data.input.substring(2, 10);
|
|
6167
6218
|
if (methodId == "095ea7b3") {
|
|
6168
6219
|
return "erc20_approve";
|
|
@@ -6172,20 +6223,20 @@ var Item = ({ data }) => {
|
|
|
6172
6223
|
}
|
|
6173
6224
|
return "unknown";
|
|
6174
6225
|
}, [data.input]);
|
|
6175
|
-
const to =
|
|
6226
|
+
const to = useMemo16(() => {
|
|
6176
6227
|
if (transferType == "erc20_transfer") {
|
|
6177
6228
|
const decodeData = decodeFunctionData({
|
|
6178
|
-
abi:
|
|
6229
|
+
abi: erc20Abi3,
|
|
6179
6230
|
data: data.input
|
|
6180
6231
|
});
|
|
6181
6232
|
return decodeData.args[0];
|
|
6182
6233
|
}
|
|
6183
6234
|
return data.to;
|
|
6184
6235
|
}, [data.input, transferType, data.to]);
|
|
6185
|
-
const amount =
|
|
6236
|
+
const amount = useMemo16(() => {
|
|
6186
6237
|
if (transferType == "erc20_transfer") {
|
|
6187
6238
|
const decodeData = decodeFunctionData({
|
|
6188
|
-
abi:
|
|
6239
|
+
abi: erc20Abi3,
|
|
6189
6240
|
data: data.input
|
|
6190
6241
|
});
|
|
6191
6242
|
const value = decodeData.args[1];
|
|
@@ -6193,7 +6244,7 @@ var Item = ({ data }) => {
|
|
|
6193
6244
|
}
|
|
6194
6245
|
return chainFormatUnits(BigInt(data.value));
|
|
6195
6246
|
}, [data.input, transferType, data.value, getContract, chainId, data.to]);
|
|
6196
|
-
|
|
6247
|
+
useEffect25(() => {
|
|
6197
6248
|
if (data.hash) {
|
|
6198
6249
|
setShouldRefetch(true);
|
|
6199
6250
|
}
|
|
@@ -6205,7 +6256,7 @@ var Item = ({ data }) => {
|
|
|
6205
6256
|
refetchInterval: shouldRefetch ? 3e3 : false,
|
|
6206
6257
|
enabled: shouldRefetch
|
|
6207
6258
|
});
|
|
6208
|
-
const status =
|
|
6259
|
+
const status = useMemo16(() => {
|
|
6209
6260
|
if (data.source == "matchain") {
|
|
6210
6261
|
switch (data.extra.status) {
|
|
6211
6262
|
case "ok":
|
|
@@ -6232,27 +6283,27 @@ var Item = ({ data }) => {
|
|
|
6232
6283
|
}
|
|
6233
6284
|
return "loading";
|
|
6234
6285
|
}, [data.extra?.status, data.source, hashQuery.data]);
|
|
6235
|
-
|
|
6286
|
+
useEffect25(() => {
|
|
6236
6287
|
setShouldRefetch(status == "loading");
|
|
6237
6288
|
}, [status]);
|
|
6238
|
-
const symbol =
|
|
6289
|
+
const symbol = useMemo16(() => {
|
|
6239
6290
|
if (transferType == "erc20_transfer") {
|
|
6240
6291
|
return getContract(chainId || 0, data.to)?.symbol || getContract(chainId || 0, data.to)?.name || "unknown";
|
|
6241
6292
|
}
|
|
6242
6293
|
return chain?.nativeCurrency.symbol || chain?.nativeCurrency.name;
|
|
6243
6294
|
}, [transferType, chain, getContract, chainId, data.to]);
|
|
6244
|
-
return /* @__PURE__ */
|
|
6295
|
+
return /* @__PURE__ */ jsxs23(
|
|
6245
6296
|
"a",
|
|
6246
6297
|
{
|
|
6247
6298
|
href: explorerLink(`tx/${data.hash}`),
|
|
6248
6299
|
target: "_blank",
|
|
6249
6300
|
className: `matchid-transaction-item`,
|
|
6250
6301
|
children: [
|
|
6251
|
-
/* @__PURE__ */
|
|
6252
|
-
/* @__PURE__ */
|
|
6253
|
-
/* @__PURE__ */
|
|
6254
|
-
/* @__PURE__ */
|
|
6255
|
-
/* @__PURE__ */
|
|
6302
|
+
/* @__PURE__ */ jsxs23("div", { className: `matchid-transacton-item-container`, children: [
|
|
6303
|
+
/* @__PURE__ */ jsx33("div", { className: "matchid-transaction-item-icon", children: /* @__PURE__ */ jsx33(ArrowSendIcon, { className: !isOut ? "rotate-180" : "" }) }),
|
|
6304
|
+
/* @__PURE__ */ jsxs23("div", { className: `matchid-transaction-item-details`, children: [
|
|
6305
|
+
/* @__PURE__ */ jsx33("div", { className: `matchid-transaction-item-address`, children: formatAddress(to, 6, 4) }),
|
|
6306
|
+
/* @__PURE__ */ jsx33(
|
|
6256
6307
|
"div",
|
|
6257
6308
|
{
|
|
6258
6309
|
className: `matchid-transaction-item-timestamp`,
|
|
@@ -6261,11 +6312,11 @@ var Item = ({ data }) => {
|
|
|
6261
6312
|
)
|
|
6262
6313
|
] })
|
|
6263
6314
|
] }),
|
|
6264
|
-
/* @__PURE__ */
|
|
6265
|
-
/* @__PURE__ */
|
|
6266
|
-
status == "loading" && /* @__PURE__ */
|
|
6267
|
-
status == "success" && /* @__PURE__ */
|
|
6268
|
-
status == "error" && /* @__PURE__ */
|
|
6315
|
+
/* @__PURE__ */ jsxs23("div", { className: `matchid-transaction-item-amount ${"matchid-transaction-item-" + status}`, children: [
|
|
6316
|
+
/* @__PURE__ */ jsx33(NumberFormatter, { value: amount, tFixNum: 6, prefix: isOut ? "-" : "+", suffix: " " + symbol }),
|
|
6317
|
+
status == "loading" && /* @__PURE__ */ jsx33(LoadingIcon_default, { color: "#000000", size: 16, rotate: true }),
|
|
6318
|
+
status == "success" && /* @__PURE__ */ jsx33(CheckRoundIcon, { size: 16 }),
|
|
6319
|
+
status == "error" && /* @__PURE__ */ jsx33(InfoRoundIcon, { size: 16 })
|
|
6269
6320
|
] })
|
|
6270
6321
|
]
|
|
6271
6322
|
}
|
|
@@ -6275,19 +6326,19 @@ function TransactionList({
|
|
|
6275
6326
|
scrollableTarget
|
|
6276
6327
|
}) {
|
|
6277
6328
|
const { fetchMoreData, hasMore, items } = useMatchWalletRecords();
|
|
6278
|
-
return /* @__PURE__ */
|
|
6329
|
+
return /* @__PURE__ */ jsx33(
|
|
6279
6330
|
InfiniteScroll,
|
|
6280
6331
|
{
|
|
6281
6332
|
scrollableTarget,
|
|
6282
6333
|
dataLength: items.length,
|
|
6283
6334
|
next: fetchMoreData,
|
|
6284
6335
|
hasMore,
|
|
6285
|
-
loader: /* @__PURE__ */
|
|
6286
|
-
/* @__PURE__ */
|
|
6336
|
+
loader: /* @__PURE__ */ jsxs23("div", { className: "matchid-list-nomore", children: [
|
|
6337
|
+
/* @__PURE__ */ jsx33(LoadingIcon_default, { rotate: true, size: 16, color: "black" }),
|
|
6287
6338
|
"Loading..."
|
|
6288
6339
|
] }),
|
|
6289
|
-
endMessage: items.length > 0 ? /* @__PURE__ */
|
|
6290
|
-
children: items.length == 0 && !hasMore ? /* @__PURE__ */
|
|
6340
|
+
endMessage: items.length > 0 ? /* @__PURE__ */ jsx33("div", { className: `matchid-list-nomore`, children: /* @__PURE__ */ jsx33(FormattedMessage14, { id: "noMoreRecords" }) }) : /* @__PURE__ */ jsx33("div", { className: `matchid-list-nomore`, children: /* @__PURE__ */ jsx33(FormattedMessage14, { id: "noRecords" }) }),
|
|
6341
|
+
children: items.length == 0 && !hasMore ? /* @__PURE__ */ jsx33("div", { className: "mt-[150px]" }) : /* @__PURE__ */ jsx33("div", { className: `matchid-transaction-list`, children: items.map((item, index) => /* @__PURE__ */ jsx33(Item, { data: item }, index)) })
|
|
6291
6342
|
}
|
|
6292
6343
|
);
|
|
6293
6344
|
}
|
|
@@ -6338,4 +6389,4 @@ export {
|
|
|
6338
6389
|
MatchProvider,
|
|
6339
6390
|
useMatch
|
|
6340
6391
|
};
|
|
6341
|
-
//# sourceMappingURL=chunk-
|
|
6392
|
+
//# sourceMappingURL=chunk-WPXA4QPX.mjs.map
|