@matchain/matchid-sdk-react 0.1.48-alpha.10 → 0.1.48-alpha.2
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/assets/icon/index.d.mts +2 -11
- package/dist/assets/icon/index.d.ts +2 -11
- package/dist/assets/icon/index.js +2 -93
- package/dist/assets/icon/index.js.map +1 -1
- package/dist/assets/icon/index.mjs +1 -9
- package/dist/{chunk-YGFOHQU6.mjs → chunk-6HRRPZPM.mjs} +2 -2
- package/dist/{chunk-LHNKZISB.mjs → chunk-A5D3NKTK.mjs} +4 -91
- package/dist/chunk-A5D3NKTK.mjs.map +1 -0
- package/dist/{chunk-2LRK5L4Z.mjs → chunk-D6IUBR7S.mjs} +446 -1442
- package/dist/chunk-D6IUBR7S.mjs.map +1 -0
- package/dist/{chunk-MXBUBTKR.mjs → chunk-LNSJ3ZXG.mjs} +5 -11
- package/dist/chunk-LNSJ3ZXG.mjs.map +1 -0
- package/dist/components/index.d.mts +3 -3
- package/dist/components/index.d.ts +3 -3
- package/dist/components/index.js +448 -1689
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +3 -12
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +185 -265
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +4 -5
- package/dist/hooks/index.d.mts +2 -3
- package/dist/hooks/index.d.ts +2 -3
- package/dist/hooks/index.js +171 -1563
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +3 -12
- package/dist/index-BHVMQGZj.d.mts +173 -0
- package/dist/{index-BxPB2IQ2.d.ts → index-BIgM4fy0.d.mts} +8 -29
- package/dist/{index-NzZ-mfGZ.d.mts → index-BVatQlwF.d.mts} +2 -5
- package/dist/{index-DZ-eQkIA.d.mts → index-Bb7IkjUW.d.mts} +1 -1
- package/dist/{index-CE20hVl1.d.mts → index-BwD1ij0H.d.ts} +8 -29
- package/dist/{index-BQPieWF9.d.ts → index-C2-M-aBb.d.ts} +3 -4
- package/dist/{index-DAEvA2P4.d.ts → index-CGs_yTFg.d.ts} +4 -28
- package/dist/{index-C9s2Ea9O.d.ts → index-CKiK4KHj.d.ts} +1 -1
- package/dist/{index-BsmYcQQU.d.mts → index-DamklTOJ.d.mts} +3 -4
- package/dist/index-DgAnNnit.d.ts +173 -0
- package/dist/{index-BEwCPHZr.d.mts → index-M7ZB3yR5.d.mts} +4 -28
- package/dist/{index-88JSE0j2.d.ts → index-RfA22r-Z.d.ts} +2 -5
- package/dist/index.css +4 -468
- package/dist/index.d.mts +7 -8
- package/dist/index.d.ts +7 -8
- package/dist/index.js +1004 -2142
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -11
- package/dist/types/index.d.mts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/{types-BZoVuUty.d.mts → types-DQq17lf4.d.mts} +33 -48
- package/dist/{types-BZoVuUty.d.ts → types-DQq17lf4.d.ts} +33 -48
- package/dist/ui/index.d.mts +3 -3
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.js +62 -80
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +2 -2
- package/example/src/pages/Wallet/components/MatchWallet.tsx +10 -24
- package/package.json +1 -7
- package/dist/chunk-2LRK5L4Z.mjs.map +0 -1
- package/dist/chunk-5JHHHLG4.mjs +0 -136
- package/dist/chunk-5JHHHLG4.mjs.map +0 -1
- package/dist/chunk-LHNKZISB.mjs.map +0 -1
- package/dist/chunk-MXBUBTKR.mjs.map +0 -1
- package/dist/index-DIxrMLXq.d.ts +0 -3295
- package/dist/index-P71uc8y5.d.mts +0 -3295
- package/dist/utils/index.d.mts +0 -26
- package/dist/utils/index.d.ts +0 -26
- package/dist/utils/index.js +0 -181
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/index.mjs +0 -30
- package/dist/utils/index.mjs.map +0 -1
- /package/dist/{chunk-YGFOHQU6.mjs.map → chunk-6HRRPZPM.mjs.map} +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
AlphaAvatar,
|
|
3
2
|
Button,
|
|
4
3
|
Field,
|
|
5
4
|
HashPanel_default,
|
|
@@ -13,16 +12,7 @@ import {
|
|
|
13
12
|
matchlog_default,
|
|
14
13
|
useDownMd,
|
|
15
14
|
useLayout_exports
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import {
|
|
18
|
-
NumberFormatter,
|
|
19
|
-
encodeBase64,
|
|
20
|
-
getAppClientId,
|
|
21
|
-
getVersion,
|
|
22
|
-
isValidEmail,
|
|
23
|
-
isValidUsername,
|
|
24
|
-
truncateAddress
|
|
25
|
-
} from "./chunk-5JHHHLG4.mjs";
|
|
15
|
+
} from "./chunk-LNSJ3ZXG.mjs";
|
|
26
16
|
import {
|
|
27
17
|
ArrowDownIcon,
|
|
28
18
|
ArrowRightIcon,
|
|
@@ -42,7 +32,6 @@ import {
|
|
|
42
32
|
FacebookIcon,
|
|
43
33
|
GithubIcon,
|
|
44
34
|
GoogleIcon,
|
|
45
|
-
InfoLineIcon,
|
|
46
35
|
LeatherIcon,
|
|
47
36
|
LinkedinIcon,
|
|
48
37
|
LoginIcon_default,
|
|
@@ -54,7 +43,6 @@ import {
|
|
|
54
43
|
TelegramIcon,
|
|
55
44
|
TonLightIcon,
|
|
56
45
|
TonLightIcon2,
|
|
57
|
-
TransferIcon,
|
|
58
46
|
TronLinkIcon,
|
|
59
47
|
UnLoginIcon_default,
|
|
60
48
|
UnisatIcon,
|
|
@@ -62,7 +50,7 @@ import {
|
|
|
62
50
|
XIcon,
|
|
63
51
|
XverseIcon,
|
|
64
52
|
YoutubeIcon
|
|
65
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-A5D3NKTK.mjs";
|
|
66
54
|
import {
|
|
67
55
|
__export
|
|
68
56
|
} from "./chunk-J5LGTIGS.mjs";
|
|
@@ -86,19 +74,42 @@ __export(components_exports, {
|
|
|
86
74
|
SOLModal: () => SOLModal,
|
|
87
75
|
TONModal: () => TONModal,
|
|
88
76
|
TRONModal: () => TRONModal,
|
|
89
|
-
TokenDetail: () => TokenDetail,
|
|
90
|
-
TokenSend: () => TokenSend,
|
|
91
|
-
TokenSendList: () => TokenSendList,
|
|
92
77
|
UsernameModal: () => UsernameModal,
|
|
93
|
-
WalletAsset: () => WalletAsset,
|
|
94
78
|
WalletModal: () => WalletModal
|
|
95
79
|
});
|
|
96
80
|
|
|
97
81
|
// src/components/EmailModal/index.tsx
|
|
98
|
-
import { useEffect as
|
|
82
|
+
import { useEffect as useEffect13, useState as useState12 } from "react";
|
|
99
83
|
|
|
100
84
|
// src/components/EmailModal/StepEmail.tsx
|
|
101
85
|
import { useEffect, useMemo, useState } from "react";
|
|
86
|
+
|
|
87
|
+
// src/utils/index.ts
|
|
88
|
+
var getVersion = () => {
|
|
89
|
+
return "0.0.2";
|
|
90
|
+
};
|
|
91
|
+
function encodeBase64(input) {
|
|
92
|
+
return btoa(unescape(encodeURIComponent(input)));
|
|
93
|
+
}
|
|
94
|
+
var isValidEmail = (email) => {
|
|
95
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
|
|
96
|
+
};
|
|
97
|
+
var isValidUsername = (username) => {
|
|
98
|
+
return /^[a-zA-Z0-9_-]+$/.test(username);
|
|
99
|
+
};
|
|
100
|
+
function truncateAddress(address2) {
|
|
101
|
+
if (address2.length <= 6) {
|
|
102
|
+
return address2;
|
|
103
|
+
}
|
|
104
|
+
const start = address2.slice(0, 4);
|
|
105
|
+
const end = address2.slice(-2);
|
|
106
|
+
return `${start}...${end}`;
|
|
107
|
+
}
|
|
108
|
+
function getAppClientId() {
|
|
109
|
+
return "react-sdk-" + getVersion();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// src/components/EmailModal/StepEmail.tsx
|
|
102
113
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
103
114
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
104
115
|
function StepEmail(props) {
|
|
@@ -514,13 +525,6 @@ var getWalletChainListApi = () => {
|
|
|
514
525
|
method: "POST"
|
|
515
526
|
});
|
|
516
527
|
};
|
|
517
|
-
var getWalletNftListApi = (data) => {
|
|
518
|
-
return request_default({
|
|
519
|
-
url: `/api/v1/wallet/nfts`,
|
|
520
|
-
method: "POST",
|
|
521
|
-
data
|
|
522
|
-
});
|
|
523
|
-
};
|
|
524
528
|
|
|
525
529
|
// src/store/useLocalStore.ts
|
|
526
530
|
var persistedState = persist(
|
|
@@ -554,7 +558,7 @@ var persistedState = persist(
|
|
|
554
558
|
setToken: (token) => set({ token }),
|
|
555
559
|
setAppid: (appid) => set({ appid }),
|
|
556
560
|
setMid: (mid) => set({ mid }),
|
|
557
|
-
logout: () => set({ token: "", did: "", mid: "", address: "", overview: null
|
|
561
|
+
logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
|
|
558
562
|
setTheme: (theme) => set({ theme }),
|
|
559
563
|
setEndpoints: (endpoints) => set({ endpoints }),
|
|
560
564
|
address: "",
|
|
@@ -566,9 +570,7 @@ var persistedState = persist(
|
|
|
566
570
|
},
|
|
567
571
|
setWallet: (wallet) => set({ wallet }),
|
|
568
572
|
chainId: 698,
|
|
569
|
-
setChainId: (chainId) => set({ chainId })
|
|
570
|
-
assets: [],
|
|
571
|
-
setAssets: (assets) => set({ assets })
|
|
573
|
+
setChainId: (chainId) => set({ chainId })
|
|
572
574
|
}),
|
|
573
575
|
{ name: "match-local" }
|
|
574
576
|
);
|
|
@@ -590,13 +592,9 @@ __export(hooks_exports, {
|
|
|
590
592
|
useMatchChain: () => useMatchChain,
|
|
591
593
|
useMatchEvents: () => useMatchEvents,
|
|
592
594
|
useMatchWallet: () => useMatchWallet,
|
|
593
|
-
useMatchWalletAssetList: () => useMatchWalletAssetList,
|
|
594
|
-
useMatchWalletAssets: () => useMatchWalletAssets,
|
|
595
|
-
useMatchWalletRecords: () => useMatchWalletRecords,
|
|
596
595
|
useModal: () => useModal,
|
|
597
596
|
useReceipt: () => useReceipt,
|
|
598
597
|
useToast: () => useToast,
|
|
599
|
-
useTransaction: () => useTransaction,
|
|
600
598
|
useUserInfo: () => useUserInfo,
|
|
601
599
|
useWallet: () => useWallet
|
|
602
600
|
});
|
|
@@ -669,81 +667,108 @@ import { createWalletClient } from "viem";
|
|
|
669
667
|
import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
|
|
670
668
|
import { encodeDeployData } from "viem";
|
|
671
669
|
|
|
672
|
-
// src/
|
|
673
|
-
import {
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
}],
|
|
717
|
-
highestZIndex: newZIndex
|
|
718
|
-
};
|
|
719
|
-
});
|
|
720
|
-
}, [getNextIndex, closeModal]);
|
|
721
|
-
const modalElements = modalState.modals.sort((a, b) => b.zIndex - a.zIndex).map(
|
|
722
|
-
(modal) => modal.visible ? createPortal(
|
|
723
|
-
modal.content,
|
|
724
|
-
document.body
|
|
725
|
-
) : null
|
|
726
|
-
);
|
|
727
|
-
return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
|
|
728
|
-
children,
|
|
729
|
-
modalElements
|
|
730
|
-
] });
|
|
731
|
-
}
|
|
732
|
-
function useModal() {
|
|
733
|
-
const context = useContext(ModalContext);
|
|
734
|
-
if (!context) {
|
|
735
|
-
throw new Error("useModal must be used within a ModalProvider");
|
|
736
|
-
}
|
|
737
|
-
return context;
|
|
670
|
+
// src/store/useModalStore.ts
|
|
671
|
+
import { create as create3 } from "zustand";
|
|
672
|
+
|
|
673
|
+
// src/hooks/useConfig.tsx
|
|
674
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
675
|
+
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
676
|
+
var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
677
|
+
function useWalletConfig() {
|
|
678
|
+
const isDownMd = useDownMd();
|
|
679
|
+
const walletMap = {
|
|
680
|
+
evm: {
|
|
681
|
+
icon: /* @__PURE__ */ jsx2(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
682
|
+
activeIcon: /* @__PURE__ */ jsx2(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
683
|
+
name: "EVM",
|
|
684
|
+
method: "evm"
|
|
685
|
+
},
|
|
686
|
+
sol: {
|
|
687
|
+
icon: /* @__PURE__ */ jsx2(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
688
|
+
activeIcon: /* @__PURE__ */ jsx2(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
689
|
+
name: "SOL",
|
|
690
|
+
method: "sol"
|
|
691
|
+
},
|
|
692
|
+
btc: {
|
|
693
|
+
icon: /* @__PURE__ */ jsx2(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
694
|
+
activeIcon: /* @__PURE__ */ jsx2(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
695
|
+
name: "BTC",
|
|
696
|
+
method: "btc"
|
|
697
|
+
},
|
|
698
|
+
tron: {
|
|
699
|
+
icon: /* @__PURE__ */ jsx2(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
700
|
+
activeIcon: /* @__PURE__ */ jsx2(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
701
|
+
name: "TRON",
|
|
702
|
+
method: "tron"
|
|
703
|
+
},
|
|
704
|
+
ton: {
|
|
705
|
+
icon: /* @__PURE__ */ jsx2(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
706
|
+
activeIcon: /* @__PURE__ */ jsx2(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
707
|
+
name: "TON",
|
|
708
|
+
method: "ton"
|
|
709
|
+
}
|
|
710
|
+
};
|
|
711
|
+
return {
|
|
712
|
+
walletMap
|
|
713
|
+
};
|
|
738
714
|
}
|
|
739
715
|
|
|
716
|
+
// src/store/useModalStore.ts
|
|
717
|
+
var useSOLModalStore = create3((set) => ({
|
|
718
|
+
isOpen: false,
|
|
719
|
+
type: "",
|
|
720
|
+
open: (type) => set({ isOpen: true, type }),
|
|
721
|
+
close: () => set({ isOpen: false })
|
|
722
|
+
}));
|
|
723
|
+
var useTRONModalStore = create3((set) => ({
|
|
724
|
+
isOpen: false,
|
|
725
|
+
type: "",
|
|
726
|
+
open: (type) => set({ isOpen: true, type }),
|
|
727
|
+
close: () => set({ isOpen: false })
|
|
728
|
+
}));
|
|
729
|
+
var useTONModalStore = create3((set) => ({
|
|
730
|
+
isOpen: false,
|
|
731
|
+
type: "",
|
|
732
|
+
open: (type) => set({ isOpen: true, type }),
|
|
733
|
+
close: () => set({ isOpen: false })
|
|
734
|
+
}));
|
|
735
|
+
var useBTCModalStore = create3((set) => ({
|
|
736
|
+
isOpen: false,
|
|
737
|
+
type: "",
|
|
738
|
+
open: (type) => set({ isOpen: true, type }),
|
|
739
|
+
close: () => set({ isOpen: false })
|
|
740
|
+
}));
|
|
741
|
+
var useCEXBindModalStore = create3((set) => ({
|
|
742
|
+
type: "",
|
|
743
|
+
isOpen: false,
|
|
744
|
+
open: (type) => set({ isOpen: true, type }),
|
|
745
|
+
close: () => set({ isOpen: false })
|
|
746
|
+
}));
|
|
747
|
+
var useHashPanelStore = create3((set) => ({
|
|
748
|
+
isOpen: false,
|
|
749
|
+
hash: null,
|
|
750
|
+
chain: null,
|
|
751
|
+
open: (params) => set({
|
|
752
|
+
isOpen: true,
|
|
753
|
+
hash: params?.hash || null,
|
|
754
|
+
chain: params?.chain || null
|
|
755
|
+
}),
|
|
756
|
+
close: () => set({ isOpen: false })
|
|
757
|
+
}));
|
|
758
|
+
var useWalletModalStore = create3((set) => ({
|
|
759
|
+
isOpen: false,
|
|
760
|
+
type: "",
|
|
761
|
+
methods: [],
|
|
762
|
+
open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
|
|
763
|
+
close: () => set({ isOpen: false })
|
|
764
|
+
}));
|
|
765
|
+
|
|
740
766
|
// src/hooks/useWallet.tsx
|
|
741
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
742
767
|
var AppClientId = "react-sdk-" + getVersion();
|
|
743
768
|
function useWallet() {
|
|
744
769
|
const { address: address2, wallet: walletConfig } = useLocalStore_default();
|
|
745
770
|
const { walletReady } = useStore_default();
|
|
746
|
-
const
|
|
771
|
+
const { open: openHashPanel } = useHashPanelStore();
|
|
747
772
|
const isRecovered = async () => {
|
|
748
773
|
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
749
774
|
method: "isRecovered"
|
|
@@ -887,11 +912,13 @@ function useWallet() {
|
|
|
887
912
|
prepareTransactionRequest
|
|
888
913
|
}
|
|
889
914
|
});
|
|
915
|
+
openHashPanel();
|
|
890
916
|
const txHash = await obj.sendRawTransaction({
|
|
891
917
|
serializedTransaction
|
|
892
918
|
});
|
|
893
|
-
|
|
894
|
-
|
|
919
|
+
openHashPanel({
|
|
920
|
+
hash: txHash,
|
|
921
|
+
chain: _chain
|
|
895
922
|
});
|
|
896
923
|
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
897
924
|
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
@@ -944,10 +971,10 @@ function useWallet() {
|
|
|
944
971
|
|
|
945
972
|
// src/hooks/useCopyClipboard.ts
|
|
946
973
|
import copy from "copy-to-clipboard";
|
|
947
|
-
import { useCallback
|
|
974
|
+
import { useCallback, useEffect as useEffect4, useState as useState3 } from "react";
|
|
948
975
|
function useCopyClipboard(timeout = 500) {
|
|
949
|
-
const [isCopied, setIsCopied] =
|
|
950
|
-
const staticCopy =
|
|
976
|
+
const [isCopied, setIsCopied] = useState3(false);
|
|
977
|
+
const staticCopy = useCallback((text) => {
|
|
951
978
|
const didCopy = copy(text);
|
|
952
979
|
setIsCopied(didCopy);
|
|
953
980
|
}, []);
|
|
@@ -965,6 +992,48 @@ function useCopyClipboard(timeout = 500) {
|
|
|
965
992
|
return [isCopied, staticCopy];
|
|
966
993
|
}
|
|
967
994
|
|
|
995
|
+
// src/context/ModalContext.tsx
|
|
996
|
+
import { useState as useState4, useCallback as useCallback2, createContext, useContext } from "react";
|
|
997
|
+
import { createPortal } from "react-dom";
|
|
998
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
999
|
+
var ModalContext = createContext(null);
|
|
1000
|
+
function ModalProvider({ children }) {
|
|
1001
|
+
const [showModalState, setShowModalState] = useState4({
|
|
1002
|
+
visible: false,
|
|
1003
|
+
content: null
|
|
1004
|
+
});
|
|
1005
|
+
const closeShowModal = useCallback2(() => {
|
|
1006
|
+
setShowModalState({ visible: false, content: null });
|
|
1007
|
+
}, []);
|
|
1008
|
+
const show = useCallback2((content) => {
|
|
1009
|
+
setShowModalState({
|
|
1010
|
+
visible: true,
|
|
1011
|
+
content: content({ close: closeShowModal })
|
|
1012
|
+
});
|
|
1013
|
+
}, [closeShowModal]);
|
|
1014
|
+
const open = useCallback2((props) => {
|
|
1015
|
+
setShowModalState({
|
|
1016
|
+
visible: true,
|
|
1017
|
+
content: /* @__PURE__ */ jsx3(ModalDrawer, { showClose: true, isOpen: true, onClose: closeShowModal, title: props.title, children: /* @__PURE__ */ jsx3(props.content, { close: closeShowModal }) })
|
|
1018
|
+
});
|
|
1019
|
+
}, [closeShowModal]);
|
|
1020
|
+
const ShowModalComponent = showModalState.visible ? createPortal(
|
|
1021
|
+
showModalState.content,
|
|
1022
|
+
document.body
|
|
1023
|
+
) : null;
|
|
1024
|
+
return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
|
|
1025
|
+
children,
|
|
1026
|
+
ShowModalComponent
|
|
1027
|
+
] });
|
|
1028
|
+
}
|
|
1029
|
+
function useModal() {
|
|
1030
|
+
const context = useContext(ModalContext);
|
|
1031
|
+
if (!context) {
|
|
1032
|
+
throw new Error("useModal must be used within a ModalProvider");
|
|
1033
|
+
}
|
|
1034
|
+
return context;
|
|
1035
|
+
}
|
|
1036
|
+
|
|
968
1037
|
// src/context/ToastContext.tsx
|
|
969
1038
|
import { useState as useState5, useCallback as useCallback3, createContext as createContext2, useContext as useContext2 } from "react";
|
|
970
1039
|
import { createPortal as createPortal2 } from "react-dom";
|
|
@@ -1024,16 +1093,14 @@ __export(wallet_exports, {
|
|
|
1024
1093
|
useAssetListQuery: () => useAssetListQuery,
|
|
1025
1094
|
useChainListQuery: () => useChainListQuery,
|
|
1026
1095
|
useImportTokenListQuery: () => useImportTokenListQuery,
|
|
1027
|
-
useWalletAssetListQuery: () => useWalletAssetListQuery,
|
|
1028
1096
|
useWalletChainListQuery: () => useWalletChainListQuery,
|
|
1029
|
-
useWalletNftListQuery: () => useWalletNftListQuery,
|
|
1030
1097
|
userImportTokenApi: () => userImportTokenApi
|
|
1031
1098
|
});
|
|
1032
1099
|
import { useQuery } from "@tanstack/react-query";
|
|
1033
1100
|
function useChainListQuery(options) {
|
|
1034
1101
|
const { isLogin, token } = useUserInfo();
|
|
1035
1102
|
return useQuery({
|
|
1036
|
-
queryKey: ["match-
|
|
1103
|
+
queryKey: ["match-chain-list", token],
|
|
1037
1104
|
queryFn: async () => {
|
|
1038
1105
|
const res = await getUserChainListApi();
|
|
1039
1106
|
if (!isSuccess(res)) {
|
|
@@ -1051,7 +1118,7 @@ function useAssetListQuery({
|
|
|
1051
1118
|
}) {
|
|
1052
1119
|
const { isLogin, token } = useUserInfo();
|
|
1053
1120
|
return useQuery({
|
|
1054
|
-
queryKey: ["match-
|
|
1121
|
+
queryKey: ["match-wallet-asset-list", token, chainId],
|
|
1055
1122
|
queryFn: async () => {
|
|
1056
1123
|
const res = await getUserWalletAssetApi({ chain_id: chainId.toString() });
|
|
1057
1124
|
if (!isSuccess(res)) {
|
|
@@ -1069,7 +1136,7 @@ function useImportTokenListQuery({
|
|
|
1069
1136
|
}) {
|
|
1070
1137
|
const { isLogin, token } = useUserInfo();
|
|
1071
1138
|
return useQuery({
|
|
1072
|
-
queryKey: ["match-
|
|
1139
|
+
queryKey: ["match-wallet-import-token-list", token, chainId],
|
|
1073
1140
|
queryFn: async () => {
|
|
1074
1141
|
const res = await getUserImportTokenListApi({ chain_id: chainId.toString() });
|
|
1075
1142
|
if (!isSuccess(res)) {
|
|
@@ -1096,54 +1163,9 @@ function useWalletChainListQuery(options) {
|
|
|
1096
1163
|
...options
|
|
1097
1164
|
});
|
|
1098
1165
|
}
|
|
1099
|
-
function useWalletNftListQuery({
|
|
1100
|
-
chainId,
|
|
1101
|
-
address: address2,
|
|
1102
|
-
...options
|
|
1103
|
-
}) {
|
|
1104
|
-
const { isLogin, token } = useUserInfo();
|
|
1105
|
-
return useQuery({
|
|
1106
|
-
queryKey: ["match-wallet-nft-list", token, chainId, address2],
|
|
1107
|
-
queryFn: async () => {
|
|
1108
|
-
const res = await getWalletNftListApi({
|
|
1109
|
-
chain_id: chainId.toString(),
|
|
1110
|
-
address: address2
|
|
1111
|
-
});
|
|
1112
|
-
if (!isSuccess(res)) {
|
|
1113
|
-
return [];
|
|
1114
|
-
}
|
|
1115
|
-
return res.data;
|
|
1116
|
-
},
|
|
1117
|
-
enabled: isLogin,
|
|
1118
|
-
...options
|
|
1119
|
-
});
|
|
1120
|
-
}
|
|
1121
|
-
function useWalletAssetListQuery({
|
|
1122
|
-
chainId,
|
|
1123
|
-
address: address2,
|
|
1124
|
-
...options
|
|
1125
|
-
}) {
|
|
1126
|
-
const { isLogin, token } = useUserInfo();
|
|
1127
|
-
return useQuery({
|
|
1128
|
-
queryKey: ["match-wallet-asset-list", token, chainId, address2],
|
|
1129
|
-
queryFn: async () => {
|
|
1130
|
-
const res = await getWalletAssetListApi({
|
|
1131
|
-
chain_id: chainId,
|
|
1132
|
-
address: address2
|
|
1133
|
-
});
|
|
1134
|
-
if (!isSuccess(res)) {
|
|
1135
|
-
return null;
|
|
1136
|
-
}
|
|
1137
|
-
return res.data;
|
|
1138
|
-
},
|
|
1139
|
-
enabled: isLogin,
|
|
1140
|
-
...options
|
|
1141
|
-
});
|
|
1142
|
-
}
|
|
1143
1166
|
|
|
1144
1167
|
// src/hooks/useMatchChain.tsx
|
|
1145
1168
|
import { useMemo as useMemo3, useState as useState6 } from "react";
|
|
1146
|
-
import { createPublicClient, http } from "viem";
|
|
1147
1169
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1148
1170
|
function useMatchChain() {
|
|
1149
1171
|
const chainListQuery = useChainListQuery();
|
|
@@ -1203,481 +1225,71 @@ function useMatchChain() {
|
|
|
1203
1225
|
content: ChangeNetwork
|
|
1204
1226
|
});
|
|
1205
1227
|
};
|
|
1206
|
-
const publicClient = useMemo3(() => {
|
|
1207
|
-
if (!chain) {
|
|
1208
|
-
return null;
|
|
1209
|
-
}
|
|
1210
|
-
return createPublicClient({
|
|
1211
|
-
chain,
|
|
1212
|
-
transport: http()
|
|
1213
|
-
});
|
|
1214
|
-
}, [chain]);
|
|
1215
1228
|
return {
|
|
1216
1229
|
list: chainListQuery.data,
|
|
1217
1230
|
chainId,
|
|
1218
1231
|
setChainId,
|
|
1219
1232
|
chain,
|
|
1220
1233
|
explorerLink,
|
|
1221
|
-
showChangeNetwork
|
|
1222
|
-
publicClient
|
|
1234
|
+
showChangeNetwork
|
|
1223
1235
|
};
|
|
1224
1236
|
}
|
|
1225
1237
|
|
|
1226
1238
|
// src/hooks/useMatchWallet.tsx
|
|
1227
1239
|
import { QRCode } from "react-qrcode";
|
|
1228
|
-
import { useEffect as useEffect6,
|
|
1229
|
-
|
|
1230
|
-
// example/src/config/contract.ts
|
|
1231
|
-
var address = "0x4143e29770fd63e24bb1f32d50bf8a590e34de4b";
|
|
1232
|
-
|
|
1233
|
-
// src/hooks/useMatchWallet.tsx
|
|
1234
|
-
import { useQuery as useQuery2, useQueryClient } from "@tanstack/react-query";
|
|
1235
|
-
|
|
1236
|
-
// src/config/index.tsx
|
|
1237
|
-
var EMAIL_INTERVAL = 60;
|
|
1238
|
-
var EMAIL_CODE_LENGTH = 6;
|
|
1239
|
-
var NATIVE_TOKEN_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
|
|
1240
|
-
|
|
1241
|
-
// src/hooks/useMatchWallet.tsx
|
|
1242
|
-
import { formatUnits } from "viem";
|
|
1240
|
+
import { useEffect as useEffect6, useState as useState7 } from "react";
|
|
1243
1241
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1244
|
-
|
|
1245
|
-
const
|
|
1242
|
+
function useMatchWallet() {
|
|
1243
|
+
const modal = useModal();
|
|
1246
1244
|
const { address: address2 } = useWallet();
|
|
1245
|
+
const chain = useMatchChain();
|
|
1247
1246
|
const [copied, setCopied] = useCopyClipboard();
|
|
1248
1247
|
const toast = useToast();
|
|
1249
1248
|
const onCopy = () => {
|
|
1250
1249
|
setCopied(address2);
|
|
1251
1250
|
toast.success("Copied!");
|
|
1252
1251
|
};
|
|
1253
|
-
const chainLink = chain.explorerLink("address/" + address2);
|
|
1254
|
-
return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
|
|
1255
|
-
/* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
|
|
1256
|
-
/* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
|
|
1257
|
-
/* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
|
|
1258
|
-
QRCode,
|
|
1259
|
-
{
|
|
1260
|
-
margin: "0",
|
|
1261
|
-
className: `matchid-qr-code`,
|
|
1262
|
-
value: address2
|
|
1263
|
-
}
|
|
1264
|
-
) }),
|
|
1265
|
-
/* @__PURE__ */ jsx6(
|
|
1266
|
-
"a",
|
|
1267
|
-
{
|
|
1268
|
-
href: chainLink,
|
|
1269
|
-
target: "_blank",
|
|
1270
|
-
className: `matchid-receive-link`,
|
|
1271
|
-
children: address2
|
|
1272
|
-
}
|
|
1273
|
-
)
|
|
1274
|
-
] }),
|
|
1275
|
-
/* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
|
|
1276
|
-
] });
|
|
1277
|
-
};
|
|
1278
|
-
var ImportTokenModal = ({ close }) => {
|
|
1279
|
-
const { token } = useUserInfo();
|
|
1280
|
-
const [address2, setAddress] = useState7("");
|
|
1281
|
-
const [symbol, setSymbol] = useState7("");
|
|
1282
|
-
const [decimals, setDecimals] = useState7("");
|
|
1283
|
-
const [error, setError] = useState7({});
|
|
1284
|
-
const { publicClient, chainId } = useMatchChain();
|
|
1285
|
-
const getContractInfo = async () => {
|
|
1286
|
-
if (!publicClient) return;
|
|
1287
|
-
const erc20Abi = [
|
|
1288
|
-
{
|
|
1289
|
-
name: "decimals",
|
|
1290
|
-
type: "function",
|
|
1291
|
-
stateMutability: "view",
|
|
1292
|
-
inputs: [],
|
|
1293
|
-
outputs: [{ name: "decimals", type: "uint8" }]
|
|
1294
|
-
},
|
|
1295
|
-
{
|
|
1296
|
-
name: "symbol",
|
|
1297
|
-
type: "function",
|
|
1298
|
-
stateMutability: "view",
|
|
1299
|
-
inputs: [],
|
|
1300
|
-
outputs: [{ name: "symbol", type: "string" }]
|
|
1301
|
-
}
|
|
1302
|
-
];
|
|
1303
|
-
const calls = [
|
|
1304
|
-
{
|
|
1305
|
-
address: address2,
|
|
1306
|
-
abi: erc20Abi,
|
|
1307
|
-
functionName: "symbol",
|
|
1308
|
-
args: []
|
|
1309
|
-
},
|
|
1310
|
-
{
|
|
1311
|
-
address: address2,
|
|
1312
|
-
abi: erc20Abi,
|
|
1313
|
-
functionName: "decimals",
|
|
1314
|
-
args: []
|
|
1315
|
-
}
|
|
1316
|
-
];
|
|
1317
|
-
try {
|
|
1318
|
-
const results = await publicClient.multicall({ contracts: calls });
|
|
1319
|
-
console.log("results", results);
|
|
1320
|
-
if (!symbol && results[0]?.status == "success") {
|
|
1321
|
-
setSymbol(results[0]?.result);
|
|
1322
|
-
}
|
|
1323
|
-
if (!decimals && results[1]?.status == "success") {
|
|
1324
|
-
setDecimals((results[1]?.result).toString());
|
|
1325
|
-
}
|
|
1326
|
-
} catch (error2) {
|
|
1327
|
-
setError({
|
|
1328
|
-
address: error2.message
|
|
1329
|
-
});
|
|
1330
|
-
}
|
|
1331
|
-
};
|
|
1332
|
-
useEffect6(() => {
|
|
1333
|
-
if (address2.length === 42) {
|
|
1334
|
-
const reg = /^0x[0-9a-fA-F]{40}$/;
|
|
1335
|
-
if (!reg.test(address2)) {
|
|
1336
|
-
setError({
|
|
1337
|
-
...error,
|
|
1338
|
-
address: "Invalid address"
|
|
1339
|
-
});
|
|
1340
|
-
} else {
|
|
1341
|
-
setError({
|
|
1342
|
-
...error,
|
|
1343
|
-
address: ""
|
|
1344
|
-
});
|
|
1345
|
-
publicClient && getContractInfo();
|
|
1346
|
-
}
|
|
1347
|
-
}
|
|
1348
|
-
}, [address2, publicClient]);
|
|
1349
|
-
const [loading, setLoading] = useState7(false);
|
|
1350
|
-
const toast = useToast();
|
|
1351
|
-
const queryClient2 = useQueryClient();
|
|
1352
|
-
const onImport = async () => {
|
|
1353
|
-
setLoading(true);
|
|
1354
|
-
try {
|
|
1355
|
-
const res = await userImportTokenApi({
|
|
1356
|
-
chain_id: chainId?.toString() || "",
|
|
1357
|
-
symbol,
|
|
1358
|
-
address: address2,
|
|
1359
|
-
decimals
|
|
1360
|
-
});
|
|
1361
|
-
if (isSuccess(res)) {
|
|
1362
|
-
toast.success("Imported successfully");
|
|
1363
|
-
queryClient2.invalidateQueries({
|
|
1364
|
-
queryKey: ["match-import-token-list", token, chainId]
|
|
1365
|
-
});
|
|
1366
|
-
close();
|
|
1367
|
-
} else {
|
|
1368
|
-
toast.error(res.message);
|
|
1369
|
-
}
|
|
1370
|
-
} catch (error2) {
|
|
1371
|
-
toast.error(error2.message);
|
|
1372
|
-
} finally {
|
|
1373
|
-
setLoading(false);
|
|
1374
|
-
}
|
|
1375
|
-
};
|
|
1376
|
-
const canImport = useMemo4(() => {
|
|
1377
|
-
if (!address2) {
|
|
1378
|
-
return false;
|
|
1379
|
-
}
|
|
1380
|
-
if (!symbol) {
|
|
1381
|
-
return false;
|
|
1382
|
-
}
|
|
1383
|
-
if (decimals.length === 0) {
|
|
1384
|
-
return false;
|
|
1385
|
-
}
|
|
1386
|
-
const reg = /^0x[0-9a-fA-F]{40}$/;
|
|
1387
|
-
if (!reg.test(address2)) {
|
|
1388
|
-
return false;
|
|
1389
|
-
}
|
|
1390
|
-
return true;
|
|
1391
|
-
}, [error, address2, symbol, decimals]);
|
|
1392
|
-
return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token`, children: [
|
|
1393
|
-
/* @__PURE__ */ jsxs5("div", { className: "matchid-import-token-form", children: [
|
|
1394
|
-
/* @__PURE__ */ jsx6(Field, { label: "Token Smart Contract", error: error.address, children: /* @__PURE__ */ jsx6(
|
|
1395
|
-
Input,
|
|
1396
|
-
{
|
|
1397
|
-
placeholder: "Enter the Token Smart Contract",
|
|
1398
|
-
value: address2,
|
|
1399
|
-
onChange: (e) => setAddress(e.target.value),
|
|
1400
|
-
maxLength: 42
|
|
1401
|
-
}
|
|
1402
|
-
) }),
|
|
1403
|
-
/* @__PURE__ */ jsx6(Field, { label: "Token Symbol", error: error.symbol, children: /* @__PURE__ */ jsx6(
|
|
1404
|
-
Input,
|
|
1405
|
-
{
|
|
1406
|
-
placeholder: "Enter the Token Symbol",
|
|
1407
|
-
value: symbol,
|
|
1408
|
-
onChange: (e) => setSymbol(e.target.value),
|
|
1409
|
-
maxLength: 16
|
|
1410
|
-
}
|
|
1411
|
-
) }),
|
|
1412
|
-
/* @__PURE__ */ jsx6(Field, { label: "Decimals", error: error.decimals, children: /* @__PURE__ */ jsx6(
|
|
1413
|
-
Input,
|
|
1414
|
-
{
|
|
1415
|
-
placeholder: "Enter the Decimals",
|
|
1416
|
-
type: "number",
|
|
1417
|
-
value: decimals,
|
|
1418
|
-
onChange: (e) => setDecimals(e.target.value)
|
|
1419
|
-
}
|
|
1420
|
-
) })
|
|
1421
|
-
] }),
|
|
1422
|
-
/* @__PURE__ */ jsx6(
|
|
1423
|
-
Button,
|
|
1424
|
-
{
|
|
1425
|
-
size: "lg",
|
|
1426
|
-
onClick: onImport,
|
|
1427
|
-
block: true,
|
|
1428
|
-
loading,
|
|
1429
|
-
disabled: !canImport,
|
|
1430
|
-
highlight: true,
|
|
1431
|
-
children: "Import"
|
|
1432
|
-
}
|
|
1433
|
-
)
|
|
1434
|
-
] });
|
|
1435
|
-
};
|
|
1436
|
-
function useMatchWallet() {
|
|
1437
|
-
const modal = useModal();
|
|
1438
1252
|
const showReceiveModal = () => {
|
|
1253
|
+
const chainLink = chain.explorerLink("address/" + address2);
|
|
1254
|
+
const ReceiveModal = () => {
|
|
1255
|
+
return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
|
|
1256
|
+
/* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
|
|
1257
|
+
/* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
|
|
1258
|
+
/* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
|
|
1259
|
+
QRCode,
|
|
1260
|
+
{
|
|
1261
|
+
margin: "0",
|
|
1262
|
+
className: `matchid-qr-code`,
|
|
1263
|
+
value: address2
|
|
1264
|
+
}
|
|
1265
|
+
) }),
|
|
1266
|
+
/* @__PURE__ */ jsx6(
|
|
1267
|
+
"a",
|
|
1268
|
+
{
|
|
1269
|
+
href: chainLink,
|
|
1270
|
+
target: "_blank",
|
|
1271
|
+
className: `matchid-receive-link`,
|
|
1272
|
+
children: address2
|
|
1273
|
+
}
|
|
1274
|
+
)
|
|
1275
|
+
] }),
|
|
1276
|
+
/* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
|
|
1277
|
+
] });
|
|
1278
|
+
};
|
|
1439
1279
|
modal.open({
|
|
1440
1280
|
title: "Receive",
|
|
1441
1281
|
content: ReceiveModal
|
|
1442
1282
|
});
|
|
1443
1283
|
};
|
|
1444
|
-
const showImportTokenModal = () => {
|
|
1445
|
-
modal.open({
|
|
1446
|
-
title: "Customized Token",
|
|
1447
|
-
content: ImportTokenModal
|
|
1448
|
-
});
|
|
1449
|
-
};
|
|
1450
|
-
const showSendListModal = () => {
|
|
1451
|
-
modal.open({
|
|
1452
|
-
title: "Send",
|
|
1453
|
-
content: TokenSendList
|
|
1454
|
-
});
|
|
1455
|
-
};
|
|
1456
|
-
return {
|
|
1457
|
-
showReceiveModal,
|
|
1458
|
-
showImportTokenModal,
|
|
1459
|
-
showSendListModal
|
|
1460
|
-
};
|
|
1461
|
-
}
|
|
1462
|
-
function useMatchWalletRecords({
|
|
1463
|
-
pageSize = 50
|
|
1464
|
-
}) {
|
|
1465
|
-
const [hasMore, setHasMore] = useState7(true);
|
|
1466
|
-
const [items, setItems] = useState7([]);
|
|
1467
|
-
const { chainId } = useMatchChain();
|
|
1468
|
-
const hasMoreRef = useRef(hasMore);
|
|
1469
|
-
const fetchMoreData = async () => {
|
|
1470
|
-
if (!hasMoreRef.current) {
|
|
1471
|
-
return;
|
|
1472
|
-
}
|
|
1473
|
-
const chainIdStr = chainId ? chainId.toString() : "";
|
|
1474
|
-
const res = await getUserWalletTransactionsApi({
|
|
1475
|
-
chain_id: chainIdStr,
|
|
1476
|
-
limit: pageSize,
|
|
1477
|
-
offset: items.length
|
|
1478
|
-
});
|
|
1479
|
-
if (isSuccess(res)) {
|
|
1480
|
-
if (res.data && res.data.transactions.length > 0) {
|
|
1481
|
-
setItems(items.concat(res.data.transactions));
|
|
1482
|
-
}
|
|
1483
|
-
hasMoreRef.current = res.data && res.data.transactions.length >= pageSize;
|
|
1484
|
-
setHasMore(res.data && res.data.transactions.length >= pageSize);
|
|
1485
|
-
}
|
|
1486
|
-
};
|
|
1487
|
-
const onInit = async () => {
|
|
1488
|
-
setItems([]);
|
|
1489
|
-
setHasMore(true);
|
|
1490
|
-
hasMoreRef.current = true;
|
|
1491
|
-
fetchMoreData();
|
|
1492
|
-
};
|
|
1493
|
-
useEffect6(() => {
|
|
1494
|
-
if (chainId && address) {
|
|
1495
|
-
onInit();
|
|
1496
|
-
}
|
|
1497
|
-
}, [chainId, address]);
|
|
1498
1284
|
return {
|
|
1499
|
-
|
|
1500
|
-
fetchMoreData,
|
|
1501
|
-
hasMore
|
|
1502
|
-
};
|
|
1503
|
-
}
|
|
1504
|
-
function useMatchWalletAssets() {
|
|
1505
|
-
const { chainId } = useMatchChain();
|
|
1506
|
-
const importTokenQuery = useImportTokenListQuery({
|
|
1507
|
-
chainId: chainId || 0
|
|
1508
|
-
});
|
|
1509
|
-
const assetListQuery = useAssetListQuery({
|
|
1510
|
-
chainId: chainId || 0
|
|
1511
|
-
});
|
|
1512
|
-
const mergedAssets = useMemo4(() => {
|
|
1513
|
-
if (!assetListQuery.data && !importTokenQuery.data) return [];
|
|
1514
|
-
const assetList = (assetListQuery.data || []).map((asset) => ({
|
|
1515
|
-
...asset,
|
|
1516
|
-
isAuto: true
|
|
1517
|
-
}));
|
|
1518
|
-
const importTokens = (importTokenQuery.data || []).map((token) => ({
|
|
1519
|
-
...token,
|
|
1520
|
-
isCustom: true
|
|
1521
|
-
}));
|
|
1522
|
-
const assetMap = /* @__PURE__ */ new Map();
|
|
1523
|
-
assetList.forEach((asset) => {
|
|
1524
|
-
const key = `${asset.chain_id}-${asset.address.toLowerCase()}`;
|
|
1525
|
-
assetMap.set(key, asset);
|
|
1526
|
-
});
|
|
1527
|
-
importTokens.forEach((token) => {
|
|
1528
|
-
const key = `${token.chain_id}-${token.address.toLowerCase()}`;
|
|
1529
|
-
if (assetMap.has(key)) {
|
|
1530
|
-
const existing = assetMap.get(key);
|
|
1531
|
-
assetMap.set(key, {
|
|
1532
|
-
...existing,
|
|
1533
|
-
symbol: token.symbol,
|
|
1534
|
-
decimals: token.decimals,
|
|
1535
|
-
isCustom: true,
|
|
1536
|
-
isAuto: existing.isAuto ?? false
|
|
1537
|
-
});
|
|
1538
|
-
} else {
|
|
1539
|
-
assetMap.set(key, token);
|
|
1540
|
-
}
|
|
1541
|
-
});
|
|
1542
|
-
return Array.from(assetMap.values()).sort((a, b) => {
|
|
1543
|
-
return (b.isAuto ? 1 : 0) - (a.isAuto ? 1 : 0);
|
|
1544
|
-
});
|
|
1545
|
-
}, [assetListQuery.data, importTokenQuery.data]);
|
|
1546
|
-
return {
|
|
1547
|
-
importTokenQuery,
|
|
1548
|
-
assetListQuery,
|
|
1549
|
-
mergedAssets
|
|
1550
|
-
};
|
|
1551
|
-
}
|
|
1552
|
-
var MULTICALL_LIMIT = 100;
|
|
1553
|
-
function useMatchWalletAssetList({
|
|
1554
|
-
list
|
|
1555
|
-
}) {
|
|
1556
|
-
const { publicClient, chain } = useMatchChain();
|
|
1557
|
-
const { address: address2 } = useWallet();
|
|
1558
|
-
const { assets, setAssets } = useLocalStore_default();
|
|
1559
|
-
const nativeToken = list.find((asset) => asset.address.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase()) || {
|
|
1560
|
-
chain_id: chain?.id || "",
|
|
1561
|
-
address: NATIVE_TOKEN_ADDRESS,
|
|
1562
|
-
decimals: 18,
|
|
1563
|
-
symbol: chain?.nativeCurrency.symbol,
|
|
1564
|
-
name: chain?.nativeCurrency.name,
|
|
1565
|
-
balance: 0
|
|
1566
|
-
};
|
|
1567
|
-
const nativeBalanceQuery = useQuery2({
|
|
1568
|
-
queryKey: ["nativeBalance", nativeToken?.chain_id],
|
|
1569
|
-
queryFn: async () => {
|
|
1570
|
-
if (!nativeToken || !publicClient) return null;
|
|
1571
|
-
try {
|
|
1572
|
-
return await publicClient.getBalance({
|
|
1573
|
-
address: address2
|
|
1574
|
-
});
|
|
1575
|
-
} catch (error) {
|
|
1576
|
-
console.error("Native Token Balance Error:", error);
|
|
1577
|
-
return null;
|
|
1578
|
-
}
|
|
1579
|
-
},
|
|
1580
|
-
enabled: !!nativeToken && !!publicClient,
|
|
1581
|
-
refetchInterval: 15e3,
|
|
1582
|
-
// Refresh every 15 seconds
|
|
1583
|
-
retry: 3
|
|
1584
|
-
// Retry up to 3 times if failed
|
|
1585
|
-
});
|
|
1586
|
-
const erc20Tokens = useMemo4(() => list.filter((asset) => asset.address !== NATIVE_TOKEN_ADDRESS), [list]);
|
|
1587
|
-
const erc20Abi = [
|
|
1588
|
-
{
|
|
1589
|
-
"constant": true,
|
|
1590
|
-
"inputs": [
|
|
1591
|
-
{
|
|
1592
|
-
"name": "_owner",
|
|
1593
|
-
"type": "address"
|
|
1594
|
-
}
|
|
1595
|
-
],
|
|
1596
|
-
"name": "balanceOf",
|
|
1597
|
-
"outputs": [
|
|
1598
|
-
{
|
|
1599
|
-
"name": "balance",
|
|
1600
|
-
"type": "uint256"
|
|
1601
|
-
}
|
|
1602
|
-
],
|
|
1603
|
-
"payable": false,
|
|
1604
|
-
"stateMutability": "view",
|
|
1605
|
-
"type": "function"
|
|
1606
|
-
}
|
|
1607
|
-
];
|
|
1608
|
-
const erc20BalanceQuery = useQuery2({
|
|
1609
|
-
queryKey: ["erc20Balances", erc20Tokens.map((token) => token.address)],
|
|
1610
|
-
queryFn: async () => {
|
|
1611
|
-
if (!erc20Tokens.length || !publicClient) return [];
|
|
1612
|
-
const calls = erc20Tokens.map((token) => ({
|
|
1613
|
-
address: token.address,
|
|
1614
|
-
abi: erc20Abi,
|
|
1615
|
-
functionName: "balanceOf",
|
|
1616
|
-
args: [address2]
|
|
1617
|
-
}));
|
|
1618
|
-
let balances = [];
|
|
1619
|
-
for (let i = 0; i < calls.length; i += MULTICALL_LIMIT) {
|
|
1620
|
-
const batchCalls = calls.slice(i, i + MULTICALL_LIMIT);
|
|
1621
|
-
try {
|
|
1622
|
-
const results = await publicClient.multicall({ contracts: batchCalls });
|
|
1623
|
-
balances.push(...results);
|
|
1624
|
-
} catch (error) {
|
|
1625
|
-
console.error("MultiCall Error:", error);
|
|
1626
|
-
}
|
|
1627
|
-
}
|
|
1628
|
-
return balances;
|
|
1629
|
-
},
|
|
1630
|
-
enabled: erc20Tokens.length > 0 && !!publicClient,
|
|
1631
|
-
refetchInterval: 15e3,
|
|
1632
|
-
// Refresh every 15 seconds
|
|
1633
|
-
retry: 3
|
|
1634
|
-
});
|
|
1635
|
-
const enrichedAssets = useMemo4(() => {
|
|
1636
|
-
if (!list) return [];
|
|
1637
|
-
const erc20Balances = erc20BalanceQuery.data || [];
|
|
1638
|
-
return list.map((asset) => {
|
|
1639
|
-
let balanceValue = "0";
|
|
1640
|
-
let balance = 0;
|
|
1641
|
-
const decimals = typeof asset.decimals === "string" ? parseInt(asset.decimals) : asset.decimals;
|
|
1642
|
-
if (asset.address === NATIVE_TOKEN_ADDRESS) {
|
|
1643
|
-
balanceValue = nativeBalanceQuery.data?.toString() || "0";
|
|
1644
|
-
balance = nativeBalanceQuery.data ? Number(formatUnits(nativeBalanceQuery.data, decimals)) : 0;
|
|
1645
|
-
} else {
|
|
1646
|
-
const index = erc20Tokens.findIndex((t) => t.address === asset.address);
|
|
1647
|
-
if (index !== -1 && erc20Balances[index] && erc20Balances[index].status === "success") {
|
|
1648
|
-
balance = Number(formatUnits(erc20Balances[index].result, decimals));
|
|
1649
|
-
balanceValue = erc20Balances[index].result?.toString() || "0";
|
|
1650
|
-
}
|
|
1651
|
-
}
|
|
1652
|
-
const value = asset.isAuto ? balance * (asset.price || 0) : 0;
|
|
1653
|
-
return { ...asset, balance, value, balanceValue };
|
|
1654
|
-
});
|
|
1655
|
-
}, [list, nativeBalanceQuery.data, erc20BalanceQuery.data]);
|
|
1656
|
-
useEffect6(() => {
|
|
1657
|
-
const list2 = enrichedAssets.sort((a, b) => {
|
|
1658
|
-
if (a.address === NATIVE_TOKEN_ADDRESS) return -1;
|
|
1659
|
-
if (b.address === NATIVE_TOKEN_ADDRESS) return 1;
|
|
1660
|
-
if (a.isAuto && b.isAuto) return b.value - a.value;
|
|
1661
|
-
if (a.isAuto) return -1;
|
|
1662
|
-
if (b.isAuto) return 1;
|
|
1663
|
-
if (a.isCustom && !a.isAuto && a.balance > 0) return -1;
|
|
1664
|
-
if (b.isCustom && !b.isAuto && b.balance > 0) return 1;
|
|
1665
|
-
return 0;
|
|
1666
|
-
});
|
|
1667
|
-
setAssets(list2);
|
|
1668
|
-
}, [enrichedAssets]);
|
|
1669
|
-
return {
|
|
1670
|
-
list: assets,
|
|
1671
|
-
isLoading: nativeBalanceQuery.isLoading || erc20BalanceQuery.isLoading,
|
|
1672
|
-
nativeBalance: nativeBalanceQuery.data,
|
|
1673
|
-
erc20Balances: erc20BalanceQuery.data
|
|
1285
|
+
showReceiveModal
|
|
1674
1286
|
};
|
|
1675
1287
|
}
|
|
1676
1288
|
|
|
1677
1289
|
// src/hooks/useReceipt.tsx
|
|
1678
1290
|
import { useState as useState8, useCallback as useCallback4, useEffect as useEffect7 } from "react";
|
|
1679
|
-
import { useQuery as
|
|
1680
|
-
import { createPublicClient
|
|
1291
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
1292
|
+
import { createPublicClient, defineChain, http } from "viem";
|
|
1681
1293
|
var CACHE_TTL = 86400 * 30 * 1e3;
|
|
1682
1294
|
var MAX_CACHE_SIZE = 500;
|
|
1683
1295
|
var STORAGE_KEY = "match_receipt_logs";
|
|
@@ -1785,7 +1397,7 @@ function useReceipt({
|
|
|
1785
1397
|
const cache = useReceiptCache();
|
|
1786
1398
|
const chain = list?.find((item) => item.id === chainId);
|
|
1787
1399
|
const [shouldRefetch, setShouldRefetch] = useState8(true);
|
|
1788
|
-
const query =
|
|
1400
|
+
const query = useQuery2({
|
|
1789
1401
|
queryKey: ["match-tx-receipt", hash, chain],
|
|
1790
1402
|
queryFn: async () => {
|
|
1791
1403
|
if (!chain || !hash) return false;
|
|
@@ -1794,11 +1406,12 @@ function useReceipt({
|
|
|
1794
1406
|
return cache.get(cacheKey);
|
|
1795
1407
|
}
|
|
1796
1408
|
try {
|
|
1797
|
-
const publicClient =
|
|
1409
|
+
const publicClient = createPublicClient({
|
|
1410
|
+
//@ts-ignore
|
|
1798
1411
|
chain: defineChain(chain),
|
|
1799
|
-
transport:
|
|
1412
|
+
transport: http()
|
|
1800
1413
|
});
|
|
1801
|
-
const receipt = await publicClient.
|
|
1414
|
+
const receipt = await publicClient.getTransaction({ hash });
|
|
1802
1415
|
if (!receipt) {
|
|
1803
1416
|
return false;
|
|
1804
1417
|
}
|
|
@@ -1814,243 +1427,14 @@ function useReceipt({
|
|
|
1814
1427
|
if (query.data) {
|
|
1815
1428
|
setShouldRefetch(false);
|
|
1816
1429
|
}
|
|
1817
|
-
}, [query.data]);
|
|
1818
|
-
return query;
|
|
1819
|
-
}
|
|
1820
|
-
|
|
1821
|
-
// src/hooks/useTransaction.tsx
|
|
1822
|
-
import { useState as useState9, useCallback as useCallback5, useEffect as useEffect8 } from "react";
|
|
1823
|
-
import { useQuery as useQuery4 } from "@tanstack/react-query";
|
|
1824
|
-
import { createPublicClient as createPublicClient3, defineChain as defineChain2, http as http3 } from "viem";
|
|
1825
|
-
var CACHE_TTL2 = 86400 * 30 * 1e3;
|
|
1826
|
-
var MAX_CACHE_SIZE2 = 500;
|
|
1827
|
-
var STORAGE_KEY2 = "match_transaction_logs";
|
|
1828
|
-
function useTransactionCache() {
|
|
1829
|
-
const [cache, setCache] = useState9(/* @__PURE__ */ new Map());
|
|
1830
|
-
const isLocalStorageAvailable = (() => {
|
|
1831
|
-
try {
|
|
1832
|
-
const testKey = "__test__";
|
|
1833
|
-
localStorage.setItem(testKey, "1");
|
|
1834
|
-
localStorage.removeItem(testKey);
|
|
1835
|
-
return true;
|
|
1836
|
-
} catch (e) {
|
|
1837
|
-
return false;
|
|
1838
|
-
}
|
|
1839
|
-
})();
|
|
1840
|
-
useEffect8(() => {
|
|
1841
|
-
if (isLocalStorageAvailable) {
|
|
1842
|
-
try {
|
|
1843
|
-
const storedData = localStorage.getItem(STORAGE_KEY2);
|
|
1844
|
-
if (storedData) {
|
|
1845
|
-
try {
|
|
1846
|
-
const parsed = JSON.parse(storedData);
|
|
1847
|
-
const now = Date.now();
|
|
1848
|
-
const validEntries = Object.entries(parsed).filter(([_, entry]) => typeof entry === "object" && entry !== null && "timestamp" in entry && now - entry.timestamp <= CACHE_TTL2).map(([key, entry]) => [key, entry]);
|
|
1849
|
-
setCache(new Map(validEntries));
|
|
1850
|
-
} catch (e) {
|
|
1851
|
-
console.error("Failed to parse cache from localStorage:", e);
|
|
1852
|
-
}
|
|
1853
|
-
}
|
|
1854
|
-
} catch (e) {
|
|
1855
|
-
console.error("Failed to load cache from localStorage:", e);
|
|
1856
|
-
}
|
|
1857
|
-
}
|
|
1858
|
-
}, []);
|
|
1859
|
-
const updateLocalStorage = useCallback5((updatedCache) => {
|
|
1860
|
-
if (isLocalStorageAvailable) {
|
|
1861
|
-
try {
|
|
1862
|
-
const storedData = localStorage.getItem(STORAGE_KEY2);
|
|
1863
|
-
let parsed = {};
|
|
1864
|
-
if (storedData) {
|
|
1865
|
-
parsed = JSON.parse(storedData);
|
|
1866
|
-
}
|
|
1867
|
-
updatedCache.forEach((entry, key) => {
|
|
1868
|
-
parsed[key] = entry;
|
|
1869
|
-
});
|
|
1870
|
-
localStorage.setItem(STORAGE_KEY2, JSON.stringify(parsed));
|
|
1871
|
-
} catch (e) {
|
|
1872
|
-
console.error("Failed to update localStorage:", e);
|
|
1873
|
-
}
|
|
1874
|
-
}
|
|
1875
|
-
}, []);
|
|
1876
|
-
const set = useCallback5((key, value) => {
|
|
1877
|
-
const now = Date.now();
|
|
1878
|
-
const newCache = new Map(cache);
|
|
1879
|
-
newCache.forEach((entry, k) => {
|
|
1880
|
-
if (now - entry.timestamp > CACHE_TTL2) {
|
|
1881
|
-
newCache.delete(k);
|
|
1882
|
-
}
|
|
1883
|
-
});
|
|
1884
|
-
if (newCache.size >= MAX_CACHE_SIZE2) {
|
|
1885
|
-
const firstKey = newCache.keys().next().value;
|
|
1886
|
-
if (firstKey !== void 0) {
|
|
1887
|
-
newCache.delete(firstKey);
|
|
1888
|
-
}
|
|
1889
|
-
}
|
|
1890
|
-
newCache.set(key, { value, timestamp: now });
|
|
1891
|
-
setCache(newCache);
|
|
1892
|
-
updateLocalStorage(newCache);
|
|
1893
|
-
}, [cache, updateLocalStorage]);
|
|
1894
|
-
const get = useCallback5((key) => {
|
|
1895
|
-
const entry = cache.get(key);
|
|
1896
|
-
if (entry) {
|
|
1897
|
-
if (Date.now() - entry.timestamp > CACHE_TTL2) {
|
|
1898
|
-
const newCache = new Map(cache);
|
|
1899
|
-
newCache.delete(key);
|
|
1900
|
-
setCache(newCache);
|
|
1901
|
-
updateLocalStorage(newCache);
|
|
1902
|
-
return void 0;
|
|
1903
|
-
}
|
|
1904
|
-
return entry.value;
|
|
1905
|
-
}
|
|
1906
|
-
return void 0;
|
|
1907
|
-
}, [cache, updateLocalStorage]);
|
|
1908
|
-
const del = useCallback5((key) => {
|
|
1909
|
-
if (cache.has(key)) {
|
|
1910
|
-
const newCache = new Map(cache);
|
|
1911
|
-
newCache.delete(key);
|
|
1912
|
-
setCache(newCache);
|
|
1913
|
-
updateLocalStorage(newCache);
|
|
1914
|
-
}
|
|
1915
|
-
}, [cache, updateLocalStorage]);
|
|
1916
|
-
const clear = useCallback5(() => {
|
|
1917
|
-
setCache(/* @__PURE__ */ new Map());
|
|
1918
|
-
if (isLocalStorageAvailable) {
|
|
1919
|
-
localStorage.removeItem(STORAGE_KEY2);
|
|
1920
|
-
}
|
|
1921
|
-
}, [isLocalStorageAvailable]);
|
|
1922
|
-
return { set, get, del, clear };
|
|
1923
|
-
}
|
|
1924
|
-
function useTransaction({
|
|
1925
|
-
chainId,
|
|
1926
|
-
hash
|
|
1927
|
-
}) {
|
|
1928
|
-
const { list } = useMatchChain();
|
|
1929
|
-
const cache = useTransactionCache();
|
|
1930
|
-
const chain = list?.find((item) => item.id === chainId);
|
|
1931
|
-
const [shouldRefetch, setShouldRefetch] = useState9(true);
|
|
1932
|
-
const query = useQuery4({
|
|
1933
|
-
queryKey: ["match-tx-transaction", hash, chain],
|
|
1934
|
-
queryFn: async () => {
|
|
1935
|
-
if (!chain || !hash) return false;
|
|
1936
|
-
const cacheKey = `${chain.id}-${hash}`;
|
|
1937
|
-
if (cache.get(cacheKey)) {
|
|
1938
|
-
return cache.get(cacheKey);
|
|
1939
|
-
}
|
|
1940
|
-
try {
|
|
1941
|
-
const publicClient = createPublicClient3({
|
|
1942
|
-
chain: defineChain2(chain),
|
|
1943
|
-
transport: http3()
|
|
1944
|
-
});
|
|
1945
|
-
const transaction = await publicClient.getTransaction({ hash });
|
|
1946
|
-
if (!transaction) {
|
|
1947
|
-
return false;
|
|
1948
|
-
}
|
|
1949
|
-
cache.set(cacheKey, transaction);
|
|
1950
|
-
return transaction;
|
|
1951
|
-
} catch (e) {
|
|
1952
|
-
return false;
|
|
1953
|
-
}
|
|
1954
|
-
},
|
|
1955
|
-
refetchInterval: shouldRefetch ? 1e4 : false
|
|
1956
|
-
});
|
|
1957
|
-
useEffect8(() => {
|
|
1958
|
-
if (query.data) {
|
|
1959
|
-
setShouldRefetch(false);
|
|
1960
|
-
}
|
|
1961
|
-
}, [query.data]);
|
|
1962
|
-
return query;
|
|
1963
|
-
}
|
|
1964
|
-
|
|
1965
|
-
// src/store/useModalStore.ts
|
|
1966
|
-
import { create as create3 } from "zustand";
|
|
1967
|
-
|
|
1968
|
-
// src/hooks/useConfig.tsx
|
|
1969
|
-
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
1970
|
-
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
1971
|
-
var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
1972
|
-
function useWalletConfig() {
|
|
1973
|
-
const isDownMd = useDownMd();
|
|
1974
|
-
const walletMap = {
|
|
1975
|
-
evm: {
|
|
1976
|
-
icon: /* @__PURE__ */ jsx7(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1977
|
-
activeIcon: /* @__PURE__ */ jsx7(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1978
|
-
name: "EVM",
|
|
1979
|
-
method: "evm"
|
|
1980
|
-
},
|
|
1981
|
-
sol: {
|
|
1982
|
-
icon: /* @__PURE__ */ jsx7(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1983
|
-
activeIcon: /* @__PURE__ */ jsx7(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1984
|
-
name: "SOL",
|
|
1985
|
-
method: "sol"
|
|
1986
|
-
},
|
|
1987
|
-
btc: {
|
|
1988
|
-
icon: /* @__PURE__ */ jsx7(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1989
|
-
activeIcon: /* @__PURE__ */ jsx7(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1990
|
-
name: "BTC",
|
|
1991
|
-
method: "btc"
|
|
1992
|
-
},
|
|
1993
|
-
tron: {
|
|
1994
|
-
icon: /* @__PURE__ */ jsx7(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1995
|
-
activeIcon: /* @__PURE__ */ jsx7(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1996
|
-
name: "TRON",
|
|
1997
|
-
method: "tron"
|
|
1998
|
-
},
|
|
1999
|
-
ton: {
|
|
2000
|
-
icon: /* @__PURE__ */ jsx7(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2001
|
-
activeIcon: /* @__PURE__ */ jsx7(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
2002
|
-
name: "TON",
|
|
2003
|
-
method: "ton"
|
|
2004
|
-
}
|
|
2005
|
-
};
|
|
2006
|
-
return {
|
|
2007
|
-
walletMap
|
|
2008
|
-
};
|
|
1430
|
+
}, [query.data]);
|
|
1431
|
+
return query;
|
|
2009
1432
|
}
|
|
2010
1433
|
|
|
2011
|
-
// src/store/useModalStore.ts
|
|
2012
|
-
var useSOLModalStore = create3((set) => ({
|
|
2013
|
-
isOpen: false,
|
|
2014
|
-
type: "",
|
|
2015
|
-
open: (type) => set({ isOpen: true, type }),
|
|
2016
|
-
close: () => set({ isOpen: false })
|
|
2017
|
-
}));
|
|
2018
|
-
var useTRONModalStore = create3((set) => ({
|
|
2019
|
-
isOpen: false,
|
|
2020
|
-
type: "",
|
|
2021
|
-
open: (type) => set({ isOpen: true, type }),
|
|
2022
|
-
close: () => set({ isOpen: false })
|
|
2023
|
-
}));
|
|
2024
|
-
var useTONModalStore = create3((set) => ({
|
|
2025
|
-
isOpen: false,
|
|
2026
|
-
type: "",
|
|
2027
|
-
open: (type) => set({ isOpen: true, type }),
|
|
2028
|
-
close: () => set({ isOpen: false })
|
|
2029
|
-
}));
|
|
2030
|
-
var useBTCModalStore = create3((set) => ({
|
|
2031
|
-
isOpen: false,
|
|
2032
|
-
type: "",
|
|
2033
|
-
open: (type) => set({ isOpen: true, type }),
|
|
2034
|
-
close: () => set({ isOpen: false })
|
|
2035
|
-
}));
|
|
2036
|
-
var useCEXBindModalStore = create3((set) => ({
|
|
2037
|
-
type: "",
|
|
2038
|
-
isOpen: false,
|
|
2039
|
-
open: (type) => set({ isOpen: true, type }),
|
|
2040
|
-
close: () => set({ isOpen: false })
|
|
2041
|
-
}));
|
|
2042
|
-
var useWalletModalStore = create3((set) => ({
|
|
2043
|
-
isOpen: false,
|
|
2044
|
-
type: "",
|
|
2045
|
-
methods: [],
|
|
2046
|
-
open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
|
|
2047
|
-
close: () => set({ isOpen: false })
|
|
2048
|
-
}));
|
|
2049
|
-
|
|
2050
1434
|
// src/components/CEXBindModal/index.tsx
|
|
2051
|
-
import { useEffect as
|
|
1435
|
+
import { useEffect as useEffect8, useMemo as useMemo5, useState as useState9 } from "react";
|
|
2052
1436
|
import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
|
|
2053
|
-
import { jsx as
|
|
1437
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2054
1438
|
function CEXBindModal({
|
|
2055
1439
|
onClose,
|
|
2056
1440
|
type,
|
|
@@ -2059,16 +1443,16 @@ function CEXBindModal({
|
|
|
2059
1443
|
}) {
|
|
2060
1444
|
const intl = useIntl2();
|
|
2061
1445
|
const { events } = useMatch();
|
|
2062
|
-
const [APIPassphrase, setAPIPassphrase] =
|
|
1446
|
+
const [APIPassphrase, setAPIPassphrase] = useState9("");
|
|
2063
1447
|
const { refreshOverview } = useUserInfo();
|
|
2064
|
-
const [loading, setLoading] =
|
|
2065
|
-
const [key, setKey] =
|
|
2066
|
-
const [secret, setSecret] =
|
|
2067
|
-
const [error, setError] =
|
|
1448
|
+
const [loading, setLoading] = useState9(false);
|
|
1449
|
+
const [key, setKey] = useState9("");
|
|
1450
|
+
const [secret, setSecret] = useState9("");
|
|
1451
|
+
const [error, setError] = useState9("");
|
|
2068
1452
|
const needPassphrase = useMemo5(() => {
|
|
2069
1453
|
return ["bitget", "okx"].includes(type.toLowerCase());
|
|
2070
1454
|
}, [type]);
|
|
2071
|
-
|
|
1455
|
+
useEffect8(() => {
|
|
2072
1456
|
if (isOpen) {
|
|
2073
1457
|
setSecret("");
|
|
2074
1458
|
setKey("");
|
|
@@ -2105,20 +1489,20 @@ function CEXBindModal({
|
|
|
2105
1489
|
setLoading(false);
|
|
2106
1490
|
}
|
|
2107
1491
|
};
|
|
2108
|
-
return /* @__PURE__ */
|
|
1492
|
+
return /* @__PURE__ */ jsx7(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
|
|
2109
1493
|
id: "CEXBindTitle"
|
|
2110
1494
|
}, {
|
|
2111
1495
|
type
|
|
2112
1496
|
}), ...props, children: /* @__PURE__ */ jsxs6("div", { className: "matchid-cex-modal", children: [
|
|
2113
1497
|
/* @__PURE__ */ jsxs6("div", { children: [
|
|
2114
|
-
/* @__PURE__ */
|
|
2115
|
-
/* @__PURE__ */
|
|
2116
|
-
/* @__PURE__ */
|
|
2117
|
-
/* @__PURE__ */
|
|
1498
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindAttention" }) }),
|
|
1499
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips1" }) }),
|
|
1500
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips2" }) }),
|
|
1501
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips3" }) })
|
|
2118
1502
|
] }),
|
|
2119
|
-
/* @__PURE__ */
|
|
1503
|
+
/* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
|
|
2120
1504
|
id: "CEXBindApiKey"
|
|
2121
|
-
}), children: /* @__PURE__ */
|
|
1505
|
+
}), children: /* @__PURE__ */ jsx7(
|
|
2122
1506
|
Input,
|
|
2123
1507
|
{
|
|
2124
1508
|
value: key,
|
|
@@ -2126,9 +1510,9 @@ function CEXBindModal({
|
|
|
2126
1510
|
placeholder: "**** **** ****"
|
|
2127
1511
|
}
|
|
2128
1512
|
) }),
|
|
2129
|
-
/* @__PURE__ */
|
|
1513
|
+
/* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
|
|
2130
1514
|
id: "CEXBindApiSecretKey"
|
|
2131
|
-
}), error: !needPassphrase && error, children: /* @__PURE__ */
|
|
1515
|
+
}), error: !needPassphrase && error, children: /* @__PURE__ */ jsx7(
|
|
2132
1516
|
Input,
|
|
2133
1517
|
{
|
|
2134
1518
|
value: secret,
|
|
@@ -2136,9 +1520,9 @@ function CEXBindModal({
|
|
|
2136
1520
|
placeholder: "**** **** ****"
|
|
2137
1521
|
}
|
|
2138
1522
|
) }),
|
|
2139
|
-
needPassphrase && /* @__PURE__ */
|
|
1523
|
+
needPassphrase && /* @__PURE__ */ jsx7(Field, { error, label: intl.formatMessage({
|
|
2140
1524
|
id: "CEXBindApiPassphrase"
|
|
2141
|
-
}), children: /* @__PURE__ */
|
|
1525
|
+
}), children: /* @__PURE__ */ jsx7(
|
|
2142
1526
|
Input,
|
|
2143
1527
|
{
|
|
2144
1528
|
value: APIPassphrase,
|
|
@@ -2146,7 +1530,7 @@ function CEXBindModal({
|
|
|
2146
1530
|
placeholder: "**** **** ****"
|
|
2147
1531
|
}
|
|
2148
1532
|
) }),
|
|
2149
|
-
/* @__PURE__ */
|
|
1533
|
+
/* @__PURE__ */ jsx7(
|
|
2150
1534
|
Button,
|
|
2151
1535
|
{
|
|
2152
1536
|
onClick: SubmitApi,
|
|
@@ -2154,14 +1538,14 @@ function CEXBindModal({
|
|
|
2154
1538
|
block: true,
|
|
2155
1539
|
loading,
|
|
2156
1540
|
disabled: !key || !secret,
|
|
2157
|
-
children: /* @__PURE__ */
|
|
1541
|
+
children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "continue" })
|
|
2158
1542
|
}
|
|
2159
1543
|
)
|
|
2160
1544
|
] }) });
|
|
2161
1545
|
}
|
|
2162
1546
|
|
|
2163
1547
|
// src/context/BusinessProvider.tsx
|
|
2164
|
-
import { Fragment, jsx as
|
|
1548
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2165
1549
|
function BusinessProvider({ children }) {
|
|
2166
1550
|
const { overview, token } = useUserInfo();
|
|
2167
1551
|
const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
|
|
@@ -2170,12 +1554,13 @@ function BusinessProvider({ children }) {
|
|
|
2170
1554
|
const { type: BTCType, isOpen: BTCIsOpen, close: BTCClose } = useBTCModalStore();
|
|
2171
1555
|
const { type: CEXType, isOpen: CEXIsOpen, close: CEXClose } = useCEXBindModalStore();
|
|
2172
1556
|
const WalletModalStore = useWalletModalStore();
|
|
1557
|
+
const { close: HashPanelClose, ...hashPanelProps } = useHashPanelStore();
|
|
2173
1558
|
const walletModalClose = (func) => {
|
|
2174
1559
|
WalletModalStore.close();
|
|
2175
1560
|
func();
|
|
2176
1561
|
};
|
|
2177
1562
|
return /* @__PURE__ */ jsxs7(Fragment, { children: [
|
|
2178
|
-
/* @__PURE__ */
|
|
1563
|
+
/* @__PURE__ */ jsx8(
|
|
2179
1564
|
SOLModal,
|
|
2180
1565
|
{
|
|
2181
1566
|
isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
|
|
@@ -2185,7 +1570,7 @@ function BusinessProvider({ children }) {
|
|
|
2185
1570
|
zIndex: 199
|
|
2186
1571
|
}
|
|
2187
1572
|
),
|
|
2188
|
-
/* @__PURE__ */
|
|
1573
|
+
/* @__PURE__ */ jsx8(
|
|
2189
1574
|
TRONModal,
|
|
2190
1575
|
{
|
|
2191
1576
|
isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
|
|
@@ -2195,7 +1580,7 @@ function BusinessProvider({ children }) {
|
|
|
2195
1580
|
zIndex: 199
|
|
2196
1581
|
}
|
|
2197
1582
|
),
|
|
2198
|
-
/* @__PURE__ */
|
|
1583
|
+
/* @__PURE__ */ jsx8(
|
|
2199
1584
|
TONModal,
|
|
2200
1585
|
{
|
|
2201
1586
|
isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
|
|
@@ -2205,7 +1590,7 @@ function BusinessProvider({ children }) {
|
|
|
2205
1590
|
zIndex: 199
|
|
2206
1591
|
}
|
|
2207
1592
|
),
|
|
2208
|
-
/* @__PURE__ */
|
|
1593
|
+
/* @__PURE__ */ jsx8(
|
|
2209
1594
|
BTCModal,
|
|
2210
1595
|
{
|
|
2211
1596
|
isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
|
|
@@ -2215,7 +1600,7 @@ function BusinessProvider({ children }) {
|
|
|
2215
1600
|
zIndex: 199
|
|
2216
1601
|
}
|
|
2217
1602
|
),
|
|
2218
|
-
/* @__PURE__ */
|
|
1603
|
+
/* @__PURE__ */ jsx8(
|
|
2219
1604
|
CEXBindModal,
|
|
2220
1605
|
{
|
|
2221
1606
|
isOpen: CEXIsOpen && (!!token && !!overview),
|
|
@@ -2224,7 +1609,8 @@ function BusinessProvider({ children }) {
|
|
|
2224
1609
|
zIndex: 199
|
|
2225
1610
|
}
|
|
2226
1611
|
),
|
|
2227
|
-
/* @__PURE__ */
|
|
1612
|
+
/* @__PURE__ */ jsx8(HashPanel_default, { onClose: HashPanelClose, ...hashPanelProps }),
|
|
1613
|
+
/* @__PURE__ */ jsx8(
|
|
2228
1614
|
WalletModal,
|
|
2229
1615
|
{
|
|
2230
1616
|
isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
|
|
@@ -2239,14 +1625,14 @@ function BusinessProvider({ children }) {
|
|
|
2239
1625
|
}
|
|
2240
1626
|
|
|
2241
1627
|
// src/context/index.tsx
|
|
2242
|
-
import { jsx as
|
|
1628
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
2243
1629
|
var Providers = ({ children }) => {
|
|
2244
|
-
return /* @__PURE__ */
|
|
1630
|
+
return /* @__PURE__ */ jsx9(ToastProvider, { children: /* @__PURE__ */ jsx9(ModalProvider, { children: /* @__PURE__ */ jsx9(BusinessProvider, { children }) }) });
|
|
2245
1631
|
};
|
|
2246
1632
|
var context_default = Providers;
|
|
2247
1633
|
|
|
2248
1634
|
// src/hooks/useWalletInit.ts
|
|
2249
|
-
import { useEffect as
|
|
1635
|
+
import { useEffect as useEffect9, useRef } from "react";
|
|
2250
1636
|
|
|
2251
1637
|
// src/utils/wallet.ts
|
|
2252
1638
|
var sendMessage = ({ method, data, resolve, reject, timeout }) => {
|
|
@@ -2279,11 +1665,11 @@ function useWalletInit({
|
|
|
2279
1665
|
}) {
|
|
2280
1666
|
const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
|
|
2281
1667
|
const { setWalletReady, walletReady } = useStore_default();
|
|
2282
|
-
const iframeReadyRef =
|
|
2283
|
-
|
|
1668
|
+
const iframeReadyRef = useRef(walletReady);
|
|
1669
|
+
useEffect9(() => {
|
|
2284
1670
|
setWallet(config);
|
|
2285
1671
|
}, [config]);
|
|
2286
|
-
|
|
1672
|
+
useEffect9(() => {
|
|
2287
1673
|
matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
|
|
2288
1674
|
iframeReadyRef.current = walletReady;
|
|
2289
1675
|
if (iframeReadyRef.current) {
|
|
@@ -2300,7 +1686,7 @@ function useWalletInit({
|
|
|
2300
1686
|
onReady();
|
|
2301
1687
|
}
|
|
2302
1688
|
}, [walletReady]);
|
|
2303
|
-
|
|
1689
|
+
useEffect9(() => {
|
|
2304
1690
|
if (!endpoints.auth || !appid || !token || !config) {
|
|
2305
1691
|
const existingIframe = getWalletIframe();
|
|
2306
1692
|
if (existingIframe) {
|
|
@@ -2400,7 +1786,7 @@ function useWalletInit({
|
|
|
2400
1786
|
}
|
|
2401
1787
|
}
|
|
2402
1788
|
}, [endpoints.auth, appid, token, config]);
|
|
2403
|
-
|
|
1789
|
+
useEffect9(() => {
|
|
2404
1790
|
const messageHandle = async (e) => {
|
|
2405
1791
|
if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
|
|
2406
1792
|
return;
|
|
@@ -2481,7 +1867,7 @@ function useWalletInit({
|
|
|
2481
1867
|
}
|
|
2482
1868
|
|
|
2483
1869
|
// src/hooks/useInit.tsx
|
|
2484
|
-
import { useEffect as
|
|
1870
|
+
import { useEffect as useEffect10, useRef as useRef2 } from "react";
|
|
2485
1871
|
function useInit({
|
|
2486
1872
|
theme,
|
|
2487
1873
|
appid,
|
|
@@ -2501,23 +1887,23 @@ function useInit({
|
|
|
2501
1887
|
locale: realLocale
|
|
2502
1888
|
} = useLocalStore_default();
|
|
2503
1889
|
const walletModalStore = useWalletModalStore();
|
|
2504
|
-
const overviewLoadingRef =
|
|
1890
|
+
const overviewLoadingRef = useRef2(false);
|
|
2505
1891
|
const searchParams = new URLSearchParams(window.location.search);
|
|
2506
1892
|
const matchToken = searchParams.get("matchToken");
|
|
2507
1893
|
const realEndpoints = endpoints || env_default.endpoints;
|
|
2508
|
-
|
|
1894
|
+
useEffect10(() => {
|
|
2509
1895
|
setTheme(theme);
|
|
2510
1896
|
}, [theme]);
|
|
2511
|
-
|
|
1897
|
+
useEffect10(() => {
|
|
2512
1898
|
setAppid(appid);
|
|
2513
1899
|
}, [appid]);
|
|
2514
|
-
|
|
1900
|
+
useEffect10(() => {
|
|
2515
1901
|
setEndpoints(realEndpoints);
|
|
2516
1902
|
}, [realEndpoints]);
|
|
2517
|
-
|
|
1903
|
+
useEffect10(() => {
|
|
2518
1904
|
setLocale(locale || "en");
|
|
2519
1905
|
}, [locale]);
|
|
2520
|
-
|
|
1906
|
+
useEffect10(() => {
|
|
2521
1907
|
if (matchToken) {
|
|
2522
1908
|
const tokenData = JSON.parse(atob(matchToken));
|
|
2523
1909
|
if (tokenData && tokenData.mid && tokenData.token) {
|
|
@@ -2528,7 +1914,7 @@ function useInit({
|
|
|
2528
1914
|
}
|
|
2529
1915
|
}
|
|
2530
1916
|
}, [matchToken]);
|
|
2531
|
-
|
|
1917
|
+
useEffect10(() => {
|
|
2532
1918
|
const onLoginMessage = (event) => {
|
|
2533
1919
|
const res = event.data;
|
|
2534
1920
|
if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
|
|
@@ -2565,7 +1951,7 @@ function useInit({
|
|
|
2565
1951
|
overviewLoadingRef.current = false;
|
|
2566
1952
|
}
|
|
2567
1953
|
};
|
|
2568
|
-
|
|
1954
|
+
useEffect10(() => {
|
|
2569
1955
|
if (token) {
|
|
2570
1956
|
loadOverview();
|
|
2571
1957
|
}
|
|
@@ -3081,7 +2467,7 @@ var messages = {
|
|
|
3081
2467
|
};
|
|
3082
2468
|
|
|
3083
2469
|
// src/MatchContext.tsx
|
|
3084
|
-
import { jsx as
|
|
2470
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
3085
2471
|
var queryClient = new QueryClient();
|
|
3086
2472
|
var MatchContext = createContext3(void 0);
|
|
3087
2473
|
var MatchProvider = ({
|
|
@@ -3103,7 +2489,7 @@ var MatchProvider = ({
|
|
|
3103
2489
|
useWalletInit({
|
|
3104
2490
|
config: wallet
|
|
3105
2491
|
});
|
|
3106
|
-
return /* @__PURE__ */
|
|
2492
|
+
return /* @__PURE__ */ jsx10(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx10(
|
|
3107
2493
|
MatchContext.Provider,
|
|
3108
2494
|
{
|
|
3109
2495
|
value: {
|
|
@@ -3114,7 +2500,7 @@ var MatchProvider = ({
|
|
|
3114
2500
|
theme,
|
|
3115
2501
|
locale: realLocale
|
|
3116
2502
|
},
|
|
3117
|
-
children: /* @__PURE__ */
|
|
2503
|
+
children: /* @__PURE__ */ jsx10(context_default, { children })
|
|
3118
2504
|
}
|
|
3119
2505
|
) }) });
|
|
3120
2506
|
};
|
|
@@ -3380,23 +2766,29 @@ function useUserInfo() {
|
|
|
3380
2766
|
}
|
|
3381
2767
|
|
|
3382
2768
|
// src/components/EmailModal/StepVerify.tsx
|
|
3383
|
-
import { useEffect as
|
|
2769
|
+
import { useEffect as useEffect12, useMemo as useMemo7, useRef as useRef3, useState as useState11 } from "react";
|
|
2770
|
+
|
|
2771
|
+
// src/config/index.tsx
|
|
2772
|
+
var EMAIL_INTERVAL = 60;
|
|
2773
|
+
var EMAIL_CODE_LENGTH = 6;
|
|
2774
|
+
|
|
2775
|
+
// src/components/EmailModal/StepVerify.tsx
|
|
3384
2776
|
import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
|
|
3385
|
-
import { jsx as
|
|
2777
|
+
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3386
2778
|
function StepVerify(props) {
|
|
3387
2779
|
const intl = useIntl3();
|
|
3388
2780
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
3389
|
-
const [error, setError] =
|
|
3390
|
-
const [code, setCode] =
|
|
3391
|
-
const [sending, setSending] =
|
|
3392
|
-
const [submitting, setSubmitting] =
|
|
3393
|
-
const sendTimeRef =
|
|
3394
|
-
const [sendBtnText, setSendBtnText] =
|
|
2781
|
+
const [error, setError] = useState11("");
|
|
2782
|
+
const [code, setCode] = useState11("");
|
|
2783
|
+
const [sending, setSending] = useState11(false);
|
|
2784
|
+
const [submitting, setSubmitting] = useState11(false);
|
|
2785
|
+
const sendTimeRef = useRef3(0);
|
|
2786
|
+
const [sendBtnText, setSendBtnText] = useState11(intl.formatMessage({
|
|
3395
2787
|
id: "send"
|
|
3396
2788
|
}));
|
|
3397
2789
|
const intervalTime = EMAIL_INTERVAL;
|
|
3398
2790
|
const codeLength = EMAIL_CODE_LENGTH;
|
|
3399
|
-
const intervalRef =
|
|
2791
|
+
const intervalRef = useRef3(null);
|
|
3400
2792
|
const isDownMd = useDownMd();
|
|
3401
2793
|
const onSend = async () => {
|
|
3402
2794
|
if (sendTimeRef.current > 0) {
|
|
@@ -3427,7 +2819,7 @@ function StepVerify(props) {
|
|
|
3427
2819
|
setSending(false);
|
|
3428
2820
|
}
|
|
3429
2821
|
};
|
|
3430
|
-
|
|
2822
|
+
useEffect12(() => {
|
|
3431
2823
|
onSend();
|
|
3432
2824
|
return () => {
|
|
3433
2825
|
if (intervalRef.current) {
|
|
@@ -3461,15 +2853,15 @@ function StepVerify(props) {
|
|
|
3461
2853
|
};
|
|
3462
2854
|
return /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-box", children: [
|
|
3463
2855
|
/* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header", children: [
|
|
3464
|
-
/* @__PURE__ */
|
|
2856
|
+
/* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx11(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
3465
2857
|
/* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header-content", children: [
|
|
3466
|
-
/* @__PURE__ */
|
|
3467
|
-
/* @__PURE__ */
|
|
2858
|
+
/* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
2859
|
+
/* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "sendEmailTips" }) })
|
|
3468
2860
|
] })
|
|
3469
2861
|
] }),
|
|
3470
|
-
/* @__PURE__ */
|
|
2862
|
+
/* @__PURE__ */ jsx11(Field, { label: intl.formatMessage({
|
|
3471
2863
|
id: "verificationCode"
|
|
3472
|
-
}), error, children: /* @__PURE__ */
|
|
2864
|
+
}), error, children: /* @__PURE__ */ jsx11(
|
|
3473
2865
|
Input,
|
|
3474
2866
|
{
|
|
3475
2867
|
placeholder: intl.formatMessage({
|
|
@@ -3479,7 +2871,7 @@ function StepVerify(props) {
|
|
|
3479
2871
|
maxLength: codeLength,
|
|
3480
2872
|
onChange: (e) => setCode(e.target.value),
|
|
3481
2873
|
value: code,
|
|
3482
|
-
after: /* @__PURE__ */
|
|
2874
|
+
after: /* @__PURE__ */ jsx11(
|
|
3483
2875
|
Button,
|
|
3484
2876
|
{
|
|
3485
2877
|
highlight: true,
|
|
@@ -3498,13 +2890,13 @@ function StepVerify(props) {
|
|
|
3498
2890
|
)
|
|
3499
2891
|
}
|
|
3500
2892
|
) }),
|
|
3501
|
-
/* @__PURE__ */
|
|
2893
|
+
/* @__PURE__ */ jsx11(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "continue" }) })
|
|
3502
2894
|
] });
|
|
3503
2895
|
}
|
|
3504
2896
|
|
|
3505
2897
|
// src/components/EmailModal/index.tsx
|
|
3506
2898
|
import { useIntl as useIntl4 } from "react-intl";
|
|
3507
|
-
import { jsx as
|
|
2899
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
3508
2900
|
function EmailModal({
|
|
3509
2901
|
isOpen = false,
|
|
3510
2902
|
width = 480,
|
|
@@ -3512,16 +2904,16 @@ function EmailModal({
|
|
|
3512
2904
|
onBack,
|
|
3513
2905
|
onLogin
|
|
3514
2906
|
}) {
|
|
3515
|
-
const [step, setStep] =
|
|
3516
|
-
const [emailVal, setEmailVal] =
|
|
2907
|
+
const [step, setStep] = useState12("input");
|
|
2908
|
+
const [emailVal, setEmailVal] = useState12("");
|
|
3517
2909
|
const intl = useIntl4();
|
|
3518
|
-
|
|
2910
|
+
useEffect13(() => {
|
|
3519
2911
|
if (!isOpen) {
|
|
3520
2912
|
setStep("input");
|
|
3521
2913
|
setEmailVal("");
|
|
3522
2914
|
}
|
|
3523
2915
|
}, [isOpen]);
|
|
3524
|
-
return /* @__PURE__ */
|
|
2916
|
+
return /* @__PURE__ */ jsx12(
|
|
3525
2917
|
ModalWithHeader,
|
|
3526
2918
|
{
|
|
3527
2919
|
isOpen,
|
|
@@ -3531,22 +2923,22 @@ function EmailModal({
|
|
|
3531
2923
|
id: "email"
|
|
3532
2924
|
}),
|
|
3533
2925
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
3534
|
-
children: step === "input" ? /* @__PURE__ */
|
|
2926
|
+
children: step === "input" ? /* @__PURE__ */ jsx12(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
3535
2927
|
setEmailVal(email);
|
|
3536
2928
|
setStep("verify");
|
|
3537
|
-
} }) : /* @__PURE__ */
|
|
2929
|
+
} }) : /* @__PURE__ */ jsx12(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
3538
2930
|
}
|
|
3539
2931
|
);
|
|
3540
2932
|
}
|
|
3541
2933
|
|
|
3542
2934
|
// src/components/LoginBox/index.tsx
|
|
3543
|
-
import { useMemo as useMemo8, useState as
|
|
2935
|
+
import { useMemo as useMemo8, useState as useState13 } from "react";
|
|
3544
2936
|
import { FormattedMessage as FormattedMessage4, useIntl as useIntl5 } from "react-intl";
|
|
3545
2937
|
|
|
3546
2938
|
// src/hooks/useAppConfig.ts
|
|
3547
|
-
import { useQuery as
|
|
2939
|
+
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
3548
2940
|
function useAppConfig() {
|
|
3549
|
-
const query =
|
|
2941
|
+
const query = useQuery3({
|
|
3550
2942
|
queryKey: ["appConfig"],
|
|
3551
2943
|
queryFn: async () => {
|
|
3552
2944
|
const res = await getAppConfigApi();
|
|
@@ -3564,7 +2956,7 @@ function useAppConfig() {
|
|
|
3564
2956
|
}
|
|
3565
2957
|
|
|
3566
2958
|
// src/components/LoginBox/index.tsx
|
|
3567
|
-
import { Fragment as Fragment2, jsx as
|
|
2959
|
+
import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3568
2960
|
var RecommendItem = ({
|
|
3569
2961
|
icon,
|
|
3570
2962
|
name,
|
|
@@ -3576,17 +2968,17 @@ var RecommendItem = ({
|
|
|
3576
2968
|
return /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method", children: [
|
|
3577
2969
|
/* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
3578
2970
|
/* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-content", children: [
|
|
3579
|
-
/* @__PURE__ */
|
|
3580
|
-
/* @__PURE__ */
|
|
2971
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
2972
|
+
/* @__PURE__ */ jsx13("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
3581
2973
|
] }),
|
|
3582
|
-
footer ? footer : children ? /* @__PURE__ */
|
|
2974
|
+
footer ? footer : children ? /* @__PURE__ */ jsx13(
|
|
3583
2975
|
ArrowDownIcon,
|
|
3584
2976
|
{
|
|
3585
2977
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
3586
2978
|
size: 20,
|
|
3587
2979
|
color: "var(--matchid-arrow-color)"
|
|
3588
2980
|
}
|
|
3589
|
-
) : /* @__PURE__ */
|
|
2981
|
+
) : /* @__PURE__ */ jsx13(
|
|
3590
2982
|
ArrowRightIcon,
|
|
3591
2983
|
{
|
|
3592
2984
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -3595,7 +2987,7 @@ var RecommendItem = ({
|
|
|
3595
2987
|
}
|
|
3596
2988
|
)
|
|
3597
2989
|
] }),
|
|
3598
|
-
children && /* @__PURE__ */
|
|
2990
|
+
children && /* @__PURE__ */ jsx13(
|
|
3599
2991
|
"div",
|
|
3600
2992
|
{
|
|
3601
2993
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -3653,62 +3045,62 @@ function LoginBox({
|
|
|
3653
3045
|
walletMethods: walletMethodList
|
|
3654
3046
|
};
|
|
3655
3047
|
}, [config.platform, recommendMethods, methods, walletMethods]);
|
|
3656
|
-
const [emailOpen, setEmailOpen] =
|
|
3048
|
+
const [emailOpen, setEmailOpen] = useState13(false);
|
|
3657
3049
|
const { login } = useUserInfo();
|
|
3658
|
-
const [showWallet, setShowWallet] =
|
|
3050
|
+
const [showWallet, setShowWallet] = useState13(false);
|
|
3659
3051
|
const intl = useIntl5();
|
|
3660
3052
|
const isDownMd = useDownMd();
|
|
3661
3053
|
const methodMap = {
|
|
3662
3054
|
wallet: {
|
|
3663
|
-
icon: /* @__PURE__ */
|
|
3055
|
+
icon: /* @__PURE__ */ jsx13(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
3664
3056
|
name: intl.formatMessage({ id: "wallet" }),
|
|
3665
3057
|
onClick: () => setShowWallet(!showWallet),
|
|
3666
3058
|
type: "wallet"
|
|
3667
3059
|
},
|
|
3668
3060
|
email: {
|
|
3669
|
-
icon: /* @__PURE__ */
|
|
3061
|
+
icon: /* @__PURE__ */ jsx13(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
3670
3062
|
name: intl.formatMessage({ id: "email" }),
|
|
3671
3063
|
onClick: () => {
|
|
3672
3064
|
setEmailOpen(true);
|
|
3673
3065
|
}
|
|
3674
3066
|
},
|
|
3675
3067
|
google: {
|
|
3676
|
-
icon: /* @__PURE__ */
|
|
3068
|
+
icon: /* @__PURE__ */ jsx13(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
3677
3069
|
name: "Google",
|
|
3678
3070
|
onClick: () => login("google")
|
|
3679
3071
|
},
|
|
3680
3072
|
twitter: {
|
|
3681
|
-
icon: /* @__PURE__ */
|
|
3073
|
+
icon: /* @__PURE__ */ jsx13(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
3682
3074
|
name: "X",
|
|
3683
3075
|
onClick: () => login("twitter")
|
|
3684
3076
|
},
|
|
3685
3077
|
telegram: {
|
|
3686
|
-
icon: /* @__PURE__ */
|
|
3078
|
+
icon: /* @__PURE__ */ jsx13(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
3687
3079
|
name: "Telegram",
|
|
3688
3080
|
onClick: () => login("telegram")
|
|
3689
3081
|
},
|
|
3690
3082
|
github: {
|
|
3691
|
-
icon: /* @__PURE__ */
|
|
3083
|
+
icon: /* @__PURE__ */ jsx13(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
3692
3084
|
name: "Github",
|
|
3693
3085
|
onClick: () => login("github")
|
|
3694
3086
|
},
|
|
3695
3087
|
discord: {
|
|
3696
|
-
icon: /* @__PURE__ */
|
|
3088
|
+
icon: /* @__PURE__ */ jsx13(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
3697
3089
|
name: "Discord",
|
|
3698
3090
|
onClick: () => login("discord")
|
|
3699
3091
|
},
|
|
3700
3092
|
linkedin: {
|
|
3701
|
-
icon: /* @__PURE__ */
|
|
3093
|
+
icon: /* @__PURE__ */ jsx13(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
3702
3094
|
name: "LinkedIn",
|
|
3703
3095
|
onClick: () => login("linkedin")
|
|
3704
3096
|
},
|
|
3705
3097
|
facebook: {
|
|
3706
|
-
icon: /* @__PURE__ */
|
|
3098
|
+
icon: /* @__PURE__ */ jsx13(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
3707
3099
|
name: "Facebook",
|
|
3708
3100
|
onClick: () => login("facebook")
|
|
3709
3101
|
},
|
|
3710
3102
|
youtube: {
|
|
3711
|
-
icon: /* @__PURE__ */
|
|
3103
|
+
icon: /* @__PURE__ */ jsx13(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
3712
3104
|
name: "Youtube",
|
|
3713
3105
|
onClick: () => login("youtube")
|
|
3714
3106
|
}
|
|
@@ -3716,8 +3108,8 @@ function LoginBox({
|
|
|
3716
3108
|
const { walletMap } = useWalletConfig();
|
|
3717
3109
|
return /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
3718
3110
|
(!inModal || !emailOpen) && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-box", children: [
|
|
3719
|
-
/* @__PURE__ */
|
|
3720
|
-
return /* @__PURE__ */
|
|
3111
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
|
|
3112
|
+
return /* @__PURE__ */ jsx13(
|
|
3721
3113
|
RecommendItem,
|
|
3722
3114
|
{
|
|
3723
3115
|
icon: methodMap[m]?.icon,
|
|
@@ -3725,8 +3117,8 @@ function LoginBox({
|
|
|
3725
3117
|
onClick: methodMap[m]?.onClick,
|
|
3726
3118
|
showChildren: m == "wallet" && showWallet,
|
|
3727
3119
|
children: m == "wallet" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
3728
|
-
/* @__PURE__ */
|
|
3729
|
-
/* @__PURE__ */
|
|
3120
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
3121
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
|
|
3730
3122
|
const m2 = walletMap[n];
|
|
3731
3123
|
return /* @__PURE__ */ jsxs9(
|
|
3732
3124
|
"div",
|
|
@@ -3737,15 +3129,15 @@ function LoginBox({
|
|
|
3737
3129
|
},
|
|
3738
3130
|
children: [
|
|
3739
3131
|
/* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
3740
|
-
/* @__PURE__ */
|
|
3741
|
-
/* @__PURE__ */
|
|
3132
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
3133
|
+
/* @__PURE__ */ jsx13(
|
|
3742
3134
|
"div",
|
|
3743
3135
|
{
|
|
3744
3136
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
3745
3137
|
children: m2.activeIcon
|
|
3746
3138
|
}
|
|
3747
3139
|
),
|
|
3748
|
-
/* @__PURE__ */
|
|
3140
|
+
/* @__PURE__ */ jsx13(
|
|
3749
3141
|
"span",
|
|
3750
3142
|
{
|
|
3751
3143
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -3753,7 +3145,7 @@ function LoginBox({
|
|
|
3753
3145
|
}
|
|
3754
3146
|
)
|
|
3755
3147
|
] }),
|
|
3756
|
-
/* @__PURE__ */
|
|
3148
|
+
/* @__PURE__ */ jsx13(
|
|
3757
3149
|
ArrowRightIcon,
|
|
3758
3150
|
{
|
|
3759
3151
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -3772,9 +3164,9 @@ function LoginBox({
|
|
|
3772
3164
|
);
|
|
3773
3165
|
}) }),
|
|
3774
3166
|
methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-other", children: [
|
|
3775
|
-
/* @__PURE__ */
|
|
3776
|
-
/* @__PURE__ */
|
|
3777
|
-
return /* @__PURE__ */
|
|
3167
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx13(FormattedMessage4, { id: "otherLoginMethods" }) }),
|
|
3168
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
|
|
3169
|
+
return /* @__PURE__ */ jsx13(
|
|
3778
3170
|
"div",
|
|
3779
3171
|
{
|
|
3780
3172
|
className: "matchid-login-method-item",
|
|
@@ -3787,7 +3179,7 @@ function LoginBox({
|
|
|
3787
3179
|
}) })
|
|
3788
3180
|
] })
|
|
3789
3181
|
] }),
|
|
3790
|
-
/* @__PURE__ */
|
|
3182
|
+
/* @__PURE__ */ jsx13(
|
|
3791
3183
|
EmailModal,
|
|
3792
3184
|
{
|
|
3793
3185
|
isOpen: emailOpen,
|
|
@@ -3803,11 +3195,11 @@ function LoginBox({
|
|
|
3803
3195
|
}
|
|
3804
3196
|
|
|
3805
3197
|
// src/components/LoginButton/index.tsx
|
|
3806
|
-
import { useState as
|
|
3198
|
+
import { useState as useState15 } from "react";
|
|
3807
3199
|
|
|
3808
3200
|
// src/components/LoginPanel/index.tsx
|
|
3809
3201
|
import { FormattedMessage as FormattedMessage5 } from "react-intl";
|
|
3810
|
-
import { jsx as
|
|
3202
|
+
import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3811
3203
|
function LoginPanel({
|
|
3812
3204
|
header,
|
|
3813
3205
|
onClose,
|
|
@@ -3817,42 +3209,42 @@ function LoginPanel({
|
|
|
3817
3209
|
return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel", children: [
|
|
3818
3210
|
header ? header : /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header", children: [
|
|
3819
3211
|
/* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header-content", children: [
|
|
3820
|
-
/* @__PURE__ */
|
|
3821
|
-
/* @__PURE__ */
|
|
3212
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTitle" }) }),
|
|
3213
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTips" }) })
|
|
3822
3214
|
] }),
|
|
3823
|
-
onClose && /* @__PURE__ */
|
|
3215
|
+
onClose && /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx14(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
3824
3216
|
] }),
|
|
3825
|
-
/* @__PURE__ */
|
|
3826
|
-
/* @__PURE__ */
|
|
3217
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-divide" }),
|
|
3218
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx14(LoginBox, { ...props }) })
|
|
3827
3219
|
] });
|
|
3828
3220
|
}
|
|
3829
3221
|
|
|
3830
3222
|
// src/components/LoginModal/index.tsx
|
|
3831
|
-
import { jsx as
|
|
3223
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
3832
3224
|
function LoginModal({
|
|
3833
3225
|
isOpen = false,
|
|
3834
3226
|
width = 480,
|
|
3835
3227
|
...props
|
|
3836
3228
|
}) {
|
|
3837
3229
|
const { isLogin } = useUserInfo();
|
|
3838
|
-
return /* @__PURE__ */
|
|
3230
|
+
return /* @__PURE__ */ jsx15(
|
|
3839
3231
|
Modal,
|
|
3840
3232
|
{
|
|
3841
3233
|
isOpen: isOpen && !isLogin,
|
|
3842
3234
|
width,
|
|
3843
|
-
children: /* @__PURE__ */
|
|
3235
|
+
children: /* @__PURE__ */ jsx15(LoginPanel, { ...props, inModal: true })
|
|
3844
3236
|
}
|
|
3845
3237
|
);
|
|
3846
3238
|
}
|
|
3847
3239
|
|
|
3848
3240
|
// src/components/UserPopover/index.tsx
|
|
3849
|
-
import { useState as
|
|
3241
|
+
import { useState as useState14 } from "react";
|
|
3850
3242
|
|
|
3851
3243
|
// src/assets/icon/ProfileIcon.tsx
|
|
3852
|
-
import { jsx as
|
|
3244
|
+
import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3853
3245
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
3854
3246
|
return /* @__PURE__ */ jsxs11("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
3855
|
-
/* @__PURE__ */
|
|
3247
|
+
/* @__PURE__ */ jsx16(
|
|
3856
3248
|
"path",
|
|
3857
3249
|
{
|
|
3858
3250
|
fillRule: "evenodd",
|
|
@@ -3861,7 +3253,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
3861
3253
|
fill: color
|
|
3862
3254
|
}
|
|
3863
3255
|
),
|
|
3864
|
-
/* @__PURE__ */
|
|
3256
|
+
/* @__PURE__ */ jsx16(
|
|
3865
3257
|
"path",
|
|
3866
3258
|
{
|
|
3867
3259
|
fillRule: "evenodd",
|
|
@@ -3875,10 +3267,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
3875
3267
|
|
|
3876
3268
|
// src/components/UserPopover/index.tsx
|
|
3877
3269
|
import { FormattedMessage as FormattedMessage6, useIntl as useIntl6 } from "react-intl";
|
|
3878
|
-
import { jsx as
|
|
3270
|
+
import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3879
3271
|
function UserContent() {
|
|
3880
3272
|
const { logout, address: address2, username } = useUserInfo();
|
|
3881
|
-
const [logouting, setLogouting] =
|
|
3273
|
+
const [logouting, setLogouting] = useState14(false);
|
|
3882
3274
|
const onLogout = async () => {
|
|
3883
3275
|
if (logouting) return;
|
|
3884
3276
|
try {
|
|
@@ -3899,31 +3291,31 @@ function UserContent() {
|
|
|
3899
3291
|
return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
3900
3292
|
/* @__PURE__ */ jsxs12("div", { className: `matchid-user-popover-item-content`, children: [
|
|
3901
3293
|
icon,
|
|
3902
|
-
/* @__PURE__ */
|
|
3294
|
+
/* @__PURE__ */ jsx17("div", { className: "matchid-user-popover-item-text", children })
|
|
3903
3295
|
] }),
|
|
3904
3296
|
rightIcon
|
|
3905
3297
|
] });
|
|
3906
3298
|
};
|
|
3907
3299
|
const UserDivider = () => {
|
|
3908
|
-
return /* @__PURE__ */
|
|
3300
|
+
return /* @__PURE__ */ jsx17("div", { className: `matchid-user-popover-divider` });
|
|
3909
3301
|
};
|
|
3910
|
-
const [usernameOpen, setUsernameOpen] =
|
|
3302
|
+
const [usernameOpen, setUsernameOpen] = useState14(false);
|
|
3911
3303
|
const [copied, setCopied] = useCopyClipboard();
|
|
3912
3304
|
const intl = useIntl6();
|
|
3913
3305
|
return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-content", children: [
|
|
3914
3306
|
/* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-list", children: [
|
|
3915
|
-
/* @__PURE__ */
|
|
3307
|
+
/* @__PURE__ */ jsx17(UserItem, { onClick: () => {
|
|
3916
3308
|
setCopied(address2);
|
|
3917
|
-
}, icon: copied ? /* @__PURE__ */
|
|
3918
|
-
/* @__PURE__ */
|
|
3919
|
-
/* @__PURE__ */
|
|
3309
|
+
}, icon: copied ? /* @__PURE__ */ jsx17(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx17(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx17(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address2) }),
|
|
3310
|
+
/* @__PURE__ */ jsx17(UserDivider, {}),
|
|
3311
|
+
/* @__PURE__ */ jsx17(UserItem, { onClick: () => {
|
|
3920
3312
|
setUsernameOpen(true);
|
|
3921
|
-
}, icon: /* @__PURE__ */
|
|
3313
|
+
}, icon: /* @__PURE__ */ jsx17(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx17(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
|
|
3922
3314
|
id: "setUsername"
|
|
3923
3315
|
}) })
|
|
3924
3316
|
] }),
|
|
3925
|
-
/* @__PURE__ */
|
|
3926
|
-
/* @__PURE__ */
|
|
3317
|
+
/* @__PURE__ */ jsx17(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx17(FormattedMessage6, { id: "disconnect" }) }),
|
|
3318
|
+
/* @__PURE__ */ jsx17(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
3927
3319
|
setUsernameOpen(false);
|
|
3928
3320
|
}, onSuccess: () => {
|
|
3929
3321
|
setUsernameOpen(false);
|
|
@@ -3934,12 +3326,12 @@ function UserPopover({
|
|
|
3934
3326
|
children,
|
|
3935
3327
|
...props
|
|
3936
3328
|
}) {
|
|
3937
|
-
return /* @__PURE__ */
|
|
3329
|
+
return /* @__PURE__ */ jsx17(Popover, { ...props, content: /* @__PURE__ */ jsx17(UserContent, {}), children });
|
|
3938
3330
|
}
|
|
3939
3331
|
|
|
3940
3332
|
// src/components/LoginButton/index.tsx
|
|
3941
3333
|
import { FormattedMessage as FormattedMessage7, useIntl as useIntl7 } from "react-intl";
|
|
3942
|
-
import { Fragment as Fragment3, jsx as
|
|
3334
|
+
import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3943
3335
|
function LoginButton({
|
|
3944
3336
|
loginRender,
|
|
3945
3337
|
methods,
|
|
@@ -3953,10 +3345,10 @@ function LoginButton({
|
|
|
3953
3345
|
}) {
|
|
3954
3346
|
const intl = useIntl7();
|
|
3955
3347
|
const { isLogin, username } = useUserInfo();
|
|
3956
|
-
const [loginOpen, setLoginOpen] =
|
|
3348
|
+
const [loginOpen, setLoginOpen] = useState15(false);
|
|
3957
3349
|
if (!isLogin) {
|
|
3958
3350
|
return /* @__PURE__ */ jsxs13(Fragment3, { children: [
|
|
3959
|
-
/* @__PURE__ */
|
|
3351
|
+
/* @__PURE__ */ jsx18(
|
|
3960
3352
|
LoginModal,
|
|
3961
3353
|
{
|
|
3962
3354
|
methods,
|
|
@@ -3967,30 +3359,53 @@ function LoginButton({
|
|
|
3967
3359
|
}
|
|
3968
3360
|
),
|
|
3969
3361
|
/* @__PURE__ */ jsxs13(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
3970
|
-
/* @__PURE__ */
|
|
3971
|
-
/* @__PURE__ */
|
|
3362
|
+
/* @__PURE__ */ jsx18(UnLoginIcon_default, {}),
|
|
3363
|
+
/* @__PURE__ */ jsx18("span", { children: /* @__PURE__ */ jsx18(FormattedMessage7, { id: "login" }) })
|
|
3972
3364
|
] })
|
|
3973
3365
|
] });
|
|
3974
3366
|
}
|
|
3975
|
-
return loginRender ? /* @__PURE__ */
|
|
3976
|
-
/* @__PURE__ */
|
|
3977
|
-
/* @__PURE__ */
|
|
3367
|
+
return loginRender ? /* @__PURE__ */ jsx18(Fragment3, { children: loginRender }) : /* @__PURE__ */ jsx18(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs13(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
|
|
3368
|
+
/* @__PURE__ */ jsx18(LoginIcon_default, {}),
|
|
3369
|
+
/* @__PURE__ */ jsx18("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
3978
3370
|
id: "user"
|
|
3979
3371
|
}) })
|
|
3980
3372
|
] }) });
|
|
3981
3373
|
}
|
|
3982
3374
|
|
|
3983
3375
|
// src/components/UsernameModal/index.tsx
|
|
3984
|
-
import { useEffect as
|
|
3376
|
+
import { useEffect as useEffect14, useMemo as useMemo9, useState as useState16 } from "react";
|
|
3377
|
+
|
|
3378
|
+
// src/assets/icon/InfoRoundIcon.tsx
|
|
3379
|
+
import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3380
|
+
function InfoRoundIcon({
|
|
3381
|
+
size,
|
|
3382
|
+
color = "#6E6E6E",
|
|
3383
|
+
...props
|
|
3384
|
+
}) {
|
|
3385
|
+
return /* @__PURE__ */ jsxs14("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
3386
|
+
/* @__PURE__ */ jsx19("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx19(
|
|
3387
|
+
"path",
|
|
3388
|
+
{
|
|
3389
|
+
fillRule: "evenodd",
|
|
3390
|
+
clipRule: "evenodd",
|
|
3391
|
+
d: "M7.99984 0.666504C3.94975 0.666504 0.666504 3.94975 0.666504 7.99984C0.666504 12.0499 3.94975 15.3332 7.99984 15.3332C12.0499 15.3332 15.3332 12.0499 15.3332 7.99984C15.3332 3.94975 12.0499 0.666504 7.99984 0.666504ZM1.99984 7.99984C1.99984 4.68613 4.68613 1.99984 7.99984 1.99984C11.3135 1.99984 13.9998 4.68613 13.9998 7.99984C13.9998 11.3135 11.3135 13.9998 7.99984 13.9998C4.68613 13.9998 1.99984 11.3135 1.99984 7.99984ZM8.6665 7.33317C8.6665 6.96498 8.36803 6.6665 7.99984 6.6665C7.63165 6.6665 7.33317 6.96498 7.33317 7.33317V11.3332C7.33317 11.7014 7.63165 11.9998 7.99984 11.9998C8.36803 11.9998 8.6665 11.7014 8.6665 11.3332V7.33317ZM7.99984 5.33317C8.36803 5.33317 8.6665 5.03469 8.6665 4.6665C8.6665 4.29831 8.36803 3.99984 7.99984 3.99984C7.63165 3.99984 7.33317 4.29831 7.33317 4.6665C7.33317 5.03469 7.63165 5.33317 7.99984 5.33317Z",
|
|
3392
|
+
fill: color
|
|
3393
|
+
}
|
|
3394
|
+
) }),
|
|
3395
|
+
/* @__PURE__ */ jsx19("defs", { children: /* @__PURE__ */ jsx19("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx19("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
3396
|
+
] });
|
|
3397
|
+
}
|
|
3398
|
+
|
|
3399
|
+
// src/components/UsernameModal/index.tsx
|
|
3985
3400
|
import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
|
|
3986
|
-
import { jsx as jsx20, jsxs as
|
|
3401
|
+
import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3987
3402
|
var ValidItem = ({
|
|
3988
3403
|
success = false,
|
|
3989
3404
|
text
|
|
3990
3405
|
}) => {
|
|
3991
3406
|
const isDownMd = useDownMd();
|
|
3992
|
-
return /* @__PURE__ */
|
|
3993
|
-
success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(
|
|
3407
|
+
return /* @__PURE__ */ jsxs15("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
3408
|
+
success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
3994
3409
|
/* @__PURE__ */ jsx20("span", { children: text })
|
|
3995
3410
|
] });
|
|
3996
3411
|
};
|
|
@@ -4002,10 +3417,10 @@ function UsernameModal({
|
|
|
4002
3417
|
}) {
|
|
4003
3418
|
const { username, refreshOverview } = useUserInfo();
|
|
4004
3419
|
const { isLogin } = useUserInfo();
|
|
4005
|
-
const [val, setVal] =
|
|
4006
|
-
const [error, setError] =
|
|
3420
|
+
const [val, setVal] = useState16(username);
|
|
3421
|
+
const [error, setError] = useState16("");
|
|
4007
3422
|
const isDownMd = useDownMd();
|
|
4008
|
-
|
|
3423
|
+
useEffect14(() => {
|
|
4009
3424
|
if (isOpen) {
|
|
4010
3425
|
setVal(username);
|
|
4011
3426
|
setError("");
|
|
@@ -4018,7 +3433,7 @@ function UsernameModal({
|
|
|
4018
3433
|
return val.length >= 2 && val.length <= 32;
|
|
4019
3434
|
}, [val]);
|
|
4020
3435
|
const isSafe = isValid && isLength;
|
|
4021
|
-
const [isSubmitting, setIsSubmitting] =
|
|
3436
|
+
const [isSubmitting, setIsSubmitting] = useState16(false);
|
|
4022
3437
|
const onSubmit = async () => {
|
|
4023
3438
|
if (isSubmitting) return;
|
|
4024
3439
|
try {
|
|
@@ -4041,7 +3456,7 @@ function UsernameModal({
|
|
|
4041
3456
|
const intl = useIntl8();
|
|
4042
3457
|
return /* @__PURE__ */ jsx20(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
4043
3458
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
4044
|
-
}), children: /* @__PURE__ */
|
|
3459
|
+
}), children: /* @__PURE__ */ jsxs15("div", { className: "matchid-username-box", children: [
|
|
4045
3460
|
/* @__PURE__ */ jsx20(Field, { label: intl.formatMessage({
|
|
4046
3461
|
id: "username"
|
|
4047
3462
|
}), error, children: /* @__PURE__ */ jsx20(
|
|
@@ -4057,7 +3472,7 @@ function UsernameModal({
|
|
|
4057
3472
|
value: val
|
|
4058
3473
|
}
|
|
4059
3474
|
) }),
|
|
4060
|
-
/* @__PURE__ */
|
|
3475
|
+
/* @__PURE__ */ jsxs15("div", { className: "matchid-valid", children: [
|
|
4061
3476
|
/* @__PURE__ */ jsx20(
|
|
4062
3477
|
ValidItem,
|
|
4063
3478
|
{
|
|
@@ -4081,7 +3496,7 @@ function UsernameModal({
|
|
|
4081
3496
|
}
|
|
4082
3497
|
|
|
4083
3498
|
// src/components/SOLModal/index.tsx
|
|
4084
|
-
import React7, { useEffect as
|
|
3499
|
+
import React7, { useEffect as useEffect15, useState as useState17 } from "react";
|
|
4085
3500
|
import { clusterApiUrl } from "@solana/web3.js";
|
|
4086
3501
|
import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
|
|
4087
3502
|
import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
|
|
@@ -4145,7 +3560,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
4145
3560
|
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==";
|
|
4146
3561
|
|
|
4147
3562
|
// src/components/WalletModalContent/index.tsx
|
|
4148
|
-
import { jsx as jsx21, jsxs as
|
|
3563
|
+
import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4149
3564
|
function WalletModalContent({
|
|
4150
3565
|
status,
|
|
4151
3566
|
error,
|
|
@@ -4215,8 +3630,8 @@ function WalletModalContent({
|
|
|
4215
3630
|
statusImage: walletConnectImage
|
|
4216
3631
|
};
|
|
4217
3632
|
}, [visible, connected, status, error, address2]);
|
|
4218
|
-
return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */
|
|
4219
|
-
/* @__PURE__ */
|
|
3633
|
+
return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
|
|
3634
|
+
/* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-content`, children: [
|
|
4220
3635
|
/* @__PURE__ */ jsx21("img", { src: pageData.statusImage }),
|
|
4221
3636
|
/* @__PURE__ */ jsx21("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
4222
3637
|
] }),
|
|
@@ -4243,17 +3658,17 @@ function WalletContent({
|
|
|
4243
3658
|
const { setVisible, visible } = useWalletModal();
|
|
4244
3659
|
const wallet = useWallet2();
|
|
4245
3660
|
const { events, login } = useMatch();
|
|
4246
|
-
const [status, setStatus] =
|
|
3661
|
+
const [status, setStatus] = useState17("");
|
|
4247
3662
|
const statusRef = React7.useRef(status);
|
|
4248
|
-
const [error, setError] =
|
|
4249
|
-
|
|
3663
|
+
const [error, setError] = useState17("");
|
|
3664
|
+
useEffect15(() => {
|
|
4250
3665
|
const init = async () => {
|
|
4251
3666
|
await wallet.disconnect();
|
|
4252
3667
|
setVisible(true);
|
|
4253
3668
|
};
|
|
4254
3669
|
init();
|
|
4255
3670
|
}, []);
|
|
4256
|
-
|
|
3671
|
+
useEffect15(() => {
|
|
4257
3672
|
if (wallet.connected) {
|
|
4258
3673
|
console.log("wallet.connected", wallet.connected);
|
|
4259
3674
|
toLoginInWallet();
|
|
@@ -4389,7 +3804,7 @@ function SOLModal(props) {
|
|
|
4389
3804
|
}
|
|
4390
3805
|
|
|
4391
3806
|
// src/components/TRONModal/index.tsx
|
|
4392
|
-
import React8, { useEffect as
|
|
3807
|
+
import React8, { useEffect as useEffect17, useMemo as useMemo11, useState as useState19 } from "react";
|
|
4393
3808
|
import { useIntl as useIntl10 } from "react-intl";
|
|
4394
3809
|
|
|
4395
3810
|
// src/lib/tron/TronLinkAdapter.ts
|
|
@@ -4423,7 +3838,7 @@ var TronLinkAdapter = class {
|
|
|
4423
3838
|
};
|
|
4424
3839
|
|
|
4425
3840
|
// src/hooks/useTRONWallet.ts
|
|
4426
|
-
import { useEffect as
|
|
3841
|
+
import { useEffect as useEffect16, useState as useState18 } from "react";
|
|
4427
3842
|
|
|
4428
3843
|
// src/lib/tron/BitgetAdapter.ts
|
|
4429
3844
|
var BitgetAdapter = class {
|
|
@@ -4468,9 +3883,9 @@ var OKXAdapter = class {
|
|
|
4468
3883
|
// src/hooks/useTRONWallet.ts
|
|
4469
3884
|
var useTRONWallet = () => {
|
|
4470
3885
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
4471
|
-
const [installedWallets, setInstalledWallets] =
|
|
4472
|
-
const [address2, setAddress] =
|
|
4473
|
-
|
|
3886
|
+
const [installedWallets, setInstalledWallets] = useState18([]);
|
|
3887
|
+
const [address2, setAddress] = useState18(null);
|
|
3888
|
+
useEffect16(() => {
|
|
4474
3889
|
const getInstalled = async () => {
|
|
4475
3890
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
4476
3891
|
wallet: wallet2,
|
|
@@ -4480,11 +3895,11 @@ var useTRONWallet = () => {
|
|
|
4480
3895
|
};
|
|
4481
3896
|
getInstalled();
|
|
4482
3897
|
}, []);
|
|
4483
|
-
const [wallet, chooseWallet] =
|
|
3898
|
+
const [wallet, chooseWallet] = useState18(null);
|
|
4484
3899
|
const onConnect = async () => {
|
|
4485
3900
|
setAddress(await wallet.connect());
|
|
4486
3901
|
};
|
|
4487
|
-
|
|
3902
|
+
useEffect16(() => {
|
|
4488
3903
|
if (!wallet) {
|
|
4489
3904
|
setAddress(null);
|
|
4490
3905
|
}
|
|
@@ -4500,7 +3915,7 @@ var useTRONWallet = () => {
|
|
|
4500
3915
|
};
|
|
4501
3916
|
|
|
4502
3917
|
// src/components/TRONModal/index.tsx
|
|
4503
|
-
import { jsx as jsx23, jsxs as
|
|
3918
|
+
import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4504
3919
|
function TRONConnectModal({
|
|
4505
3920
|
type = "login",
|
|
4506
3921
|
onSuccess,
|
|
@@ -4515,9 +3930,9 @@ function TRONConnectModal({
|
|
|
4515
3930
|
okx: /* @__PURE__ */ jsx23(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
4516
3931
|
};
|
|
4517
3932
|
const { events, login } = useMatch();
|
|
4518
|
-
const [status, setStatus] =
|
|
3933
|
+
const [status, setStatus] = useState19("");
|
|
4519
3934
|
const statusRef = React8.useRef(status);
|
|
4520
|
-
const [error, setError] =
|
|
3935
|
+
const [error, setError] = useState19("");
|
|
4521
3936
|
const connected = useMemo11(() => {
|
|
4522
3937
|
return !!address2;
|
|
4523
3938
|
}, [address2]);
|
|
@@ -4586,7 +4001,7 @@ function TRONConnectModal({
|
|
|
4586
4001
|
statusRef.current = "";
|
|
4587
4002
|
}
|
|
4588
4003
|
};
|
|
4589
|
-
|
|
4004
|
+
useEffect17(() => {
|
|
4590
4005
|
if (wallet) {
|
|
4591
4006
|
console.log("onConnect");
|
|
4592
4007
|
onConnect();
|
|
@@ -4594,12 +4009,12 @@ function TRONConnectModal({
|
|
|
4594
4009
|
setStatus("");
|
|
4595
4010
|
}
|
|
4596
4011
|
}, [wallet]);
|
|
4597
|
-
|
|
4012
|
+
useEffect17(() => {
|
|
4598
4013
|
if (address2) {
|
|
4599
4014
|
toLoginInWallet();
|
|
4600
4015
|
}
|
|
4601
4016
|
}, [address2]);
|
|
4602
|
-
|
|
4017
|
+
useEffect17(() => {
|
|
4603
4018
|
if (!props.isOpen) {
|
|
4604
4019
|
disconnect();
|
|
4605
4020
|
}
|
|
@@ -4621,7 +4036,7 @@ function TRONConnectModal({
|
|
|
4621
4036
|
setVisible: () => {
|
|
4622
4037
|
}
|
|
4623
4038
|
}
|
|
4624
|
-
) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */
|
|
4039
|
+
) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
|
|
4625
4040
|
installedWallets.map((wallet2) => {
|
|
4626
4041
|
return /* @__PURE__ */ jsx23(
|
|
4627
4042
|
RecommendItem,
|
|
@@ -4657,7 +4072,7 @@ function TRONModal(props) {
|
|
|
4657
4072
|
}
|
|
4658
4073
|
|
|
4659
4074
|
// src/components/TONModal/index.tsx
|
|
4660
|
-
import React9, { useEffect as
|
|
4075
|
+
import React9, { useEffect as useEffect18, useState as useState20 } from "react";
|
|
4661
4076
|
import { useIntl as useIntl11 } from "react-intl";
|
|
4662
4077
|
import {
|
|
4663
4078
|
TonConnectUIProvider,
|
|
@@ -4672,15 +4087,15 @@ function WalletContent2({
|
|
|
4672
4087
|
type
|
|
4673
4088
|
}) {
|
|
4674
4089
|
const { events, login } = useMatch();
|
|
4675
|
-
const [connected, setConnected] =
|
|
4090
|
+
const [connected, setConnected] = useState20(false);
|
|
4676
4091
|
const wallet = useTonWallet();
|
|
4677
4092
|
const userFriendlyAddress = useTonAddress();
|
|
4678
4093
|
const [tonConnectUI] = useTonConnectUI();
|
|
4679
4094
|
const { state, open, close } = useTonConnectModal();
|
|
4680
|
-
const [status, setStatus] =
|
|
4095
|
+
const [status, setStatus] = useState20("");
|
|
4681
4096
|
const statusRef = React9.useRef(status);
|
|
4682
|
-
const [error, setError] =
|
|
4683
|
-
|
|
4097
|
+
const [error, setError] = useState20("");
|
|
4098
|
+
useEffect18(() => {
|
|
4684
4099
|
const init = async () => {
|
|
4685
4100
|
if (wallet) {
|
|
4686
4101
|
await tonConnectUI.disconnect();
|
|
@@ -4753,7 +4168,7 @@ function WalletContent2({
|
|
|
4753
4168
|
}
|
|
4754
4169
|
});
|
|
4755
4170
|
}, []);
|
|
4756
|
-
|
|
4171
|
+
useEffect18(() => {
|
|
4757
4172
|
if (wallet) {
|
|
4758
4173
|
setConnected(true);
|
|
4759
4174
|
console.log("Wallet connected:", wallet);
|
|
@@ -4764,7 +4179,7 @@ function WalletContent2({
|
|
|
4764
4179
|
setStatus("");
|
|
4765
4180
|
}
|
|
4766
4181
|
}, [wallet]);
|
|
4767
|
-
|
|
4182
|
+
useEffect18(() => {
|
|
4768
4183
|
console.log({
|
|
4769
4184
|
state,
|
|
4770
4185
|
wallet
|
|
@@ -4844,7 +4259,7 @@ function TONModal(props) {
|
|
|
4844
4259
|
}
|
|
4845
4260
|
|
|
4846
4261
|
// src/components/BTCModal/index.tsx
|
|
4847
|
-
import React10, { useEffect as
|
|
4262
|
+
import React10, { useEffect as useEffect20, useMemo as useMemo12, useState as useState22 } from "react";
|
|
4848
4263
|
import { useIntl as useIntl12 } from "react-intl";
|
|
4849
4264
|
|
|
4850
4265
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -4999,12 +4414,12 @@ var LeatherAdapter = class {
|
|
|
4999
4414
|
};
|
|
5000
4415
|
|
|
5001
4416
|
// src/hooks/useBTCWallet.ts
|
|
5002
|
-
import { useEffect as
|
|
4417
|
+
import { useEffect as useEffect19, useState as useState21 } from "react";
|
|
5003
4418
|
var useBTCWallet = () => {
|
|
5004
4419
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
5005
|
-
const [installedWallets, setInstalledWallets] =
|
|
5006
|
-
const [address2, setAddress] =
|
|
5007
|
-
|
|
4420
|
+
const [installedWallets, setInstalledWallets] = useState21([]);
|
|
4421
|
+
const [address2, setAddress] = useState21(null);
|
|
4422
|
+
useEffect19(() => {
|
|
5008
4423
|
const getInstalled = async () => {
|
|
5009
4424
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
5010
4425
|
wallet: wallet2,
|
|
@@ -5014,11 +4429,11 @@ var useBTCWallet = () => {
|
|
|
5014
4429
|
};
|
|
5015
4430
|
getInstalled();
|
|
5016
4431
|
}, []);
|
|
5017
|
-
const [wallet, chooseWallet] =
|
|
4432
|
+
const [wallet, chooseWallet] = useState21(null);
|
|
5018
4433
|
const onConnect = async () => {
|
|
5019
4434
|
setAddress(await wallet.connect());
|
|
5020
4435
|
};
|
|
5021
|
-
|
|
4436
|
+
useEffect19(() => {
|
|
5022
4437
|
if (!wallet) {
|
|
5023
4438
|
setAddress(null);
|
|
5024
4439
|
}
|
|
@@ -5034,7 +4449,7 @@ var useBTCWallet = () => {
|
|
|
5034
4449
|
};
|
|
5035
4450
|
|
|
5036
4451
|
// src/components/BTCModal/index.tsx
|
|
5037
|
-
import { jsx as jsx25, jsxs as
|
|
4452
|
+
import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5038
4453
|
function BTCConnectModal({
|
|
5039
4454
|
type = "login",
|
|
5040
4455
|
onSuccess,
|
|
@@ -5049,9 +4464,9 @@ function BTCConnectModal({
|
|
|
5049
4464
|
xverse: /* @__PURE__ */ jsx25(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
5050
4465
|
};
|
|
5051
4466
|
const { events, login } = useMatch();
|
|
5052
|
-
const [status, setStatus] =
|
|
4467
|
+
const [status, setStatus] = useState22("");
|
|
5053
4468
|
const statusRef = React10.useRef(status);
|
|
5054
|
-
const [error, setError] =
|
|
4469
|
+
const [error, setError] = useState22("");
|
|
5055
4470
|
const connected = useMemo12(() => {
|
|
5056
4471
|
return !!address2;
|
|
5057
4472
|
}, [address2]);
|
|
@@ -5116,7 +4531,7 @@ function BTCConnectModal({
|
|
|
5116
4531
|
statusRef.current = "";
|
|
5117
4532
|
}
|
|
5118
4533
|
};
|
|
5119
|
-
|
|
4534
|
+
useEffect20(() => {
|
|
5120
4535
|
if (wallet) {
|
|
5121
4536
|
console.log("onConnect");
|
|
5122
4537
|
try {
|
|
@@ -5129,12 +4544,12 @@ function BTCConnectModal({
|
|
|
5129
4544
|
setStatus("");
|
|
5130
4545
|
}
|
|
5131
4546
|
}, [wallet]);
|
|
5132
|
-
|
|
4547
|
+
useEffect20(() => {
|
|
5133
4548
|
if (address2) {
|
|
5134
4549
|
toLoginInWallet();
|
|
5135
4550
|
}
|
|
5136
4551
|
}, [address2]);
|
|
5137
|
-
|
|
4552
|
+
useEffect20(() => {
|
|
5138
4553
|
if (!props.isOpen) {
|
|
5139
4554
|
disconnect();
|
|
5140
4555
|
}
|
|
@@ -5163,7 +4578,7 @@ function BTCConnectModal({
|
|
|
5163
4578
|
setVisible: () => {
|
|
5164
4579
|
}
|
|
5165
4580
|
}
|
|
5166
|
-
) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */
|
|
4581
|
+
) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
|
|
5167
4582
|
installedWallets.map((wallet2) => {
|
|
5168
4583
|
return /* @__PURE__ */ jsx25(
|
|
5169
4584
|
RecommendItem,
|
|
@@ -5242,409 +4657,6 @@ function WalletModal(props) {
|
|
|
5242
4657
|
return props.isOpen && /* @__PURE__ */ jsx26(WalletConnectModal, { ...props });
|
|
5243
4658
|
}
|
|
5244
4659
|
|
|
5245
|
-
// src/components/AlphaAvatar/index.tsx
|
|
5246
|
-
import { useEffect as useEffect22, useState as useState24 } from "react";
|
|
5247
|
-
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
5248
|
-
function AlphaAvatar2({ name, size = 40, className = "" }) {
|
|
5249
|
-
const [avatar, setAvatar] = useState24(void 0);
|
|
5250
|
-
useEffect22(() => {
|
|
5251
|
-
if (name) {
|
|
5252
|
-
const char = name[0].toUpperCase();
|
|
5253
|
-
if (char.match(/[a-zA-Z]/)) {
|
|
5254
|
-
setAvatar(char);
|
|
5255
|
-
}
|
|
5256
|
-
}
|
|
5257
|
-
}, [name]);
|
|
5258
|
-
return /* @__PURE__ */ jsx27("div", { className: `matchid-alpha-avatar ${className}`, style: {
|
|
5259
|
-
width: size,
|
|
5260
|
-
height: size,
|
|
5261
|
-
fontSize: Math.ceil(size / 2)
|
|
5262
|
-
}, children: avatar });
|
|
5263
|
-
}
|
|
5264
|
-
|
|
5265
|
-
// src/components/WalletAsset/index.tsx
|
|
5266
|
-
import { jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5267
|
-
function WalletAsset({
|
|
5268
|
-
onAssetClick
|
|
5269
|
-
}) {
|
|
5270
|
-
const walletAssets = useMatchWalletAssets();
|
|
5271
|
-
const matchWalletAssetList = useMatchWalletAssetList({
|
|
5272
|
-
list: walletAssets.mergedAssets
|
|
5273
|
-
});
|
|
5274
|
-
const { list } = useMatchChain();
|
|
5275
|
-
return /* @__PURE__ */ jsx28("div", { className: "matchid-wallet-asset-list", children: matchWalletAssetList.list.map((n, index) => {
|
|
5276
|
-
const clickFunc = onAssetClick && onAssetClick(n);
|
|
5277
|
-
const chain = list?.find((m) => m.id.toString() === n.chain_id);
|
|
5278
|
-
const getFooterColor = () => {
|
|
5279
|
-
if (!n.price_change_24h) {
|
|
5280
|
-
return "";
|
|
5281
|
-
}
|
|
5282
|
-
if (n.price_change_24h > 0) {
|
|
5283
|
-
return "matchid-wallet-asset-up";
|
|
5284
|
-
}
|
|
5285
|
-
if (n.price_change_24h < 0) {
|
|
5286
|
-
return "matchid-wallet-asset-down";
|
|
5287
|
-
}
|
|
5288
|
-
return "";
|
|
5289
|
-
};
|
|
5290
|
-
return /* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-item`, onClick: clickFunc, style: {
|
|
5291
|
-
cursor: clickFunc ? "pointer" : "default"
|
|
5292
|
-
}, children: [
|
|
5293
|
-
/* @__PURE__ */ jsxs18("div", { className: "matchid-wallet-asset-logo", children: [
|
|
5294
|
-
n.icon ? /* @__PURE__ */ jsx28("img", { src: n.icon, alt: n.symbol, className: `matchid-wallet-asset-icon` }) : /* @__PURE__ */ jsx28(AlphaAvatar2, { className: `matchid-wallet-asset-icon`, size: 40, name: n.symbol || n.name || "" }),
|
|
5295
|
-
chain?.iconUrl && /* @__PURE__ */ jsx28("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-wallet-asset-chain` })
|
|
5296
|
-
] }),
|
|
5297
|
-
/* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-info`, children: [
|
|
5298
|
-
/* @__PURE__ */ jsx28("div", { className: `matchid-wallet-asset-name`, children: n.symbol }),
|
|
5299
|
-
"price" in n && /* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-content`, children: [
|
|
5300
|
-
/* @__PURE__ */ jsx28("div", { className: "matchid-wallet-asset-price", children: /* @__PURE__ */ jsx28(NumberFormatter, { value: n.price, prefix: "$ ", tFixNum: 2 }) }),
|
|
5301
|
-
/* @__PURE__ */ jsx28("div", { className: "matchid-wallet-asset-value", children: /* @__PURE__ */ jsx28(NumberFormatter, { value: n.value, prefix: "$ ", tFixNum: 2 }) })
|
|
5302
|
-
] }),
|
|
5303
|
-
/* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-footer`, children: [
|
|
5304
|
-
/* @__PURE__ */ jsx28("div", { className: `matchid-wallet-asset-balance`, children: /* @__PURE__ */ jsx28(NumberFormatter, { value: n.balance, tFixNum: 3 }) }),
|
|
5305
|
-
"price_change_24h" in n && /* @__PURE__ */ jsx28("div", { className: `matchid-wallet-asset-change ${getFooterColor()}`, children: /* @__PURE__ */ jsx28(NumberFormatter, { prefix: `${(n?.price_change_24h || 0) < 0 ? "-" : "+"} `, value: Math.abs(n.price_change_24h || 0), suffix: "%", tFixNum: 3 }) })
|
|
5306
|
-
] })
|
|
5307
|
-
] })
|
|
5308
|
-
] }, index);
|
|
5309
|
-
}) });
|
|
5310
|
-
}
|
|
5311
|
-
|
|
5312
|
-
// src/components/TokenSend/index.tsx
|
|
5313
|
-
import { useEffect as useEffect23, useMemo as useMemo14, useState as useState25 } from "react";
|
|
5314
|
-
import { defineChain as defineChain3, encodeFunctionData as encodeFunctionData3, http as http4, parseUnits } from "viem";
|
|
5315
|
-
import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
5316
|
-
function Input2({
|
|
5317
|
-
onChange,
|
|
5318
|
-
placeholder,
|
|
5319
|
-
value,
|
|
5320
|
-
maxLength,
|
|
5321
|
-
type,
|
|
5322
|
-
error,
|
|
5323
|
-
size = "df"
|
|
5324
|
-
}) {
|
|
5325
|
-
return /* @__PURE__ */ jsxs19("div", { className: `matchid-token-input-box ${"matchid-token-input-" + size}`, children: [
|
|
5326
|
-
/* @__PURE__ */ jsx29(
|
|
5327
|
-
"input",
|
|
5328
|
-
{
|
|
5329
|
-
placeholder,
|
|
5330
|
-
onChange,
|
|
5331
|
-
maxLength,
|
|
5332
|
-
type,
|
|
5333
|
-
value,
|
|
5334
|
-
className: `matchid-token-input ${error ? "matchid-token-input-error" : ""}`
|
|
5335
|
-
}
|
|
5336
|
-
),
|
|
5337
|
-
error && /* @__PURE__ */ jsx29("div", { className: "matchid-token-input-error-text", children: error })
|
|
5338
|
-
] });
|
|
5339
|
-
}
|
|
5340
|
-
function TokenSend({
|
|
5341
|
-
onClose,
|
|
5342
|
-
zIndex,
|
|
5343
|
-
token,
|
|
5344
|
-
onBack
|
|
5345
|
-
}) {
|
|
5346
|
-
const { list: chainList } = useMatchChain();
|
|
5347
|
-
const { createWalletClient: createWalletClient2 } = useWallet();
|
|
5348
|
-
const isNative = token.address.toLowerCase() == NATIVE_TOKEN_ADDRESS;
|
|
5349
|
-
const chain = useMemo14(() => {
|
|
5350
|
-
return chainList?.find((m) => m.id.toString() === token.chain_id);
|
|
5351
|
-
}, [chainList, token.chain_id]);
|
|
5352
|
-
const walletClient = useMemo14(() => {
|
|
5353
|
-
return createWalletClient2({
|
|
5354
|
-
// @ts-ignore
|
|
5355
|
-
chain: defineChain3(chain),
|
|
5356
|
-
transport: http4()
|
|
5357
|
-
});
|
|
5358
|
-
}, [chain]);
|
|
5359
|
-
const [amount, setAmount] = useState25("");
|
|
5360
|
-
const [address2, setAddress] = useState25("");
|
|
5361
|
-
const [loading, setLoading] = useState25(false);
|
|
5362
|
-
const [sending, setSending] = useState25(false);
|
|
5363
|
-
const [txError, setTxError] = useState25("");
|
|
5364
|
-
const transaction = useMemo14(() => {
|
|
5365
|
-
if (!amount || !address2) {
|
|
5366
|
-
return;
|
|
5367
|
-
}
|
|
5368
|
-
const abi = [
|
|
5369
|
-
{
|
|
5370
|
-
"constant": false,
|
|
5371
|
-
"inputs": [
|
|
5372
|
-
{
|
|
5373
|
-
"name": "_to",
|
|
5374
|
-
"type": "address"
|
|
5375
|
-
},
|
|
5376
|
-
{
|
|
5377
|
-
"name": "_value",
|
|
5378
|
-
"type": "uint256"
|
|
5379
|
-
}
|
|
5380
|
-
],
|
|
5381
|
-
"name": "transfer",
|
|
5382
|
-
"outputs": [
|
|
5383
|
-
{
|
|
5384
|
-
"name": "",
|
|
5385
|
-
"type": "bool"
|
|
5386
|
-
}
|
|
5387
|
-
],
|
|
5388
|
-
"payable": false,
|
|
5389
|
-
"stateMutability": "nonpayable",
|
|
5390
|
-
"type": "function"
|
|
5391
|
-
}
|
|
5392
|
-
];
|
|
5393
|
-
const viemChain = defineChain3(chain);
|
|
5394
|
-
const to = isNative ? address2 : token.address;
|
|
5395
|
-
const value = isNative ? parseUnits(amount, parseInt(token?.decimals || "18")) : BigInt(0);
|
|
5396
|
-
const data = isNative ? "0x" : encodeFunctionData3({
|
|
5397
|
-
abi,
|
|
5398
|
-
functionName: "transfer",
|
|
5399
|
-
args: [address2, parseUnits(amount, parseInt(token?.decimals || "18"))]
|
|
5400
|
-
});
|
|
5401
|
-
return {
|
|
5402
|
-
to,
|
|
5403
|
-
value,
|
|
5404
|
-
data,
|
|
5405
|
-
chain: viemChain
|
|
5406
|
-
};
|
|
5407
|
-
}, [amount, address2]);
|
|
5408
|
-
const onCal = async () => {
|
|
5409
|
-
try {
|
|
5410
|
-
setLoading(true);
|
|
5411
|
-
await walletClient?.prepareTransactionRequest(transaction);
|
|
5412
|
-
} catch (error2) {
|
|
5413
|
-
console.error(error2);
|
|
5414
|
-
setTxError(error2.details || error2.message);
|
|
5415
|
-
} finally {
|
|
5416
|
-
setLoading(false);
|
|
5417
|
-
}
|
|
5418
|
-
};
|
|
5419
|
-
const error = useMemo14(() => {
|
|
5420
|
-
setTxError("");
|
|
5421
|
-
let amountError = "";
|
|
5422
|
-
let addressError = "";
|
|
5423
|
-
if (amount) {
|
|
5424
|
-
if (parseFloat(amount) <= 0) {
|
|
5425
|
-
amountError = "Amount must be greater than 0.";
|
|
5426
|
-
} else if ("balance" in token && parseFloat(amount) > (token.balance || 0)) {
|
|
5427
|
-
amountError = "Insufficient balance.";
|
|
5428
|
-
}
|
|
5429
|
-
}
|
|
5430
|
-
if (address2) {
|
|
5431
|
-
if (address2.length < 42) {
|
|
5432
|
-
addressError = "Invalid address.";
|
|
5433
|
-
} else {
|
|
5434
|
-
const reg = /^0x[a-fA-F0-9]{40}$/;
|
|
5435
|
-
if (!reg.test(address2)) {
|
|
5436
|
-
addressError = "Invalid address.";
|
|
5437
|
-
}
|
|
5438
|
-
}
|
|
5439
|
-
}
|
|
5440
|
-
if (amount && address2 && !amountError && !addressError && walletClient) {
|
|
5441
|
-
onCal();
|
|
5442
|
-
}
|
|
5443
|
-
return {
|
|
5444
|
-
amount: amountError,
|
|
5445
|
-
address: addressError
|
|
5446
|
-
};
|
|
5447
|
-
}, [amount, token, chain, address2, walletClient]);
|
|
5448
|
-
const onChangeAmount = (e) => {
|
|
5449
|
-
const value = e.target.value;
|
|
5450
|
-
if (value.match(/^\d*\.?\d*$/)) {
|
|
5451
|
-
setAmount(value);
|
|
5452
|
-
}
|
|
5453
|
-
};
|
|
5454
|
-
const canSend = useMemo14(() => {
|
|
5455
|
-
return !error.amount && !error.address && amount && address2;
|
|
5456
|
-
}, [error]);
|
|
5457
|
-
const onNext = async () => {
|
|
5458
|
-
setSending(true);
|
|
5459
|
-
if (transaction) {
|
|
5460
|
-
await walletClient?.sendTransaction(transaction);
|
|
5461
|
-
}
|
|
5462
|
-
onClose();
|
|
5463
|
-
};
|
|
5464
|
-
useEffect23(() => {
|
|
5465
|
-
const receiveMessage = (event) => {
|
|
5466
|
-
if (event.data) {
|
|
5467
|
-
if (event.data.source == "match-wallet") {
|
|
5468
|
-
if (event.data.method == "sendTransaction" && event.data.messageId == "openIframe") {
|
|
5469
|
-
onBack();
|
|
5470
|
-
setSending(false);
|
|
5471
|
-
}
|
|
5472
|
-
}
|
|
5473
|
-
}
|
|
5474
|
-
};
|
|
5475
|
-
window.addEventListener("message", receiveMessage);
|
|
5476
|
-
return () => {
|
|
5477
|
-
window.removeEventListener("message", receiveMessage);
|
|
5478
|
-
};
|
|
5479
|
-
}, []);
|
|
5480
|
-
return /* @__PURE__ */ jsx29(ModalDrawer, { isOpen: true, onClose, zIndex, title: "Send", onBack, children: /* @__PURE__ */ jsxs19("div", { className: `matchid-token-send-box`, children: [
|
|
5481
|
-
/* @__PURE__ */ jsxs19("div", { className: "matchid-token-send-content", children: [
|
|
5482
|
-
/* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-content`, children: [
|
|
5483
|
-
/* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-header`, children: [
|
|
5484
|
-
/* @__PURE__ */ jsx29("div", { className: `matchid-token-amount-title`, children: "Amount" }),
|
|
5485
|
-
/* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-chain`, children: [
|
|
5486
|
-
token.icon ? /* @__PURE__ */ jsx29(
|
|
5487
|
-
"img",
|
|
5488
|
-
{
|
|
5489
|
-
src: token?.icon,
|
|
5490
|
-
alt: token?.symbol,
|
|
5491
|
-
className: `matchid-token-amount-chain-icon`
|
|
5492
|
-
}
|
|
5493
|
-
) : /* @__PURE__ */ jsx29(AlphaAvatar, { name: token.symbol || token.name || "", size: 16 }),
|
|
5494
|
-
/* @__PURE__ */ jsx29("span", { children: token?.symbol })
|
|
5495
|
-
] })
|
|
5496
|
-
] }),
|
|
5497
|
-
/* @__PURE__ */ jsx29(
|
|
5498
|
-
Input2,
|
|
5499
|
-
{
|
|
5500
|
-
type: "text",
|
|
5501
|
-
onChange: onChangeAmount,
|
|
5502
|
-
placeholder: "Enter the Amount.",
|
|
5503
|
-
value: amount,
|
|
5504
|
-
maxLength: 40,
|
|
5505
|
-
error: error.amount || txError
|
|
5506
|
-
}
|
|
5507
|
-
),
|
|
5508
|
-
/* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-footer`, children: [
|
|
5509
|
-
/* @__PURE__ */ jsx29("div", { className: `matchid-token-amount-title`, children: "Balance:" }),
|
|
5510
|
-
/* @__PURE__ */ jsx29("div", { className: `matchid-token-amount-value`, children: /* @__PURE__ */ jsx29(NumberFormatter, { value: token.balance, tFixNum: 10, suffix: " " + token.symbol }) })
|
|
5511
|
-
] }),
|
|
5512
|
-
/* @__PURE__ */ jsx29(TransferIcon, { className: "matchid-token-amount-transfer" })
|
|
5513
|
-
] }),
|
|
5514
|
-
/* @__PURE__ */ jsxs19("div", { className: `matchid-token-address-content`, children: [
|
|
5515
|
-
/* @__PURE__ */ jsx29("div", { className: `matchid-token-address-header`, children: /* @__PURE__ */ jsx29("div", { className: `matchid-token-address-title`, children: "Received wallet address" }) }),
|
|
5516
|
-
/* @__PURE__ */ jsx29(
|
|
5517
|
-
Input2,
|
|
5518
|
-
{
|
|
5519
|
-
type: "text",
|
|
5520
|
-
size: "sm",
|
|
5521
|
-
onChange: (e) => setAddress(e.target.value),
|
|
5522
|
-
placeholder: "Enter the Received wallet address.",
|
|
5523
|
-
value: address2,
|
|
5524
|
-
maxLength: 42,
|
|
5525
|
-
error: error.address
|
|
5526
|
-
}
|
|
5527
|
-
)
|
|
5528
|
-
] })
|
|
5529
|
-
] }),
|
|
5530
|
-
/* @__PURE__ */ jsx29(
|
|
5531
|
-
Button,
|
|
5532
|
-
{
|
|
5533
|
-
size: "lg",
|
|
5534
|
-
block: true,
|
|
5535
|
-
highlight: true,
|
|
5536
|
-
disabled: !canSend || !!txError,
|
|
5537
|
-
onClick: onNext,
|
|
5538
|
-
loading: loading || sending,
|
|
5539
|
-
children: "Next"
|
|
5540
|
-
}
|
|
5541
|
-
)
|
|
5542
|
-
] }) });
|
|
5543
|
-
}
|
|
5544
|
-
|
|
5545
|
-
// src/components/TokenDetail/index.tsx
|
|
5546
|
-
import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5547
|
-
function TokenDetail({
|
|
5548
|
-
onClose,
|
|
5549
|
-
token
|
|
5550
|
-
}) {
|
|
5551
|
-
const { list: chainList } = useMatchChain();
|
|
5552
|
-
const modal = useModal();
|
|
5553
|
-
const chain = chainList?.find((m) => m.id.toString() === token.chain_id);
|
|
5554
|
-
const onSend = () => {
|
|
5555
|
-
modal.show((props) => {
|
|
5556
|
-
return /* @__PURE__ */ jsx30(TokenSend, { onClose: () => {
|
|
5557
|
-
props.close();
|
|
5558
|
-
onClose();
|
|
5559
|
-
}, onBack: props.close, zIndex: props.zIndex, token });
|
|
5560
|
-
});
|
|
5561
|
-
};
|
|
5562
|
-
return /* @__PURE__ */ jsx30(ModalDrawer, { isOpen: true, title: "Token Details", onClose, children: /* @__PURE__ */ jsxs20("div", { className: `matchid-token-detail`, children: [
|
|
5563
|
-
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-main`, children: [
|
|
5564
|
-
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-info`, children: [
|
|
5565
|
-
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-logo`, children: [
|
|
5566
|
-
token.icon ? /* @__PURE__ */ jsx30("img", { src: token.icon, alt: token.symbol, className: `matchid-token-icon` }) : /* @__PURE__ */ jsx30(AlphaAvatar, { className: `matchid-token-icon`, size: 48, name: token.symbol || token.name || "" }),
|
|
5567
|
-
chain?.iconUrl && /* @__PURE__ */ jsx30("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-token-chain` })
|
|
5568
|
-
] }),
|
|
5569
|
-
/* @__PURE__ */ jsxs20("div", { className: `matchid-token-name`, children: [
|
|
5570
|
-
token.balance,
|
|
5571
|
-
" ",
|
|
5572
|
-
token.symbol
|
|
5573
|
-
] })
|
|
5574
|
-
] }),
|
|
5575
|
-
token.address.toLowerCase() != NATIVE_TOKEN_ADDRESS && /* @__PURE__ */ jsxs20("div", { className: `matchid-token-contract`, children: [
|
|
5576
|
-
/* @__PURE__ */ jsx30("div", { className: "matchid-token-contract-title", children: "Contract address" }),
|
|
5577
|
-
/* @__PURE__ */ jsx30("div", { className: "matchid-token-contract-address", children: token.address })
|
|
5578
|
-
] })
|
|
5579
|
-
] }),
|
|
5580
|
-
/* @__PURE__ */ jsx30(Button, { size: "lg", block: true, highlight: true, onClick: onSend, children: "Send" })
|
|
5581
|
-
] }) });
|
|
5582
|
-
}
|
|
5583
|
-
|
|
5584
|
-
// src/components/TokenSendList/index.tsx
|
|
5585
|
-
import { useState as useState26 } from "react";
|
|
5586
|
-
import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5587
|
-
function TokenSendList({ close }) {
|
|
5588
|
-
const walletAssets = useMatchWalletAssets();
|
|
5589
|
-
const matchWalletAssetList = useMatchWalletAssetList({
|
|
5590
|
-
list: walletAssets.mergedAssets
|
|
5591
|
-
});
|
|
5592
|
-
const { list } = useMatchChain();
|
|
5593
|
-
const [checked, setChecked] = useState26();
|
|
5594
|
-
const modal = useModal();
|
|
5595
|
-
const onNext = () => {
|
|
5596
|
-
checked && modal.show((props) => {
|
|
5597
|
-
return /* @__PURE__ */ jsx31(TokenSend, { onClose: () => {
|
|
5598
|
-
props.close();
|
|
5599
|
-
close();
|
|
5600
|
-
}, onBack: props.close, zIndex: props.zIndex, token: checked });
|
|
5601
|
-
});
|
|
5602
|
-
};
|
|
5603
|
-
return /* @__PURE__ */ jsxs21("div", { className: "matchid-token-send-list-box", children: [
|
|
5604
|
-
/* @__PURE__ */ jsx31("div", { className: "matchid-token-send-list", children: matchWalletAssetList.list.map((n, index) => {
|
|
5605
|
-
const chain = list?.find((m) => m.id.toString() === n.chain_id);
|
|
5606
|
-
return /* @__PURE__ */ jsxs21(
|
|
5607
|
-
"div",
|
|
5608
|
-
{
|
|
5609
|
-
className: `matchid-token-send-item ${checked?.address == n.address ? "matchid-token-send-chekced" : ""}`,
|
|
5610
|
-
onClick: () => {
|
|
5611
|
-
setChecked(n);
|
|
5612
|
-
},
|
|
5613
|
-
children: [
|
|
5614
|
-
/* @__PURE__ */ jsx31(Radio, { checked: checked?.address == n.address }),
|
|
5615
|
-
/* @__PURE__ */ jsxs21("div", { className: "matchid-token-send-content", children: [
|
|
5616
|
-
/* @__PURE__ */ jsxs21("div", { className: "matchid-token-send-logo", children: [
|
|
5617
|
-
n.icon ? /* @__PURE__ */ jsx31("img", { src: n.icon, alt: n.symbol, className: `matchid-token-send-icon` }) : /* @__PURE__ */ jsx31(
|
|
5618
|
-
AlphaAvatar2,
|
|
5619
|
-
{
|
|
5620
|
-
className: `matchid-token-send-icon`,
|
|
5621
|
-
size: 40,
|
|
5622
|
-
name: n.symbol || n.name || ""
|
|
5623
|
-
}
|
|
5624
|
-
),
|
|
5625
|
-
chain?.iconUrl && /* @__PURE__ */ jsx31(
|
|
5626
|
-
"img",
|
|
5627
|
-
{
|
|
5628
|
-
src: chain.iconUrl,
|
|
5629
|
-
alt: chain.name,
|
|
5630
|
-
className: `matchid-token-send-chain`
|
|
5631
|
-
}
|
|
5632
|
-
)
|
|
5633
|
-
] }),
|
|
5634
|
-
/* @__PURE__ */ jsxs21("div", { className: `matchid-token-send-info`, children: [
|
|
5635
|
-
/* @__PURE__ */ jsx31("div", { className: `matchid-token-send-name`, children: n.symbol }),
|
|
5636
|
-
/* @__PURE__ */ jsx31("div", { className: `matchid-token-send-balance`, children: /* @__PURE__ */ jsx31(NumberFormatter, { value: n.balance, tFixNum: 2 }) })
|
|
5637
|
-
] })
|
|
5638
|
-
] })
|
|
5639
|
-
]
|
|
5640
|
-
},
|
|
5641
|
-
index
|
|
5642
|
-
);
|
|
5643
|
-
}) }),
|
|
5644
|
-
/* @__PURE__ */ jsx31(Button, { size: "lg", highlight: true, block: true, disabled: !checked, onClick: onNext, children: "Next" })
|
|
5645
|
-
] });
|
|
5646
|
-
}
|
|
5647
|
-
|
|
5648
4660
|
export {
|
|
5649
4661
|
isSuccess,
|
|
5650
4662
|
getBindListApi,
|
|
@@ -5658,9 +4670,9 @@ export {
|
|
|
5658
4670
|
mintPassportNftApi,
|
|
5659
4671
|
useUserInfo,
|
|
5660
4672
|
useMatchEvents,
|
|
5661
|
-
useModal,
|
|
5662
4673
|
useWallet,
|
|
5663
4674
|
useCopyClipboard,
|
|
4675
|
+
useModal,
|
|
5664
4676
|
useToast,
|
|
5665
4677
|
wallet_exports,
|
|
5666
4678
|
useMatchChain,
|
|
@@ -5675,19 +4687,11 @@ export {
|
|
|
5675
4687
|
TONModal,
|
|
5676
4688
|
BTCModal,
|
|
5677
4689
|
WalletModal,
|
|
5678
|
-
WalletAsset,
|
|
5679
|
-
TokenSend,
|
|
5680
|
-
TokenDetail,
|
|
5681
|
-
TokenSendList,
|
|
5682
4690
|
components_exports,
|
|
5683
4691
|
useMatchWallet,
|
|
5684
|
-
useMatchWalletRecords,
|
|
5685
|
-
useMatchWalletAssets,
|
|
5686
|
-
useMatchWalletAssetList,
|
|
5687
4692
|
useReceipt,
|
|
5688
|
-
useTransaction,
|
|
5689
4693
|
hooks_exports,
|
|
5690
4694
|
MatchProvider,
|
|
5691
4695
|
useMatch
|
|
5692
4696
|
};
|
|
5693
|
-
//# sourceMappingURL=chunk-
|
|
4697
|
+
//# sourceMappingURL=chunk-D6IUBR7S.mjs.map
|