@matchain/matchid-sdk-react 0.1.48-alpha.10 → 0.1.48-alpha.3
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-LHNKZISB.mjs → chunk-A5D3NKTK.mjs} +4 -91
- package/dist/chunk-A5D3NKTK.mjs.map +1 -0
- package/dist/{chunk-MXBUBTKR.mjs → chunk-LNSJ3ZXG.mjs} +5 -11
- package/dist/chunk-LNSJ3ZXG.mjs.map +1 -0
- package/dist/{chunk-YGFOHQU6.mjs → chunk-LPQROHSB.mjs} +2 -2
- package/dist/{chunk-2LRK5L4Z.mjs → chunk-V3WGYFWQ.mjs} +449 -1399
- package/dist/chunk-V3WGYFWQ.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 +177 -1516
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +3 -10
- package/dist/{index-NzZ-mfGZ.d.mts → index-B-s1k4Da.d.mts} +2 -5
- package/dist/{index-BxPB2IQ2.d.ts → index-B8DYrhSW.d.mts} +8 -29
- package/dist/{index-DAEvA2P4.d.ts → index-BHvCA7F9.d.ts} +4 -28
- package/dist/{index-BEwCPHZr.d.mts → index-BZrddrq-.d.mts} +4 -28
- package/dist/{index-BQPieWF9.d.ts → index-BvLpvebq.d.mts} +3 -4
- package/dist/{index-C9s2Ea9O.d.ts → index-Bzcc-y8m.d.ts} +1 -1
- package/dist/{index-CE20hVl1.d.mts → index-Cwx2p8th.d.ts} +8 -29
- package/dist/{index-BsmYcQQU.d.mts → index-DCeOyAw8.d.ts} +3 -4
- package/dist/{index-88JSE0j2.d.ts → index-DG_gyw1q.d.ts} +2 -5
- package/dist/index-DKyt0for.d.mts +181 -0
- package/dist/{index-DZ-eQkIA.d.mts → index-DbG5IjhP.d.mts} +1 -1
- package/dist/index-TkB89QxX.d.ts +181 -0
- package/dist/index.css +4 -468
- package/dist/index.d.mts +7 -8
- package/dist/index.d.ts +7 -8
- package/dist/index.js +1079 -2172
- 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-CHkU0WHZ.d.mts} +33 -48
- package/dist/{types-BZoVuUty.d.ts → types-CHkU0WHZ.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-LPQROHSB.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,10 @@ __export(hooks_exports, {
|
|
|
590
592
|
useMatchChain: () => useMatchChain,
|
|
591
593
|
useMatchEvents: () => useMatchEvents,
|
|
592
594
|
useMatchWallet: () => useMatchWallet,
|
|
593
|
-
useMatchWalletAssetList: () => useMatchWalletAssetList,
|
|
594
|
-
useMatchWalletAssets: () => useMatchWalletAssets,
|
|
595
595
|
useMatchWalletRecords: () => useMatchWalletRecords,
|
|
596
596
|
useModal: () => useModal,
|
|
597
597
|
useReceipt: () => useReceipt,
|
|
598
598
|
useToast: () => useToast,
|
|
599
|
-
useTransaction: () => useTransaction,
|
|
600
599
|
useUserInfo: () => useUserInfo,
|
|
601
600
|
useWallet: () => useWallet
|
|
602
601
|
});
|
|
@@ -669,81 +668,108 @@ import { createWalletClient } from "viem";
|
|
|
669
668
|
import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
|
|
670
669
|
import { encodeDeployData } from "viem";
|
|
671
670
|
|
|
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;
|
|
671
|
+
// src/store/useModalStore.ts
|
|
672
|
+
import { create as create3 } from "zustand";
|
|
673
|
+
|
|
674
|
+
// src/hooks/useConfig.tsx
|
|
675
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
676
|
+
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
677
|
+
var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
678
|
+
function useWalletConfig() {
|
|
679
|
+
const isDownMd = useDownMd();
|
|
680
|
+
const walletMap = {
|
|
681
|
+
evm: {
|
|
682
|
+
icon: /* @__PURE__ */ jsx2(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
683
|
+
activeIcon: /* @__PURE__ */ jsx2(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
684
|
+
name: "EVM",
|
|
685
|
+
method: "evm"
|
|
686
|
+
},
|
|
687
|
+
sol: {
|
|
688
|
+
icon: /* @__PURE__ */ jsx2(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
689
|
+
activeIcon: /* @__PURE__ */ jsx2(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
690
|
+
name: "SOL",
|
|
691
|
+
method: "sol"
|
|
692
|
+
},
|
|
693
|
+
btc: {
|
|
694
|
+
icon: /* @__PURE__ */ jsx2(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
695
|
+
activeIcon: /* @__PURE__ */ jsx2(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
696
|
+
name: "BTC",
|
|
697
|
+
method: "btc"
|
|
698
|
+
},
|
|
699
|
+
tron: {
|
|
700
|
+
icon: /* @__PURE__ */ jsx2(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
701
|
+
activeIcon: /* @__PURE__ */ jsx2(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
702
|
+
name: "TRON",
|
|
703
|
+
method: "tron"
|
|
704
|
+
},
|
|
705
|
+
ton: {
|
|
706
|
+
icon: /* @__PURE__ */ jsx2(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
707
|
+
activeIcon: /* @__PURE__ */ jsx2(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
708
|
+
name: "TON",
|
|
709
|
+
method: "ton"
|
|
710
|
+
}
|
|
711
|
+
};
|
|
712
|
+
return {
|
|
713
|
+
walletMap
|
|
714
|
+
};
|
|
738
715
|
}
|
|
739
716
|
|
|
717
|
+
// src/store/useModalStore.ts
|
|
718
|
+
var useSOLModalStore = create3((set) => ({
|
|
719
|
+
isOpen: false,
|
|
720
|
+
type: "",
|
|
721
|
+
open: (type) => set({ isOpen: true, type }),
|
|
722
|
+
close: () => set({ isOpen: false })
|
|
723
|
+
}));
|
|
724
|
+
var useTRONModalStore = create3((set) => ({
|
|
725
|
+
isOpen: false,
|
|
726
|
+
type: "",
|
|
727
|
+
open: (type) => set({ isOpen: true, type }),
|
|
728
|
+
close: () => set({ isOpen: false })
|
|
729
|
+
}));
|
|
730
|
+
var useTONModalStore = create3((set) => ({
|
|
731
|
+
isOpen: false,
|
|
732
|
+
type: "",
|
|
733
|
+
open: (type) => set({ isOpen: true, type }),
|
|
734
|
+
close: () => set({ isOpen: false })
|
|
735
|
+
}));
|
|
736
|
+
var useBTCModalStore = create3((set) => ({
|
|
737
|
+
isOpen: false,
|
|
738
|
+
type: "",
|
|
739
|
+
open: (type) => set({ isOpen: true, type }),
|
|
740
|
+
close: () => set({ isOpen: false })
|
|
741
|
+
}));
|
|
742
|
+
var useCEXBindModalStore = create3((set) => ({
|
|
743
|
+
type: "",
|
|
744
|
+
isOpen: false,
|
|
745
|
+
open: (type) => set({ isOpen: true, type }),
|
|
746
|
+
close: () => set({ isOpen: false })
|
|
747
|
+
}));
|
|
748
|
+
var useHashPanelStore = create3((set) => ({
|
|
749
|
+
isOpen: false,
|
|
750
|
+
hash: null,
|
|
751
|
+
chain: null,
|
|
752
|
+
open: (params) => set({
|
|
753
|
+
isOpen: true,
|
|
754
|
+
hash: params?.hash || null,
|
|
755
|
+
chain: params?.chain || null
|
|
756
|
+
}),
|
|
757
|
+
close: () => set({ isOpen: false })
|
|
758
|
+
}));
|
|
759
|
+
var useWalletModalStore = create3((set) => ({
|
|
760
|
+
isOpen: false,
|
|
761
|
+
type: "",
|
|
762
|
+
methods: [],
|
|
763
|
+
open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
|
|
764
|
+
close: () => set({ isOpen: false })
|
|
765
|
+
}));
|
|
766
|
+
|
|
740
767
|
// src/hooks/useWallet.tsx
|
|
741
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
742
768
|
var AppClientId = "react-sdk-" + getVersion();
|
|
743
769
|
function useWallet() {
|
|
744
770
|
const { address: address2, wallet: walletConfig } = useLocalStore_default();
|
|
745
771
|
const { walletReady } = useStore_default();
|
|
746
|
-
const
|
|
772
|
+
const { open: openHashPanel } = useHashPanelStore();
|
|
747
773
|
const isRecovered = async () => {
|
|
748
774
|
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
749
775
|
method: "isRecovered"
|
|
@@ -887,11 +913,13 @@ function useWallet() {
|
|
|
887
913
|
prepareTransactionRequest
|
|
888
914
|
}
|
|
889
915
|
});
|
|
916
|
+
openHashPanel();
|
|
890
917
|
const txHash = await obj.sendRawTransaction({
|
|
891
918
|
serializedTransaction
|
|
892
919
|
});
|
|
893
|
-
|
|
894
|
-
|
|
920
|
+
openHashPanel({
|
|
921
|
+
hash: txHash,
|
|
922
|
+
chain: _chain
|
|
895
923
|
});
|
|
896
924
|
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
897
925
|
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
@@ -944,10 +972,10 @@ function useWallet() {
|
|
|
944
972
|
|
|
945
973
|
// src/hooks/useCopyClipboard.ts
|
|
946
974
|
import copy from "copy-to-clipboard";
|
|
947
|
-
import { useCallback
|
|
975
|
+
import { useCallback, useEffect as useEffect4, useState as useState3 } from "react";
|
|
948
976
|
function useCopyClipboard(timeout = 500) {
|
|
949
|
-
const [isCopied, setIsCopied] =
|
|
950
|
-
const staticCopy =
|
|
977
|
+
const [isCopied, setIsCopied] = useState3(false);
|
|
978
|
+
const staticCopy = useCallback((text) => {
|
|
951
979
|
const didCopy = copy(text);
|
|
952
980
|
setIsCopied(didCopy);
|
|
953
981
|
}, []);
|
|
@@ -965,6 +993,48 @@ function useCopyClipboard(timeout = 500) {
|
|
|
965
993
|
return [isCopied, staticCopy];
|
|
966
994
|
}
|
|
967
995
|
|
|
996
|
+
// src/context/ModalContext.tsx
|
|
997
|
+
import { useState as useState4, useCallback as useCallback2, createContext, useContext } from "react";
|
|
998
|
+
import { createPortal } from "react-dom";
|
|
999
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1000
|
+
var ModalContext = createContext(null);
|
|
1001
|
+
function ModalProvider({ children }) {
|
|
1002
|
+
const [showModalState, setShowModalState] = useState4({
|
|
1003
|
+
visible: false,
|
|
1004
|
+
content: null
|
|
1005
|
+
});
|
|
1006
|
+
const closeShowModal = useCallback2(() => {
|
|
1007
|
+
setShowModalState({ visible: false, content: null });
|
|
1008
|
+
}, []);
|
|
1009
|
+
const show = useCallback2((content) => {
|
|
1010
|
+
setShowModalState({
|
|
1011
|
+
visible: true,
|
|
1012
|
+
content: content({ close: closeShowModal })
|
|
1013
|
+
});
|
|
1014
|
+
}, [closeShowModal]);
|
|
1015
|
+
const open = useCallback2((props) => {
|
|
1016
|
+
setShowModalState({
|
|
1017
|
+
visible: true,
|
|
1018
|
+
content: /* @__PURE__ */ jsx3(ModalDrawer, { showClose: true, isOpen: true, onClose: closeShowModal, title: props.title, children: /* @__PURE__ */ jsx3(props.content, { close: closeShowModal }) })
|
|
1019
|
+
});
|
|
1020
|
+
}, [closeShowModal]);
|
|
1021
|
+
const ShowModalComponent = showModalState.visible ? createPortal(
|
|
1022
|
+
showModalState.content,
|
|
1023
|
+
document.body
|
|
1024
|
+
) : null;
|
|
1025
|
+
return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
|
|
1026
|
+
children,
|
|
1027
|
+
ShowModalComponent
|
|
1028
|
+
] });
|
|
1029
|
+
}
|
|
1030
|
+
function useModal() {
|
|
1031
|
+
const context = useContext(ModalContext);
|
|
1032
|
+
if (!context) {
|
|
1033
|
+
throw new Error("useModal must be used within a ModalProvider");
|
|
1034
|
+
}
|
|
1035
|
+
return context;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
968
1038
|
// src/context/ToastContext.tsx
|
|
969
1039
|
import { useState as useState5, useCallback as useCallback3, createContext as createContext2, useContext as useContext2 } from "react";
|
|
970
1040
|
import { createPortal as createPortal2 } from "react-dom";
|
|
@@ -1024,16 +1094,14 @@ __export(wallet_exports, {
|
|
|
1024
1094
|
useAssetListQuery: () => useAssetListQuery,
|
|
1025
1095
|
useChainListQuery: () => useChainListQuery,
|
|
1026
1096
|
useImportTokenListQuery: () => useImportTokenListQuery,
|
|
1027
|
-
useWalletAssetListQuery: () => useWalletAssetListQuery,
|
|
1028
1097
|
useWalletChainListQuery: () => useWalletChainListQuery,
|
|
1029
|
-
useWalletNftListQuery: () => useWalletNftListQuery,
|
|
1030
1098
|
userImportTokenApi: () => userImportTokenApi
|
|
1031
1099
|
});
|
|
1032
1100
|
import { useQuery } from "@tanstack/react-query";
|
|
1033
1101
|
function useChainListQuery(options) {
|
|
1034
1102
|
const { isLogin, token } = useUserInfo();
|
|
1035
1103
|
return useQuery({
|
|
1036
|
-
queryKey: ["match-
|
|
1104
|
+
queryKey: ["match-chain-list", token],
|
|
1037
1105
|
queryFn: async () => {
|
|
1038
1106
|
const res = await getUserChainListApi();
|
|
1039
1107
|
if (!isSuccess(res)) {
|
|
@@ -1051,7 +1119,7 @@ function useAssetListQuery({
|
|
|
1051
1119
|
}) {
|
|
1052
1120
|
const { isLogin, token } = useUserInfo();
|
|
1053
1121
|
return useQuery({
|
|
1054
|
-
queryKey: ["match-
|
|
1122
|
+
queryKey: ["match-wallet-asset-list", token, chainId],
|
|
1055
1123
|
queryFn: async () => {
|
|
1056
1124
|
const res = await getUserWalletAssetApi({ chain_id: chainId.toString() });
|
|
1057
1125
|
if (!isSuccess(res)) {
|
|
@@ -1069,7 +1137,7 @@ function useImportTokenListQuery({
|
|
|
1069
1137
|
}) {
|
|
1070
1138
|
const { isLogin, token } = useUserInfo();
|
|
1071
1139
|
return useQuery({
|
|
1072
|
-
queryKey: ["match-
|
|
1140
|
+
queryKey: ["match-wallet-import-token-list", token, chainId],
|
|
1073
1141
|
queryFn: async () => {
|
|
1074
1142
|
const res = await getUserImportTokenListApi({ chain_id: chainId.toString() });
|
|
1075
1143
|
if (!isSuccess(res)) {
|
|
@@ -1096,54 +1164,9 @@ function useWalletChainListQuery(options) {
|
|
|
1096
1164
|
...options
|
|
1097
1165
|
});
|
|
1098
1166
|
}
|
|
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
1167
|
|
|
1144
1168
|
// src/hooks/useMatchChain.tsx
|
|
1145
1169
|
import { useMemo as useMemo3, useState as useState6 } from "react";
|
|
1146
|
-
import { createPublicClient, http } from "viem";
|
|
1147
1170
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1148
1171
|
function useMatchChain() {
|
|
1149
1172
|
const chainListQuery = useChainListQuery();
|
|
@@ -1203,274 +1226,82 @@ function useMatchChain() {
|
|
|
1203
1226
|
content: ChangeNetwork
|
|
1204
1227
|
});
|
|
1205
1228
|
};
|
|
1206
|
-
const publicClient = useMemo3(() => {
|
|
1207
|
-
if (!chain) {
|
|
1208
|
-
return null;
|
|
1209
|
-
}
|
|
1210
|
-
return createPublicClient({
|
|
1211
|
-
chain,
|
|
1212
|
-
transport: http()
|
|
1213
|
-
});
|
|
1214
|
-
}, [chain]);
|
|
1215
1229
|
return {
|
|
1216
1230
|
list: chainListQuery.data,
|
|
1217
1231
|
chainId,
|
|
1218
1232
|
setChainId,
|
|
1219
1233
|
chain,
|
|
1220
1234
|
explorerLink,
|
|
1221
|
-
showChangeNetwork
|
|
1222
|
-
publicClient
|
|
1235
|
+
showChangeNetwork
|
|
1223
1236
|
};
|
|
1224
1237
|
}
|
|
1225
1238
|
|
|
1226
1239
|
// src/hooks/useMatchWallet.tsx
|
|
1227
1240
|
import { QRCode } from "react-qrcode";
|
|
1228
|
-
import { useEffect as useEffect6,
|
|
1241
|
+
import { useEffect as useEffect6, useState as useState7 } from "react";
|
|
1229
1242
|
|
|
1230
1243
|
// example/src/config/contract.ts
|
|
1231
1244
|
var address = "0x4143e29770fd63e24bb1f32d50bf8a590e34de4b";
|
|
1232
1245
|
|
|
1233
1246
|
// 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";
|
|
1243
1247
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1244
|
-
|
|
1245
|
-
const
|
|
1248
|
+
function useMatchWallet() {
|
|
1249
|
+
const modal = useModal();
|
|
1246
1250
|
const { address: address2 } = useWallet();
|
|
1251
|
+
const chain = useMatchChain();
|
|
1247
1252
|
const [copied, setCopied] = useCopyClipboard();
|
|
1248
1253
|
const toast = useToast();
|
|
1249
1254
|
const onCopy = () => {
|
|
1250
1255
|
setCopied(address2);
|
|
1251
1256
|
toast.success("Copied!");
|
|
1252
1257
|
};
|
|
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
1258
|
const showReceiveModal = () => {
|
|
1259
|
+
const chainLink = chain.explorerLink("address/" + address2);
|
|
1260
|
+
const ReceiveModal = () => {
|
|
1261
|
+
return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
|
|
1262
|
+
/* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
|
|
1263
|
+
/* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
|
|
1264
|
+
/* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
|
|
1265
|
+
QRCode,
|
|
1266
|
+
{
|
|
1267
|
+
margin: "0",
|
|
1268
|
+
className: `matchid-qr-code`,
|
|
1269
|
+
value: address2
|
|
1270
|
+
}
|
|
1271
|
+
) }),
|
|
1272
|
+
/* @__PURE__ */ jsx6(
|
|
1273
|
+
"a",
|
|
1274
|
+
{
|
|
1275
|
+
href: chainLink,
|
|
1276
|
+
target: "_blank",
|
|
1277
|
+
className: `matchid-receive-link`,
|
|
1278
|
+
children: address2
|
|
1279
|
+
}
|
|
1280
|
+
)
|
|
1281
|
+
] }),
|
|
1282
|
+
/* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
|
|
1283
|
+
] });
|
|
1284
|
+
};
|
|
1439
1285
|
modal.open({
|
|
1440
1286
|
title: "Receive",
|
|
1441
1287
|
content: ReceiveModal
|
|
1442
1288
|
});
|
|
1443
1289
|
};
|
|
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
1290
|
return {
|
|
1457
|
-
showReceiveModal
|
|
1458
|
-
showImportTokenModal,
|
|
1459
|
-
showSendListModal
|
|
1291
|
+
showReceiveModal
|
|
1460
1292
|
};
|
|
1461
1293
|
}
|
|
1462
1294
|
function useMatchWalletRecords({
|
|
1463
|
-
pageSize =
|
|
1295
|
+
pageSize = 10
|
|
1464
1296
|
}) {
|
|
1465
1297
|
const [hasMore, setHasMore] = useState7(true);
|
|
1466
1298
|
const [items, setItems] = useState7([]);
|
|
1467
1299
|
const { chainId } = useMatchChain();
|
|
1468
|
-
const
|
|
1300
|
+
const chainIdStr = chainId.toString() || "";
|
|
1469
1301
|
const fetchMoreData = async () => {
|
|
1470
|
-
if (!
|
|
1302
|
+
if (!hasMore) {
|
|
1471
1303
|
return;
|
|
1472
1304
|
}
|
|
1473
|
-
const chainIdStr = chainId ? chainId.toString() : "";
|
|
1474
1305
|
const res = await getUserWalletTransactionsApi({
|
|
1475
1306
|
chain_id: chainIdStr,
|
|
1476
1307
|
limit: pageSize,
|
|
@@ -1480,14 +1311,12 @@ function useMatchWalletRecords({
|
|
|
1480
1311
|
if (res.data && res.data.transactions.length > 0) {
|
|
1481
1312
|
setItems(items.concat(res.data.transactions));
|
|
1482
1313
|
}
|
|
1483
|
-
hasMoreRef.current = res.data && res.data.transactions.length >= pageSize;
|
|
1484
1314
|
setHasMore(res.data && res.data.transactions.length >= pageSize);
|
|
1485
1315
|
}
|
|
1486
1316
|
};
|
|
1487
1317
|
const onInit = async () => {
|
|
1488
1318
|
setItems([]);
|
|
1489
1319
|
setHasMore(true);
|
|
1490
|
-
hasMoreRef.current = true;
|
|
1491
1320
|
fetchMoreData();
|
|
1492
1321
|
};
|
|
1493
1322
|
useEffect6(() => {
|
|
@@ -1501,183 +1330,11 @@ function useMatchWalletRecords({
|
|
|
1501
1330
|
hasMore
|
|
1502
1331
|
};
|
|
1503
1332
|
}
|
|
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
|
|
1674
|
-
};
|
|
1675
|
-
}
|
|
1676
1333
|
|
|
1677
1334
|
// src/hooks/useReceipt.tsx
|
|
1678
1335
|
import { useState as useState8, useCallback as useCallback4, useEffect as useEffect7 } from "react";
|
|
1679
|
-
import { useQuery as
|
|
1680
|
-
import { createPublicClient
|
|
1336
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
1337
|
+
import { createPublicClient, defineChain, http } from "viem";
|
|
1681
1338
|
var CACHE_TTL = 86400 * 30 * 1e3;
|
|
1682
1339
|
var MAX_CACHE_SIZE = 500;
|
|
1683
1340
|
var STORAGE_KEY = "match_receipt_logs";
|
|
@@ -1785,7 +1442,7 @@ function useReceipt({
|
|
|
1785
1442
|
const cache = useReceiptCache();
|
|
1786
1443
|
const chain = list?.find((item) => item.id === chainId);
|
|
1787
1444
|
const [shouldRefetch, setShouldRefetch] = useState8(true);
|
|
1788
|
-
const query =
|
|
1445
|
+
const query = useQuery2({
|
|
1789
1446
|
queryKey: ["match-tx-receipt", hash, chain],
|
|
1790
1447
|
queryFn: async () => {
|
|
1791
1448
|
if (!chain || !hash) return false;
|
|
@@ -1794,11 +1451,12 @@ function useReceipt({
|
|
|
1794
1451
|
return cache.get(cacheKey);
|
|
1795
1452
|
}
|
|
1796
1453
|
try {
|
|
1797
|
-
const publicClient =
|
|
1454
|
+
const publicClient = createPublicClient({
|
|
1455
|
+
//@ts-ignore
|
|
1798
1456
|
chain: defineChain(chain),
|
|
1799
|
-
transport:
|
|
1457
|
+
transport: http()
|
|
1800
1458
|
});
|
|
1801
|
-
const receipt = await publicClient.
|
|
1459
|
+
const receipt = await publicClient.getTransaction({ hash });
|
|
1802
1460
|
if (!receipt) {
|
|
1803
1461
|
return false;
|
|
1804
1462
|
}
|
|
@@ -1814,243 +1472,14 @@ function useReceipt({
|
|
|
1814
1472
|
if (query.data) {
|
|
1815
1473
|
setShouldRefetch(false);
|
|
1816
1474
|
}
|
|
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
|
-
};
|
|
1475
|
+
}, [query.data]);
|
|
1476
|
+
return query;
|
|
2009
1477
|
}
|
|
2010
1478
|
|
|
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
1479
|
// src/components/CEXBindModal/index.tsx
|
|
2051
|
-
import { useEffect as
|
|
1480
|
+
import { useEffect as useEffect8, useMemo as useMemo5, useState as useState9 } from "react";
|
|
2052
1481
|
import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
|
|
2053
|
-
import { jsx as
|
|
1482
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2054
1483
|
function CEXBindModal({
|
|
2055
1484
|
onClose,
|
|
2056
1485
|
type,
|
|
@@ -2059,16 +1488,16 @@ function CEXBindModal({
|
|
|
2059
1488
|
}) {
|
|
2060
1489
|
const intl = useIntl2();
|
|
2061
1490
|
const { events } = useMatch();
|
|
2062
|
-
const [APIPassphrase, setAPIPassphrase] =
|
|
1491
|
+
const [APIPassphrase, setAPIPassphrase] = useState9("");
|
|
2063
1492
|
const { refreshOverview } = useUserInfo();
|
|
2064
|
-
const [loading, setLoading] =
|
|
2065
|
-
const [key, setKey] =
|
|
2066
|
-
const [secret, setSecret] =
|
|
2067
|
-
const [error, setError] =
|
|
1493
|
+
const [loading, setLoading] = useState9(false);
|
|
1494
|
+
const [key, setKey] = useState9("");
|
|
1495
|
+
const [secret, setSecret] = useState9("");
|
|
1496
|
+
const [error, setError] = useState9("");
|
|
2068
1497
|
const needPassphrase = useMemo5(() => {
|
|
2069
1498
|
return ["bitget", "okx"].includes(type.toLowerCase());
|
|
2070
1499
|
}, [type]);
|
|
2071
|
-
|
|
1500
|
+
useEffect8(() => {
|
|
2072
1501
|
if (isOpen) {
|
|
2073
1502
|
setSecret("");
|
|
2074
1503
|
setKey("");
|
|
@@ -2105,20 +1534,20 @@ function CEXBindModal({
|
|
|
2105
1534
|
setLoading(false);
|
|
2106
1535
|
}
|
|
2107
1536
|
};
|
|
2108
|
-
return /* @__PURE__ */
|
|
1537
|
+
return /* @__PURE__ */ jsx7(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
|
|
2109
1538
|
id: "CEXBindTitle"
|
|
2110
1539
|
}, {
|
|
2111
1540
|
type
|
|
2112
1541
|
}), ...props, children: /* @__PURE__ */ jsxs6("div", { className: "matchid-cex-modal", children: [
|
|
2113
1542
|
/* @__PURE__ */ jsxs6("div", { children: [
|
|
2114
|
-
/* @__PURE__ */
|
|
2115
|
-
/* @__PURE__ */
|
|
2116
|
-
/* @__PURE__ */
|
|
2117
|
-
/* @__PURE__ */
|
|
1543
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindAttention" }) }),
|
|
1544
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips1" }) }),
|
|
1545
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips2" }) }),
|
|
1546
|
+
/* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips3" }) })
|
|
2118
1547
|
] }),
|
|
2119
|
-
/* @__PURE__ */
|
|
1548
|
+
/* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
|
|
2120
1549
|
id: "CEXBindApiKey"
|
|
2121
|
-
}), children: /* @__PURE__ */
|
|
1550
|
+
}), children: /* @__PURE__ */ jsx7(
|
|
2122
1551
|
Input,
|
|
2123
1552
|
{
|
|
2124
1553
|
value: key,
|
|
@@ -2126,9 +1555,9 @@ function CEXBindModal({
|
|
|
2126
1555
|
placeholder: "**** **** ****"
|
|
2127
1556
|
}
|
|
2128
1557
|
) }),
|
|
2129
|
-
/* @__PURE__ */
|
|
1558
|
+
/* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
|
|
2130
1559
|
id: "CEXBindApiSecretKey"
|
|
2131
|
-
}), error: !needPassphrase && error, children: /* @__PURE__ */
|
|
1560
|
+
}), error: !needPassphrase && error, children: /* @__PURE__ */ jsx7(
|
|
2132
1561
|
Input,
|
|
2133
1562
|
{
|
|
2134
1563
|
value: secret,
|
|
@@ -2136,9 +1565,9 @@ function CEXBindModal({
|
|
|
2136
1565
|
placeholder: "**** **** ****"
|
|
2137
1566
|
}
|
|
2138
1567
|
) }),
|
|
2139
|
-
needPassphrase && /* @__PURE__ */
|
|
1568
|
+
needPassphrase && /* @__PURE__ */ jsx7(Field, { error, label: intl.formatMessage({
|
|
2140
1569
|
id: "CEXBindApiPassphrase"
|
|
2141
|
-
}), children: /* @__PURE__ */
|
|
1570
|
+
}), children: /* @__PURE__ */ jsx7(
|
|
2142
1571
|
Input,
|
|
2143
1572
|
{
|
|
2144
1573
|
value: APIPassphrase,
|
|
@@ -2146,7 +1575,7 @@ function CEXBindModal({
|
|
|
2146
1575
|
placeholder: "**** **** ****"
|
|
2147
1576
|
}
|
|
2148
1577
|
) }),
|
|
2149
|
-
/* @__PURE__ */
|
|
1578
|
+
/* @__PURE__ */ jsx7(
|
|
2150
1579
|
Button,
|
|
2151
1580
|
{
|
|
2152
1581
|
onClick: SubmitApi,
|
|
@@ -2154,14 +1583,14 @@ function CEXBindModal({
|
|
|
2154
1583
|
block: true,
|
|
2155
1584
|
loading,
|
|
2156
1585
|
disabled: !key || !secret,
|
|
2157
|
-
children: /* @__PURE__ */
|
|
1586
|
+
children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "continue" })
|
|
2158
1587
|
}
|
|
2159
1588
|
)
|
|
2160
1589
|
] }) });
|
|
2161
1590
|
}
|
|
2162
1591
|
|
|
2163
1592
|
// src/context/BusinessProvider.tsx
|
|
2164
|
-
import { Fragment, jsx as
|
|
1593
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2165
1594
|
function BusinessProvider({ children }) {
|
|
2166
1595
|
const { overview, token } = useUserInfo();
|
|
2167
1596
|
const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
|
|
@@ -2170,12 +1599,13 @@ function BusinessProvider({ children }) {
|
|
|
2170
1599
|
const { type: BTCType, isOpen: BTCIsOpen, close: BTCClose } = useBTCModalStore();
|
|
2171
1600
|
const { type: CEXType, isOpen: CEXIsOpen, close: CEXClose } = useCEXBindModalStore();
|
|
2172
1601
|
const WalletModalStore = useWalletModalStore();
|
|
1602
|
+
const { close: HashPanelClose, ...hashPanelProps } = useHashPanelStore();
|
|
2173
1603
|
const walletModalClose = (func) => {
|
|
2174
1604
|
WalletModalStore.close();
|
|
2175
1605
|
func();
|
|
2176
1606
|
};
|
|
2177
1607
|
return /* @__PURE__ */ jsxs7(Fragment, { children: [
|
|
2178
|
-
/* @__PURE__ */
|
|
1608
|
+
/* @__PURE__ */ jsx8(
|
|
2179
1609
|
SOLModal,
|
|
2180
1610
|
{
|
|
2181
1611
|
isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
|
|
@@ -2185,7 +1615,7 @@ function BusinessProvider({ children }) {
|
|
|
2185
1615
|
zIndex: 199
|
|
2186
1616
|
}
|
|
2187
1617
|
),
|
|
2188
|
-
/* @__PURE__ */
|
|
1618
|
+
/* @__PURE__ */ jsx8(
|
|
2189
1619
|
TRONModal,
|
|
2190
1620
|
{
|
|
2191
1621
|
isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
|
|
@@ -2195,7 +1625,7 @@ function BusinessProvider({ children }) {
|
|
|
2195
1625
|
zIndex: 199
|
|
2196
1626
|
}
|
|
2197
1627
|
),
|
|
2198
|
-
/* @__PURE__ */
|
|
1628
|
+
/* @__PURE__ */ jsx8(
|
|
2199
1629
|
TONModal,
|
|
2200
1630
|
{
|
|
2201
1631
|
isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
|
|
@@ -2205,7 +1635,7 @@ function BusinessProvider({ children }) {
|
|
|
2205
1635
|
zIndex: 199
|
|
2206
1636
|
}
|
|
2207
1637
|
),
|
|
2208
|
-
/* @__PURE__ */
|
|
1638
|
+
/* @__PURE__ */ jsx8(
|
|
2209
1639
|
BTCModal,
|
|
2210
1640
|
{
|
|
2211
1641
|
isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
|
|
@@ -2215,7 +1645,7 @@ function BusinessProvider({ children }) {
|
|
|
2215
1645
|
zIndex: 199
|
|
2216
1646
|
}
|
|
2217
1647
|
),
|
|
2218
|
-
/* @__PURE__ */
|
|
1648
|
+
/* @__PURE__ */ jsx8(
|
|
2219
1649
|
CEXBindModal,
|
|
2220
1650
|
{
|
|
2221
1651
|
isOpen: CEXIsOpen && (!!token && !!overview),
|
|
@@ -2224,7 +1654,8 @@ function BusinessProvider({ children }) {
|
|
|
2224
1654
|
zIndex: 199
|
|
2225
1655
|
}
|
|
2226
1656
|
),
|
|
2227
|
-
/* @__PURE__ */
|
|
1657
|
+
/* @__PURE__ */ jsx8(HashPanel_default, { onClose: HashPanelClose, ...hashPanelProps }),
|
|
1658
|
+
/* @__PURE__ */ jsx8(
|
|
2228
1659
|
WalletModal,
|
|
2229
1660
|
{
|
|
2230
1661
|
isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
|
|
@@ -2239,14 +1670,14 @@ function BusinessProvider({ children }) {
|
|
|
2239
1670
|
}
|
|
2240
1671
|
|
|
2241
1672
|
// src/context/index.tsx
|
|
2242
|
-
import { jsx as
|
|
1673
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
2243
1674
|
var Providers = ({ children }) => {
|
|
2244
|
-
return /* @__PURE__ */
|
|
1675
|
+
return /* @__PURE__ */ jsx9(ToastProvider, { children: /* @__PURE__ */ jsx9(ModalProvider, { children: /* @__PURE__ */ jsx9(BusinessProvider, { children }) }) });
|
|
2245
1676
|
};
|
|
2246
1677
|
var context_default = Providers;
|
|
2247
1678
|
|
|
2248
1679
|
// src/hooks/useWalletInit.ts
|
|
2249
|
-
import { useEffect as
|
|
1680
|
+
import { useEffect as useEffect9, useRef } from "react";
|
|
2250
1681
|
|
|
2251
1682
|
// src/utils/wallet.ts
|
|
2252
1683
|
var sendMessage = ({ method, data, resolve, reject, timeout }) => {
|
|
@@ -2279,11 +1710,11 @@ function useWalletInit({
|
|
|
2279
1710
|
}) {
|
|
2280
1711
|
const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
|
|
2281
1712
|
const { setWalletReady, walletReady } = useStore_default();
|
|
2282
|
-
const iframeReadyRef =
|
|
2283
|
-
|
|
1713
|
+
const iframeReadyRef = useRef(walletReady);
|
|
1714
|
+
useEffect9(() => {
|
|
2284
1715
|
setWallet(config);
|
|
2285
1716
|
}, [config]);
|
|
2286
|
-
|
|
1717
|
+
useEffect9(() => {
|
|
2287
1718
|
matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
|
|
2288
1719
|
iframeReadyRef.current = walletReady;
|
|
2289
1720
|
if (iframeReadyRef.current) {
|
|
@@ -2300,7 +1731,7 @@ function useWalletInit({
|
|
|
2300
1731
|
onReady();
|
|
2301
1732
|
}
|
|
2302
1733
|
}, [walletReady]);
|
|
2303
|
-
|
|
1734
|
+
useEffect9(() => {
|
|
2304
1735
|
if (!endpoints.auth || !appid || !token || !config) {
|
|
2305
1736
|
const existingIframe = getWalletIframe();
|
|
2306
1737
|
if (existingIframe) {
|
|
@@ -2400,7 +1831,7 @@ function useWalletInit({
|
|
|
2400
1831
|
}
|
|
2401
1832
|
}
|
|
2402
1833
|
}, [endpoints.auth, appid, token, config]);
|
|
2403
|
-
|
|
1834
|
+
useEffect9(() => {
|
|
2404
1835
|
const messageHandle = async (e) => {
|
|
2405
1836
|
if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
|
|
2406
1837
|
return;
|
|
@@ -2481,7 +1912,7 @@ function useWalletInit({
|
|
|
2481
1912
|
}
|
|
2482
1913
|
|
|
2483
1914
|
// src/hooks/useInit.tsx
|
|
2484
|
-
import { useEffect as
|
|
1915
|
+
import { useEffect as useEffect10, useRef as useRef2 } from "react";
|
|
2485
1916
|
function useInit({
|
|
2486
1917
|
theme,
|
|
2487
1918
|
appid,
|
|
@@ -2501,23 +1932,23 @@ function useInit({
|
|
|
2501
1932
|
locale: realLocale
|
|
2502
1933
|
} = useLocalStore_default();
|
|
2503
1934
|
const walletModalStore = useWalletModalStore();
|
|
2504
|
-
const overviewLoadingRef =
|
|
1935
|
+
const overviewLoadingRef = useRef2(false);
|
|
2505
1936
|
const searchParams = new URLSearchParams(window.location.search);
|
|
2506
1937
|
const matchToken = searchParams.get("matchToken");
|
|
2507
1938
|
const realEndpoints = endpoints || env_default.endpoints;
|
|
2508
|
-
|
|
1939
|
+
useEffect10(() => {
|
|
2509
1940
|
setTheme(theme);
|
|
2510
1941
|
}, [theme]);
|
|
2511
|
-
|
|
1942
|
+
useEffect10(() => {
|
|
2512
1943
|
setAppid(appid);
|
|
2513
1944
|
}, [appid]);
|
|
2514
|
-
|
|
1945
|
+
useEffect10(() => {
|
|
2515
1946
|
setEndpoints(realEndpoints);
|
|
2516
1947
|
}, [realEndpoints]);
|
|
2517
|
-
|
|
1948
|
+
useEffect10(() => {
|
|
2518
1949
|
setLocale(locale || "en");
|
|
2519
1950
|
}, [locale]);
|
|
2520
|
-
|
|
1951
|
+
useEffect10(() => {
|
|
2521
1952
|
if (matchToken) {
|
|
2522
1953
|
const tokenData = JSON.parse(atob(matchToken));
|
|
2523
1954
|
if (tokenData && tokenData.mid && tokenData.token) {
|
|
@@ -2528,7 +1959,7 @@ function useInit({
|
|
|
2528
1959
|
}
|
|
2529
1960
|
}
|
|
2530
1961
|
}, [matchToken]);
|
|
2531
|
-
|
|
1962
|
+
useEffect10(() => {
|
|
2532
1963
|
const onLoginMessage = (event) => {
|
|
2533
1964
|
const res = event.data;
|
|
2534
1965
|
if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
|
|
@@ -2565,7 +1996,7 @@ function useInit({
|
|
|
2565
1996
|
overviewLoadingRef.current = false;
|
|
2566
1997
|
}
|
|
2567
1998
|
};
|
|
2568
|
-
|
|
1999
|
+
useEffect10(() => {
|
|
2569
2000
|
if (token) {
|
|
2570
2001
|
loadOverview();
|
|
2571
2002
|
}
|
|
@@ -3081,7 +2512,7 @@ var messages = {
|
|
|
3081
2512
|
};
|
|
3082
2513
|
|
|
3083
2514
|
// src/MatchContext.tsx
|
|
3084
|
-
import { jsx as
|
|
2515
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
3085
2516
|
var queryClient = new QueryClient();
|
|
3086
2517
|
var MatchContext = createContext3(void 0);
|
|
3087
2518
|
var MatchProvider = ({
|
|
@@ -3103,7 +2534,7 @@ var MatchProvider = ({
|
|
|
3103
2534
|
useWalletInit({
|
|
3104
2535
|
config: wallet
|
|
3105
2536
|
});
|
|
3106
|
-
return /* @__PURE__ */
|
|
2537
|
+
return /* @__PURE__ */ jsx10(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx10(
|
|
3107
2538
|
MatchContext.Provider,
|
|
3108
2539
|
{
|
|
3109
2540
|
value: {
|
|
@@ -3114,7 +2545,7 @@ var MatchProvider = ({
|
|
|
3114
2545
|
theme,
|
|
3115
2546
|
locale: realLocale
|
|
3116
2547
|
},
|
|
3117
|
-
children: /* @__PURE__ */
|
|
2548
|
+
children: /* @__PURE__ */ jsx10(context_default, { children })
|
|
3118
2549
|
}
|
|
3119
2550
|
) }) });
|
|
3120
2551
|
};
|
|
@@ -3380,23 +2811,29 @@ function useUserInfo() {
|
|
|
3380
2811
|
}
|
|
3381
2812
|
|
|
3382
2813
|
// src/components/EmailModal/StepVerify.tsx
|
|
3383
|
-
import { useEffect as
|
|
2814
|
+
import { useEffect as useEffect12, useMemo as useMemo7, useRef as useRef3, useState as useState11 } from "react";
|
|
2815
|
+
|
|
2816
|
+
// src/config/index.tsx
|
|
2817
|
+
var EMAIL_INTERVAL = 60;
|
|
2818
|
+
var EMAIL_CODE_LENGTH = 6;
|
|
2819
|
+
|
|
2820
|
+
// src/components/EmailModal/StepVerify.tsx
|
|
3384
2821
|
import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
|
|
3385
|
-
import { jsx as
|
|
2822
|
+
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3386
2823
|
function StepVerify(props) {
|
|
3387
2824
|
const intl = useIntl3();
|
|
3388
2825
|
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] =
|
|
2826
|
+
const [error, setError] = useState11("");
|
|
2827
|
+
const [code, setCode] = useState11("");
|
|
2828
|
+
const [sending, setSending] = useState11(false);
|
|
2829
|
+
const [submitting, setSubmitting] = useState11(false);
|
|
2830
|
+
const sendTimeRef = useRef3(0);
|
|
2831
|
+
const [sendBtnText, setSendBtnText] = useState11(intl.formatMessage({
|
|
3395
2832
|
id: "send"
|
|
3396
2833
|
}));
|
|
3397
2834
|
const intervalTime = EMAIL_INTERVAL;
|
|
3398
2835
|
const codeLength = EMAIL_CODE_LENGTH;
|
|
3399
|
-
const intervalRef =
|
|
2836
|
+
const intervalRef = useRef3(null);
|
|
3400
2837
|
const isDownMd = useDownMd();
|
|
3401
2838
|
const onSend = async () => {
|
|
3402
2839
|
if (sendTimeRef.current > 0) {
|
|
@@ -3427,7 +2864,7 @@ function StepVerify(props) {
|
|
|
3427
2864
|
setSending(false);
|
|
3428
2865
|
}
|
|
3429
2866
|
};
|
|
3430
|
-
|
|
2867
|
+
useEffect12(() => {
|
|
3431
2868
|
onSend();
|
|
3432
2869
|
return () => {
|
|
3433
2870
|
if (intervalRef.current) {
|
|
@@ -3461,15 +2898,15 @@ function StepVerify(props) {
|
|
|
3461
2898
|
};
|
|
3462
2899
|
return /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-box", children: [
|
|
3463
2900
|
/* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header", children: [
|
|
3464
|
-
/* @__PURE__ */
|
|
2901
|
+
/* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx11(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
3465
2902
|
/* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header-content", children: [
|
|
3466
|
-
/* @__PURE__ */
|
|
3467
|
-
/* @__PURE__ */
|
|
2903
|
+
/* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
2904
|
+
/* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "sendEmailTips" }) })
|
|
3468
2905
|
] })
|
|
3469
2906
|
] }),
|
|
3470
|
-
/* @__PURE__ */
|
|
2907
|
+
/* @__PURE__ */ jsx11(Field, { label: intl.formatMessage({
|
|
3471
2908
|
id: "verificationCode"
|
|
3472
|
-
}), error, children: /* @__PURE__ */
|
|
2909
|
+
}), error, children: /* @__PURE__ */ jsx11(
|
|
3473
2910
|
Input,
|
|
3474
2911
|
{
|
|
3475
2912
|
placeholder: intl.formatMessage({
|
|
@@ -3479,7 +2916,7 @@ function StepVerify(props) {
|
|
|
3479
2916
|
maxLength: codeLength,
|
|
3480
2917
|
onChange: (e) => setCode(e.target.value),
|
|
3481
2918
|
value: code,
|
|
3482
|
-
after: /* @__PURE__ */
|
|
2919
|
+
after: /* @__PURE__ */ jsx11(
|
|
3483
2920
|
Button,
|
|
3484
2921
|
{
|
|
3485
2922
|
highlight: true,
|
|
@@ -3498,13 +2935,13 @@ function StepVerify(props) {
|
|
|
3498
2935
|
)
|
|
3499
2936
|
}
|
|
3500
2937
|
) }),
|
|
3501
|
-
/* @__PURE__ */
|
|
2938
|
+
/* @__PURE__ */ jsx11(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "continue" }) })
|
|
3502
2939
|
] });
|
|
3503
2940
|
}
|
|
3504
2941
|
|
|
3505
2942
|
// src/components/EmailModal/index.tsx
|
|
3506
2943
|
import { useIntl as useIntl4 } from "react-intl";
|
|
3507
|
-
import { jsx as
|
|
2944
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
3508
2945
|
function EmailModal({
|
|
3509
2946
|
isOpen = false,
|
|
3510
2947
|
width = 480,
|
|
@@ -3512,16 +2949,16 @@ function EmailModal({
|
|
|
3512
2949
|
onBack,
|
|
3513
2950
|
onLogin
|
|
3514
2951
|
}) {
|
|
3515
|
-
const [step, setStep] =
|
|
3516
|
-
const [emailVal, setEmailVal] =
|
|
2952
|
+
const [step, setStep] = useState12("input");
|
|
2953
|
+
const [emailVal, setEmailVal] = useState12("");
|
|
3517
2954
|
const intl = useIntl4();
|
|
3518
|
-
|
|
2955
|
+
useEffect13(() => {
|
|
3519
2956
|
if (!isOpen) {
|
|
3520
2957
|
setStep("input");
|
|
3521
2958
|
setEmailVal("");
|
|
3522
2959
|
}
|
|
3523
2960
|
}, [isOpen]);
|
|
3524
|
-
return /* @__PURE__ */
|
|
2961
|
+
return /* @__PURE__ */ jsx12(
|
|
3525
2962
|
ModalWithHeader,
|
|
3526
2963
|
{
|
|
3527
2964
|
isOpen,
|
|
@@ -3531,22 +2968,22 @@ function EmailModal({
|
|
|
3531
2968
|
id: "email"
|
|
3532
2969
|
}),
|
|
3533
2970
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
3534
|
-
children: step === "input" ? /* @__PURE__ */
|
|
2971
|
+
children: step === "input" ? /* @__PURE__ */ jsx12(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
3535
2972
|
setEmailVal(email);
|
|
3536
2973
|
setStep("verify");
|
|
3537
|
-
} }) : /* @__PURE__ */
|
|
2974
|
+
} }) : /* @__PURE__ */ jsx12(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
3538
2975
|
}
|
|
3539
2976
|
);
|
|
3540
2977
|
}
|
|
3541
2978
|
|
|
3542
2979
|
// src/components/LoginBox/index.tsx
|
|
3543
|
-
import { useMemo as useMemo8, useState as
|
|
2980
|
+
import { useMemo as useMemo8, useState as useState13 } from "react";
|
|
3544
2981
|
import { FormattedMessage as FormattedMessage4, useIntl as useIntl5 } from "react-intl";
|
|
3545
2982
|
|
|
3546
2983
|
// src/hooks/useAppConfig.ts
|
|
3547
|
-
import { useQuery as
|
|
2984
|
+
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
3548
2985
|
function useAppConfig() {
|
|
3549
|
-
const query =
|
|
2986
|
+
const query = useQuery3({
|
|
3550
2987
|
queryKey: ["appConfig"],
|
|
3551
2988
|
queryFn: async () => {
|
|
3552
2989
|
const res = await getAppConfigApi();
|
|
@@ -3564,7 +3001,7 @@ function useAppConfig() {
|
|
|
3564
3001
|
}
|
|
3565
3002
|
|
|
3566
3003
|
// src/components/LoginBox/index.tsx
|
|
3567
|
-
import { Fragment as Fragment2, jsx as
|
|
3004
|
+
import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3568
3005
|
var RecommendItem = ({
|
|
3569
3006
|
icon,
|
|
3570
3007
|
name,
|
|
@@ -3576,17 +3013,17 @@ var RecommendItem = ({
|
|
|
3576
3013
|
return /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method", children: [
|
|
3577
3014
|
/* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
3578
3015
|
/* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-content", children: [
|
|
3579
|
-
/* @__PURE__ */
|
|
3580
|
-
/* @__PURE__ */
|
|
3016
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
3017
|
+
/* @__PURE__ */ jsx13("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
3581
3018
|
] }),
|
|
3582
|
-
footer ? footer : children ? /* @__PURE__ */
|
|
3019
|
+
footer ? footer : children ? /* @__PURE__ */ jsx13(
|
|
3583
3020
|
ArrowDownIcon,
|
|
3584
3021
|
{
|
|
3585
3022
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
3586
3023
|
size: 20,
|
|
3587
3024
|
color: "var(--matchid-arrow-color)"
|
|
3588
3025
|
}
|
|
3589
|
-
) : /* @__PURE__ */
|
|
3026
|
+
) : /* @__PURE__ */ jsx13(
|
|
3590
3027
|
ArrowRightIcon,
|
|
3591
3028
|
{
|
|
3592
3029
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -3595,7 +3032,7 @@ var RecommendItem = ({
|
|
|
3595
3032
|
}
|
|
3596
3033
|
)
|
|
3597
3034
|
] }),
|
|
3598
|
-
children && /* @__PURE__ */
|
|
3035
|
+
children && /* @__PURE__ */ jsx13(
|
|
3599
3036
|
"div",
|
|
3600
3037
|
{
|
|
3601
3038
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -3653,62 +3090,62 @@ function LoginBox({
|
|
|
3653
3090
|
walletMethods: walletMethodList
|
|
3654
3091
|
};
|
|
3655
3092
|
}, [config.platform, recommendMethods, methods, walletMethods]);
|
|
3656
|
-
const [emailOpen, setEmailOpen] =
|
|
3093
|
+
const [emailOpen, setEmailOpen] = useState13(false);
|
|
3657
3094
|
const { login } = useUserInfo();
|
|
3658
|
-
const [showWallet, setShowWallet] =
|
|
3095
|
+
const [showWallet, setShowWallet] = useState13(false);
|
|
3659
3096
|
const intl = useIntl5();
|
|
3660
3097
|
const isDownMd = useDownMd();
|
|
3661
3098
|
const methodMap = {
|
|
3662
3099
|
wallet: {
|
|
3663
|
-
icon: /* @__PURE__ */
|
|
3100
|
+
icon: /* @__PURE__ */ jsx13(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
3664
3101
|
name: intl.formatMessage({ id: "wallet" }),
|
|
3665
3102
|
onClick: () => setShowWallet(!showWallet),
|
|
3666
3103
|
type: "wallet"
|
|
3667
3104
|
},
|
|
3668
3105
|
email: {
|
|
3669
|
-
icon: /* @__PURE__ */
|
|
3106
|
+
icon: /* @__PURE__ */ jsx13(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
3670
3107
|
name: intl.formatMessage({ id: "email" }),
|
|
3671
3108
|
onClick: () => {
|
|
3672
3109
|
setEmailOpen(true);
|
|
3673
3110
|
}
|
|
3674
3111
|
},
|
|
3675
3112
|
google: {
|
|
3676
|
-
icon: /* @__PURE__ */
|
|
3113
|
+
icon: /* @__PURE__ */ jsx13(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
3677
3114
|
name: "Google",
|
|
3678
3115
|
onClick: () => login("google")
|
|
3679
3116
|
},
|
|
3680
3117
|
twitter: {
|
|
3681
|
-
icon: /* @__PURE__ */
|
|
3118
|
+
icon: /* @__PURE__ */ jsx13(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
3682
3119
|
name: "X",
|
|
3683
3120
|
onClick: () => login("twitter")
|
|
3684
3121
|
},
|
|
3685
3122
|
telegram: {
|
|
3686
|
-
icon: /* @__PURE__ */
|
|
3123
|
+
icon: /* @__PURE__ */ jsx13(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
3687
3124
|
name: "Telegram",
|
|
3688
3125
|
onClick: () => login("telegram")
|
|
3689
3126
|
},
|
|
3690
3127
|
github: {
|
|
3691
|
-
icon: /* @__PURE__ */
|
|
3128
|
+
icon: /* @__PURE__ */ jsx13(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
3692
3129
|
name: "Github",
|
|
3693
3130
|
onClick: () => login("github")
|
|
3694
3131
|
},
|
|
3695
3132
|
discord: {
|
|
3696
|
-
icon: /* @__PURE__ */
|
|
3133
|
+
icon: /* @__PURE__ */ jsx13(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
3697
3134
|
name: "Discord",
|
|
3698
3135
|
onClick: () => login("discord")
|
|
3699
3136
|
},
|
|
3700
3137
|
linkedin: {
|
|
3701
|
-
icon: /* @__PURE__ */
|
|
3138
|
+
icon: /* @__PURE__ */ jsx13(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
3702
3139
|
name: "LinkedIn",
|
|
3703
3140
|
onClick: () => login("linkedin")
|
|
3704
3141
|
},
|
|
3705
3142
|
facebook: {
|
|
3706
|
-
icon: /* @__PURE__ */
|
|
3143
|
+
icon: /* @__PURE__ */ jsx13(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
3707
3144
|
name: "Facebook",
|
|
3708
3145
|
onClick: () => login("facebook")
|
|
3709
3146
|
},
|
|
3710
3147
|
youtube: {
|
|
3711
|
-
icon: /* @__PURE__ */
|
|
3148
|
+
icon: /* @__PURE__ */ jsx13(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
3712
3149
|
name: "Youtube",
|
|
3713
3150
|
onClick: () => login("youtube")
|
|
3714
3151
|
}
|
|
@@ -3716,8 +3153,8 @@ function LoginBox({
|
|
|
3716
3153
|
const { walletMap } = useWalletConfig();
|
|
3717
3154
|
return /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
3718
3155
|
(!inModal || !emailOpen) && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-box", children: [
|
|
3719
|
-
/* @__PURE__ */
|
|
3720
|
-
return /* @__PURE__ */
|
|
3156
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
|
|
3157
|
+
return /* @__PURE__ */ jsx13(
|
|
3721
3158
|
RecommendItem,
|
|
3722
3159
|
{
|
|
3723
3160
|
icon: methodMap[m]?.icon,
|
|
@@ -3725,8 +3162,8 @@ function LoginBox({
|
|
|
3725
3162
|
onClick: methodMap[m]?.onClick,
|
|
3726
3163
|
showChildren: m == "wallet" && showWallet,
|
|
3727
3164
|
children: m == "wallet" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
3728
|
-
/* @__PURE__ */
|
|
3729
|
-
/* @__PURE__ */
|
|
3165
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
3166
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
|
|
3730
3167
|
const m2 = walletMap[n];
|
|
3731
3168
|
return /* @__PURE__ */ jsxs9(
|
|
3732
3169
|
"div",
|
|
@@ -3737,15 +3174,15 @@ function LoginBox({
|
|
|
3737
3174
|
},
|
|
3738
3175
|
children: [
|
|
3739
3176
|
/* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
3740
|
-
/* @__PURE__ */
|
|
3741
|
-
/* @__PURE__ */
|
|
3177
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
3178
|
+
/* @__PURE__ */ jsx13(
|
|
3742
3179
|
"div",
|
|
3743
3180
|
{
|
|
3744
3181
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
3745
3182
|
children: m2.activeIcon
|
|
3746
3183
|
}
|
|
3747
3184
|
),
|
|
3748
|
-
/* @__PURE__ */
|
|
3185
|
+
/* @__PURE__ */ jsx13(
|
|
3749
3186
|
"span",
|
|
3750
3187
|
{
|
|
3751
3188
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -3753,7 +3190,7 @@ function LoginBox({
|
|
|
3753
3190
|
}
|
|
3754
3191
|
)
|
|
3755
3192
|
] }),
|
|
3756
|
-
/* @__PURE__ */
|
|
3193
|
+
/* @__PURE__ */ jsx13(
|
|
3757
3194
|
ArrowRightIcon,
|
|
3758
3195
|
{
|
|
3759
3196
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -3772,9 +3209,9 @@ function LoginBox({
|
|
|
3772
3209
|
);
|
|
3773
3210
|
}) }),
|
|
3774
3211
|
methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-other", children: [
|
|
3775
|
-
/* @__PURE__ */
|
|
3776
|
-
/* @__PURE__ */
|
|
3777
|
-
return /* @__PURE__ */
|
|
3212
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx13(FormattedMessage4, { id: "otherLoginMethods" }) }),
|
|
3213
|
+
/* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
|
|
3214
|
+
return /* @__PURE__ */ jsx13(
|
|
3778
3215
|
"div",
|
|
3779
3216
|
{
|
|
3780
3217
|
className: "matchid-login-method-item",
|
|
@@ -3787,7 +3224,7 @@ function LoginBox({
|
|
|
3787
3224
|
}) })
|
|
3788
3225
|
] })
|
|
3789
3226
|
] }),
|
|
3790
|
-
/* @__PURE__ */
|
|
3227
|
+
/* @__PURE__ */ jsx13(
|
|
3791
3228
|
EmailModal,
|
|
3792
3229
|
{
|
|
3793
3230
|
isOpen: emailOpen,
|
|
@@ -3803,11 +3240,11 @@ function LoginBox({
|
|
|
3803
3240
|
}
|
|
3804
3241
|
|
|
3805
3242
|
// src/components/LoginButton/index.tsx
|
|
3806
|
-
import { useState as
|
|
3243
|
+
import { useState as useState15 } from "react";
|
|
3807
3244
|
|
|
3808
3245
|
// src/components/LoginPanel/index.tsx
|
|
3809
3246
|
import { FormattedMessage as FormattedMessage5 } from "react-intl";
|
|
3810
|
-
import { jsx as
|
|
3247
|
+
import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3811
3248
|
function LoginPanel({
|
|
3812
3249
|
header,
|
|
3813
3250
|
onClose,
|
|
@@ -3817,42 +3254,42 @@ function LoginPanel({
|
|
|
3817
3254
|
return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel", children: [
|
|
3818
3255
|
header ? header : /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header", children: [
|
|
3819
3256
|
/* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header-content", children: [
|
|
3820
|
-
/* @__PURE__ */
|
|
3821
|
-
/* @__PURE__ */
|
|
3257
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTitle" }) }),
|
|
3258
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTips" }) })
|
|
3822
3259
|
] }),
|
|
3823
|
-
onClose && /* @__PURE__ */
|
|
3260
|
+
onClose && /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx14(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
3824
3261
|
] }),
|
|
3825
|
-
/* @__PURE__ */
|
|
3826
|
-
/* @__PURE__ */
|
|
3262
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-divide" }),
|
|
3263
|
+
/* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx14(LoginBox, { ...props }) })
|
|
3827
3264
|
] });
|
|
3828
3265
|
}
|
|
3829
3266
|
|
|
3830
3267
|
// src/components/LoginModal/index.tsx
|
|
3831
|
-
import { jsx as
|
|
3268
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
3832
3269
|
function LoginModal({
|
|
3833
3270
|
isOpen = false,
|
|
3834
3271
|
width = 480,
|
|
3835
3272
|
...props
|
|
3836
3273
|
}) {
|
|
3837
3274
|
const { isLogin } = useUserInfo();
|
|
3838
|
-
return /* @__PURE__ */
|
|
3275
|
+
return /* @__PURE__ */ jsx15(
|
|
3839
3276
|
Modal,
|
|
3840
3277
|
{
|
|
3841
3278
|
isOpen: isOpen && !isLogin,
|
|
3842
3279
|
width,
|
|
3843
|
-
children: /* @__PURE__ */
|
|
3280
|
+
children: /* @__PURE__ */ jsx15(LoginPanel, { ...props, inModal: true })
|
|
3844
3281
|
}
|
|
3845
3282
|
);
|
|
3846
3283
|
}
|
|
3847
3284
|
|
|
3848
3285
|
// src/components/UserPopover/index.tsx
|
|
3849
|
-
import { useState as
|
|
3286
|
+
import { useState as useState14 } from "react";
|
|
3850
3287
|
|
|
3851
3288
|
// src/assets/icon/ProfileIcon.tsx
|
|
3852
|
-
import { jsx as
|
|
3289
|
+
import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3853
3290
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
3854
3291
|
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__ */
|
|
3292
|
+
/* @__PURE__ */ jsx16(
|
|
3856
3293
|
"path",
|
|
3857
3294
|
{
|
|
3858
3295
|
fillRule: "evenodd",
|
|
@@ -3861,7 +3298,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
3861
3298
|
fill: color
|
|
3862
3299
|
}
|
|
3863
3300
|
),
|
|
3864
|
-
/* @__PURE__ */
|
|
3301
|
+
/* @__PURE__ */ jsx16(
|
|
3865
3302
|
"path",
|
|
3866
3303
|
{
|
|
3867
3304
|
fillRule: "evenodd",
|
|
@@ -3875,10 +3312,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
3875
3312
|
|
|
3876
3313
|
// src/components/UserPopover/index.tsx
|
|
3877
3314
|
import { FormattedMessage as FormattedMessage6, useIntl as useIntl6 } from "react-intl";
|
|
3878
|
-
import { jsx as
|
|
3315
|
+
import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3879
3316
|
function UserContent() {
|
|
3880
3317
|
const { logout, address: address2, username } = useUserInfo();
|
|
3881
|
-
const [logouting, setLogouting] =
|
|
3318
|
+
const [logouting, setLogouting] = useState14(false);
|
|
3882
3319
|
const onLogout = async () => {
|
|
3883
3320
|
if (logouting) return;
|
|
3884
3321
|
try {
|
|
@@ -3899,31 +3336,31 @@ function UserContent() {
|
|
|
3899
3336
|
return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
3900
3337
|
/* @__PURE__ */ jsxs12("div", { className: `matchid-user-popover-item-content`, children: [
|
|
3901
3338
|
icon,
|
|
3902
|
-
/* @__PURE__ */
|
|
3339
|
+
/* @__PURE__ */ jsx17("div", { className: "matchid-user-popover-item-text", children })
|
|
3903
3340
|
] }),
|
|
3904
3341
|
rightIcon
|
|
3905
3342
|
] });
|
|
3906
3343
|
};
|
|
3907
3344
|
const UserDivider = () => {
|
|
3908
|
-
return /* @__PURE__ */
|
|
3345
|
+
return /* @__PURE__ */ jsx17("div", { className: `matchid-user-popover-divider` });
|
|
3909
3346
|
};
|
|
3910
|
-
const [usernameOpen, setUsernameOpen] =
|
|
3347
|
+
const [usernameOpen, setUsernameOpen] = useState14(false);
|
|
3911
3348
|
const [copied, setCopied] = useCopyClipboard();
|
|
3912
3349
|
const intl = useIntl6();
|
|
3913
3350
|
return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-content", children: [
|
|
3914
3351
|
/* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-list", children: [
|
|
3915
|
-
/* @__PURE__ */
|
|
3352
|
+
/* @__PURE__ */ jsx17(UserItem, { onClick: () => {
|
|
3916
3353
|
setCopied(address2);
|
|
3917
|
-
}, icon: copied ? /* @__PURE__ */
|
|
3918
|
-
/* @__PURE__ */
|
|
3919
|
-
/* @__PURE__ */
|
|
3354
|
+
}, 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) }),
|
|
3355
|
+
/* @__PURE__ */ jsx17(UserDivider, {}),
|
|
3356
|
+
/* @__PURE__ */ jsx17(UserItem, { onClick: () => {
|
|
3920
3357
|
setUsernameOpen(true);
|
|
3921
|
-
}, icon: /* @__PURE__ */
|
|
3358
|
+
}, 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
3359
|
id: "setUsername"
|
|
3923
3360
|
}) })
|
|
3924
3361
|
] }),
|
|
3925
|
-
/* @__PURE__ */
|
|
3926
|
-
/* @__PURE__ */
|
|
3362
|
+
/* @__PURE__ */ jsx17(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx17(FormattedMessage6, { id: "disconnect" }) }),
|
|
3363
|
+
/* @__PURE__ */ jsx17(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
3927
3364
|
setUsernameOpen(false);
|
|
3928
3365
|
}, onSuccess: () => {
|
|
3929
3366
|
setUsernameOpen(false);
|
|
@@ -3934,12 +3371,12 @@ function UserPopover({
|
|
|
3934
3371
|
children,
|
|
3935
3372
|
...props
|
|
3936
3373
|
}) {
|
|
3937
|
-
return /* @__PURE__ */
|
|
3374
|
+
return /* @__PURE__ */ jsx17(Popover, { ...props, content: /* @__PURE__ */ jsx17(UserContent, {}), children });
|
|
3938
3375
|
}
|
|
3939
3376
|
|
|
3940
3377
|
// src/components/LoginButton/index.tsx
|
|
3941
3378
|
import { FormattedMessage as FormattedMessage7, useIntl as useIntl7 } from "react-intl";
|
|
3942
|
-
import { Fragment as Fragment3, jsx as
|
|
3379
|
+
import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3943
3380
|
function LoginButton({
|
|
3944
3381
|
loginRender,
|
|
3945
3382
|
methods,
|
|
@@ -3953,10 +3390,10 @@ function LoginButton({
|
|
|
3953
3390
|
}) {
|
|
3954
3391
|
const intl = useIntl7();
|
|
3955
3392
|
const { isLogin, username } = useUserInfo();
|
|
3956
|
-
const [loginOpen, setLoginOpen] =
|
|
3393
|
+
const [loginOpen, setLoginOpen] = useState15(false);
|
|
3957
3394
|
if (!isLogin) {
|
|
3958
3395
|
return /* @__PURE__ */ jsxs13(Fragment3, { children: [
|
|
3959
|
-
/* @__PURE__ */
|
|
3396
|
+
/* @__PURE__ */ jsx18(
|
|
3960
3397
|
LoginModal,
|
|
3961
3398
|
{
|
|
3962
3399
|
methods,
|
|
@@ -3967,30 +3404,53 @@ function LoginButton({
|
|
|
3967
3404
|
}
|
|
3968
3405
|
),
|
|
3969
3406
|
/* @__PURE__ */ jsxs13(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
3970
|
-
/* @__PURE__ */
|
|
3971
|
-
/* @__PURE__ */
|
|
3407
|
+
/* @__PURE__ */ jsx18(UnLoginIcon_default, {}),
|
|
3408
|
+
/* @__PURE__ */ jsx18("span", { children: /* @__PURE__ */ jsx18(FormattedMessage7, { id: "login" }) })
|
|
3972
3409
|
] })
|
|
3973
3410
|
] });
|
|
3974
3411
|
}
|
|
3975
|
-
return loginRender ? /* @__PURE__ */
|
|
3976
|
-
/* @__PURE__ */
|
|
3977
|
-
/* @__PURE__ */
|
|
3412
|
+
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: [
|
|
3413
|
+
/* @__PURE__ */ jsx18(LoginIcon_default, {}),
|
|
3414
|
+
/* @__PURE__ */ jsx18("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
3978
3415
|
id: "user"
|
|
3979
3416
|
}) })
|
|
3980
3417
|
] }) });
|
|
3981
3418
|
}
|
|
3982
3419
|
|
|
3983
3420
|
// src/components/UsernameModal/index.tsx
|
|
3984
|
-
import { useEffect as
|
|
3421
|
+
import { useEffect as useEffect14, useMemo as useMemo9, useState as useState16 } from "react";
|
|
3422
|
+
|
|
3423
|
+
// src/assets/icon/InfoRoundIcon.tsx
|
|
3424
|
+
import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3425
|
+
function InfoRoundIcon({
|
|
3426
|
+
size,
|
|
3427
|
+
color = "#6E6E6E",
|
|
3428
|
+
...props
|
|
3429
|
+
}) {
|
|
3430
|
+
return /* @__PURE__ */ jsxs14("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
3431
|
+
/* @__PURE__ */ jsx19("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx19(
|
|
3432
|
+
"path",
|
|
3433
|
+
{
|
|
3434
|
+
fillRule: "evenodd",
|
|
3435
|
+
clipRule: "evenodd",
|
|
3436
|
+
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",
|
|
3437
|
+
fill: color
|
|
3438
|
+
}
|
|
3439
|
+
) }),
|
|
3440
|
+
/* @__PURE__ */ jsx19("defs", { children: /* @__PURE__ */ jsx19("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx19("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
3441
|
+
] });
|
|
3442
|
+
}
|
|
3443
|
+
|
|
3444
|
+
// src/components/UsernameModal/index.tsx
|
|
3985
3445
|
import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
|
|
3986
|
-
import { jsx as jsx20, jsxs as
|
|
3446
|
+
import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3987
3447
|
var ValidItem = ({
|
|
3988
3448
|
success = false,
|
|
3989
3449
|
text
|
|
3990
3450
|
}) => {
|
|
3991
3451
|
const isDownMd = useDownMd();
|
|
3992
|
-
return /* @__PURE__ */
|
|
3993
|
-
success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(
|
|
3452
|
+
return /* @__PURE__ */ jsxs15("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
3453
|
+
success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
3994
3454
|
/* @__PURE__ */ jsx20("span", { children: text })
|
|
3995
3455
|
] });
|
|
3996
3456
|
};
|
|
@@ -4002,10 +3462,10 @@ function UsernameModal({
|
|
|
4002
3462
|
}) {
|
|
4003
3463
|
const { username, refreshOverview } = useUserInfo();
|
|
4004
3464
|
const { isLogin } = useUserInfo();
|
|
4005
|
-
const [val, setVal] =
|
|
4006
|
-
const [error, setError] =
|
|
3465
|
+
const [val, setVal] = useState16(username);
|
|
3466
|
+
const [error, setError] = useState16("");
|
|
4007
3467
|
const isDownMd = useDownMd();
|
|
4008
|
-
|
|
3468
|
+
useEffect14(() => {
|
|
4009
3469
|
if (isOpen) {
|
|
4010
3470
|
setVal(username);
|
|
4011
3471
|
setError("");
|
|
@@ -4018,7 +3478,7 @@ function UsernameModal({
|
|
|
4018
3478
|
return val.length >= 2 && val.length <= 32;
|
|
4019
3479
|
}, [val]);
|
|
4020
3480
|
const isSafe = isValid && isLength;
|
|
4021
|
-
const [isSubmitting, setIsSubmitting] =
|
|
3481
|
+
const [isSubmitting, setIsSubmitting] = useState16(false);
|
|
4022
3482
|
const onSubmit = async () => {
|
|
4023
3483
|
if (isSubmitting) return;
|
|
4024
3484
|
try {
|
|
@@ -4041,7 +3501,7 @@ function UsernameModal({
|
|
|
4041
3501
|
const intl = useIntl8();
|
|
4042
3502
|
return /* @__PURE__ */ jsx20(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
4043
3503
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
4044
|
-
}), children: /* @__PURE__ */
|
|
3504
|
+
}), children: /* @__PURE__ */ jsxs15("div", { className: "matchid-username-box", children: [
|
|
4045
3505
|
/* @__PURE__ */ jsx20(Field, { label: intl.formatMessage({
|
|
4046
3506
|
id: "username"
|
|
4047
3507
|
}), error, children: /* @__PURE__ */ jsx20(
|
|
@@ -4057,7 +3517,7 @@ function UsernameModal({
|
|
|
4057
3517
|
value: val
|
|
4058
3518
|
}
|
|
4059
3519
|
) }),
|
|
4060
|
-
/* @__PURE__ */
|
|
3520
|
+
/* @__PURE__ */ jsxs15("div", { className: "matchid-valid", children: [
|
|
4061
3521
|
/* @__PURE__ */ jsx20(
|
|
4062
3522
|
ValidItem,
|
|
4063
3523
|
{
|
|
@@ -4081,7 +3541,7 @@ function UsernameModal({
|
|
|
4081
3541
|
}
|
|
4082
3542
|
|
|
4083
3543
|
// src/components/SOLModal/index.tsx
|
|
4084
|
-
import React7, { useEffect as
|
|
3544
|
+
import React7, { useEffect as useEffect15, useState as useState17 } from "react";
|
|
4085
3545
|
import { clusterApiUrl } from "@solana/web3.js";
|
|
4086
3546
|
import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
|
|
4087
3547
|
import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
|
|
@@ -4145,7 +3605,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
4145
3605
|
var walletSigningImage = "data:image/png;base64,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";
|
|
4146
3606
|
|
|
4147
3607
|
// src/components/WalletModalContent/index.tsx
|
|
4148
|
-
import { jsx as jsx21, jsxs as
|
|
3608
|
+
import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4149
3609
|
function WalletModalContent({
|
|
4150
3610
|
status,
|
|
4151
3611
|
error,
|
|
@@ -4215,8 +3675,8 @@ function WalletModalContent({
|
|
|
4215
3675
|
statusImage: walletConnectImage
|
|
4216
3676
|
};
|
|
4217
3677
|
}, [visible, connected, status, error, address2]);
|
|
4218
|
-
return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */
|
|
4219
|
-
/* @__PURE__ */
|
|
3678
|
+
return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
|
|
3679
|
+
/* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-content`, children: [
|
|
4220
3680
|
/* @__PURE__ */ jsx21("img", { src: pageData.statusImage }),
|
|
4221
3681
|
/* @__PURE__ */ jsx21("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
4222
3682
|
] }),
|
|
@@ -4243,17 +3703,17 @@ function WalletContent({
|
|
|
4243
3703
|
const { setVisible, visible } = useWalletModal();
|
|
4244
3704
|
const wallet = useWallet2();
|
|
4245
3705
|
const { events, login } = useMatch();
|
|
4246
|
-
const [status, setStatus] =
|
|
3706
|
+
const [status, setStatus] = useState17("");
|
|
4247
3707
|
const statusRef = React7.useRef(status);
|
|
4248
|
-
const [error, setError] =
|
|
4249
|
-
|
|
3708
|
+
const [error, setError] = useState17("");
|
|
3709
|
+
useEffect15(() => {
|
|
4250
3710
|
const init = async () => {
|
|
4251
3711
|
await wallet.disconnect();
|
|
4252
3712
|
setVisible(true);
|
|
4253
3713
|
};
|
|
4254
3714
|
init();
|
|
4255
3715
|
}, []);
|
|
4256
|
-
|
|
3716
|
+
useEffect15(() => {
|
|
4257
3717
|
if (wallet.connected) {
|
|
4258
3718
|
console.log("wallet.connected", wallet.connected);
|
|
4259
3719
|
toLoginInWallet();
|
|
@@ -4389,7 +3849,7 @@ function SOLModal(props) {
|
|
|
4389
3849
|
}
|
|
4390
3850
|
|
|
4391
3851
|
// src/components/TRONModal/index.tsx
|
|
4392
|
-
import React8, { useEffect as
|
|
3852
|
+
import React8, { useEffect as useEffect17, useMemo as useMemo11, useState as useState19 } from "react";
|
|
4393
3853
|
import { useIntl as useIntl10 } from "react-intl";
|
|
4394
3854
|
|
|
4395
3855
|
// src/lib/tron/TronLinkAdapter.ts
|
|
@@ -4423,7 +3883,7 @@ var TronLinkAdapter = class {
|
|
|
4423
3883
|
};
|
|
4424
3884
|
|
|
4425
3885
|
// src/hooks/useTRONWallet.ts
|
|
4426
|
-
import { useEffect as
|
|
3886
|
+
import { useEffect as useEffect16, useState as useState18 } from "react";
|
|
4427
3887
|
|
|
4428
3888
|
// src/lib/tron/BitgetAdapter.ts
|
|
4429
3889
|
var BitgetAdapter = class {
|
|
@@ -4468,9 +3928,9 @@ var OKXAdapter = class {
|
|
|
4468
3928
|
// src/hooks/useTRONWallet.ts
|
|
4469
3929
|
var useTRONWallet = () => {
|
|
4470
3930
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
4471
|
-
const [installedWallets, setInstalledWallets] =
|
|
4472
|
-
const [address2, setAddress] =
|
|
4473
|
-
|
|
3931
|
+
const [installedWallets, setInstalledWallets] = useState18([]);
|
|
3932
|
+
const [address2, setAddress] = useState18(null);
|
|
3933
|
+
useEffect16(() => {
|
|
4474
3934
|
const getInstalled = async () => {
|
|
4475
3935
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
4476
3936
|
wallet: wallet2,
|
|
@@ -4480,11 +3940,11 @@ var useTRONWallet = () => {
|
|
|
4480
3940
|
};
|
|
4481
3941
|
getInstalled();
|
|
4482
3942
|
}, []);
|
|
4483
|
-
const [wallet, chooseWallet] =
|
|
3943
|
+
const [wallet, chooseWallet] = useState18(null);
|
|
4484
3944
|
const onConnect = async () => {
|
|
4485
3945
|
setAddress(await wallet.connect());
|
|
4486
3946
|
};
|
|
4487
|
-
|
|
3947
|
+
useEffect16(() => {
|
|
4488
3948
|
if (!wallet) {
|
|
4489
3949
|
setAddress(null);
|
|
4490
3950
|
}
|
|
@@ -4500,7 +3960,7 @@ var useTRONWallet = () => {
|
|
|
4500
3960
|
};
|
|
4501
3961
|
|
|
4502
3962
|
// src/components/TRONModal/index.tsx
|
|
4503
|
-
import { jsx as jsx23, jsxs as
|
|
3963
|
+
import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4504
3964
|
function TRONConnectModal({
|
|
4505
3965
|
type = "login",
|
|
4506
3966
|
onSuccess,
|
|
@@ -4515,9 +3975,9 @@ function TRONConnectModal({
|
|
|
4515
3975
|
okx: /* @__PURE__ */ jsx23(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
4516
3976
|
};
|
|
4517
3977
|
const { events, login } = useMatch();
|
|
4518
|
-
const [status, setStatus] =
|
|
3978
|
+
const [status, setStatus] = useState19("");
|
|
4519
3979
|
const statusRef = React8.useRef(status);
|
|
4520
|
-
const [error, setError] =
|
|
3980
|
+
const [error, setError] = useState19("");
|
|
4521
3981
|
const connected = useMemo11(() => {
|
|
4522
3982
|
return !!address2;
|
|
4523
3983
|
}, [address2]);
|
|
@@ -4586,7 +4046,7 @@ function TRONConnectModal({
|
|
|
4586
4046
|
statusRef.current = "";
|
|
4587
4047
|
}
|
|
4588
4048
|
};
|
|
4589
|
-
|
|
4049
|
+
useEffect17(() => {
|
|
4590
4050
|
if (wallet) {
|
|
4591
4051
|
console.log("onConnect");
|
|
4592
4052
|
onConnect();
|
|
@@ -4594,12 +4054,12 @@ function TRONConnectModal({
|
|
|
4594
4054
|
setStatus("");
|
|
4595
4055
|
}
|
|
4596
4056
|
}, [wallet]);
|
|
4597
|
-
|
|
4057
|
+
useEffect17(() => {
|
|
4598
4058
|
if (address2) {
|
|
4599
4059
|
toLoginInWallet();
|
|
4600
4060
|
}
|
|
4601
4061
|
}, [address2]);
|
|
4602
|
-
|
|
4062
|
+
useEffect17(() => {
|
|
4603
4063
|
if (!props.isOpen) {
|
|
4604
4064
|
disconnect();
|
|
4605
4065
|
}
|
|
@@ -4621,7 +4081,7 @@ function TRONConnectModal({
|
|
|
4621
4081
|
setVisible: () => {
|
|
4622
4082
|
}
|
|
4623
4083
|
}
|
|
4624
|
-
) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */
|
|
4084
|
+
) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
|
|
4625
4085
|
installedWallets.map((wallet2) => {
|
|
4626
4086
|
return /* @__PURE__ */ jsx23(
|
|
4627
4087
|
RecommendItem,
|
|
@@ -4657,7 +4117,7 @@ function TRONModal(props) {
|
|
|
4657
4117
|
}
|
|
4658
4118
|
|
|
4659
4119
|
// src/components/TONModal/index.tsx
|
|
4660
|
-
import React9, { useEffect as
|
|
4120
|
+
import React9, { useEffect as useEffect18, useState as useState20 } from "react";
|
|
4661
4121
|
import { useIntl as useIntl11 } from "react-intl";
|
|
4662
4122
|
import {
|
|
4663
4123
|
TonConnectUIProvider,
|
|
@@ -4672,15 +4132,15 @@ function WalletContent2({
|
|
|
4672
4132
|
type
|
|
4673
4133
|
}) {
|
|
4674
4134
|
const { events, login } = useMatch();
|
|
4675
|
-
const [connected, setConnected] =
|
|
4135
|
+
const [connected, setConnected] = useState20(false);
|
|
4676
4136
|
const wallet = useTonWallet();
|
|
4677
4137
|
const userFriendlyAddress = useTonAddress();
|
|
4678
4138
|
const [tonConnectUI] = useTonConnectUI();
|
|
4679
4139
|
const { state, open, close } = useTonConnectModal();
|
|
4680
|
-
const [status, setStatus] =
|
|
4140
|
+
const [status, setStatus] = useState20("");
|
|
4681
4141
|
const statusRef = React9.useRef(status);
|
|
4682
|
-
const [error, setError] =
|
|
4683
|
-
|
|
4142
|
+
const [error, setError] = useState20("");
|
|
4143
|
+
useEffect18(() => {
|
|
4684
4144
|
const init = async () => {
|
|
4685
4145
|
if (wallet) {
|
|
4686
4146
|
await tonConnectUI.disconnect();
|
|
@@ -4753,7 +4213,7 @@ function WalletContent2({
|
|
|
4753
4213
|
}
|
|
4754
4214
|
});
|
|
4755
4215
|
}, []);
|
|
4756
|
-
|
|
4216
|
+
useEffect18(() => {
|
|
4757
4217
|
if (wallet) {
|
|
4758
4218
|
setConnected(true);
|
|
4759
4219
|
console.log("Wallet connected:", wallet);
|
|
@@ -4764,7 +4224,7 @@ function WalletContent2({
|
|
|
4764
4224
|
setStatus("");
|
|
4765
4225
|
}
|
|
4766
4226
|
}, [wallet]);
|
|
4767
|
-
|
|
4227
|
+
useEffect18(() => {
|
|
4768
4228
|
console.log({
|
|
4769
4229
|
state,
|
|
4770
4230
|
wallet
|
|
@@ -4844,7 +4304,7 @@ function TONModal(props) {
|
|
|
4844
4304
|
}
|
|
4845
4305
|
|
|
4846
4306
|
// src/components/BTCModal/index.tsx
|
|
4847
|
-
import React10, { useEffect as
|
|
4307
|
+
import React10, { useEffect as useEffect20, useMemo as useMemo12, useState as useState22 } from "react";
|
|
4848
4308
|
import { useIntl as useIntl12 } from "react-intl";
|
|
4849
4309
|
|
|
4850
4310
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -4999,12 +4459,12 @@ var LeatherAdapter = class {
|
|
|
4999
4459
|
};
|
|
5000
4460
|
|
|
5001
4461
|
// src/hooks/useBTCWallet.ts
|
|
5002
|
-
import { useEffect as
|
|
4462
|
+
import { useEffect as useEffect19, useState as useState21 } from "react";
|
|
5003
4463
|
var useBTCWallet = () => {
|
|
5004
4464
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
5005
|
-
const [installedWallets, setInstalledWallets] =
|
|
5006
|
-
const [address2, setAddress] =
|
|
5007
|
-
|
|
4465
|
+
const [installedWallets, setInstalledWallets] = useState21([]);
|
|
4466
|
+
const [address2, setAddress] = useState21(null);
|
|
4467
|
+
useEffect19(() => {
|
|
5008
4468
|
const getInstalled = async () => {
|
|
5009
4469
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
5010
4470
|
wallet: wallet2,
|
|
@@ -5014,11 +4474,11 @@ var useBTCWallet = () => {
|
|
|
5014
4474
|
};
|
|
5015
4475
|
getInstalled();
|
|
5016
4476
|
}, []);
|
|
5017
|
-
const [wallet, chooseWallet] =
|
|
4477
|
+
const [wallet, chooseWallet] = useState21(null);
|
|
5018
4478
|
const onConnect = async () => {
|
|
5019
4479
|
setAddress(await wallet.connect());
|
|
5020
4480
|
};
|
|
5021
|
-
|
|
4481
|
+
useEffect19(() => {
|
|
5022
4482
|
if (!wallet) {
|
|
5023
4483
|
setAddress(null);
|
|
5024
4484
|
}
|
|
@@ -5034,7 +4494,7 @@ var useBTCWallet = () => {
|
|
|
5034
4494
|
};
|
|
5035
4495
|
|
|
5036
4496
|
// src/components/BTCModal/index.tsx
|
|
5037
|
-
import { jsx as jsx25, jsxs as
|
|
4497
|
+
import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5038
4498
|
function BTCConnectModal({
|
|
5039
4499
|
type = "login",
|
|
5040
4500
|
onSuccess,
|
|
@@ -5049,9 +4509,9 @@ function BTCConnectModal({
|
|
|
5049
4509
|
xverse: /* @__PURE__ */ jsx25(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
5050
4510
|
};
|
|
5051
4511
|
const { events, login } = useMatch();
|
|
5052
|
-
const [status, setStatus] =
|
|
4512
|
+
const [status, setStatus] = useState22("");
|
|
5053
4513
|
const statusRef = React10.useRef(status);
|
|
5054
|
-
const [error, setError] =
|
|
4514
|
+
const [error, setError] = useState22("");
|
|
5055
4515
|
const connected = useMemo12(() => {
|
|
5056
4516
|
return !!address2;
|
|
5057
4517
|
}, [address2]);
|
|
@@ -5116,7 +4576,7 @@ function BTCConnectModal({
|
|
|
5116
4576
|
statusRef.current = "";
|
|
5117
4577
|
}
|
|
5118
4578
|
};
|
|
5119
|
-
|
|
4579
|
+
useEffect20(() => {
|
|
5120
4580
|
if (wallet) {
|
|
5121
4581
|
console.log("onConnect");
|
|
5122
4582
|
try {
|
|
@@ -5129,12 +4589,12 @@ function BTCConnectModal({
|
|
|
5129
4589
|
setStatus("");
|
|
5130
4590
|
}
|
|
5131
4591
|
}, [wallet]);
|
|
5132
|
-
|
|
4592
|
+
useEffect20(() => {
|
|
5133
4593
|
if (address2) {
|
|
5134
4594
|
toLoginInWallet();
|
|
5135
4595
|
}
|
|
5136
4596
|
}, [address2]);
|
|
5137
|
-
|
|
4597
|
+
useEffect20(() => {
|
|
5138
4598
|
if (!props.isOpen) {
|
|
5139
4599
|
disconnect();
|
|
5140
4600
|
}
|
|
@@ -5163,7 +4623,7 @@ function BTCConnectModal({
|
|
|
5163
4623
|
setVisible: () => {
|
|
5164
4624
|
}
|
|
5165
4625
|
}
|
|
5166
|
-
) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */
|
|
4626
|
+
) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
|
|
5167
4627
|
installedWallets.map((wallet2) => {
|
|
5168
4628
|
return /* @__PURE__ */ jsx25(
|
|
5169
4629
|
RecommendItem,
|
|
@@ -5242,409 +4702,6 @@ function WalletModal(props) {
|
|
|
5242
4702
|
return props.isOpen && /* @__PURE__ */ jsx26(WalletConnectModal, { ...props });
|
|
5243
4703
|
}
|
|
5244
4704
|
|
|
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
4705
|
export {
|
|
5649
4706
|
isSuccess,
|
|
5650
4707
|
getBindListApi,
|
|
@@ -5658,9 +4715,9 @@ export {
|
|
|
5658
4715
|
mintPassportNftApi,
|
|
5659
4716
|
useUserInfo,
|
|
5660
4717
|
useMatchEvents,
|
|
5661
|
-
useModal,
|
|
5662
4718
|
useWallet,
|
|
5663
4719
|
useCopyClipboard,
|
|
4720
|
+
useModal,
|
|
5664
4721
|
useToast,
|
|
5665
4722
|
wallet_exports,
|
|
5666
4723
|
useMatchChain,
|
|
@@ -5675,19 +4732,12 @@ export {
|
|
|
5675
4732
|
TONModal,
|
|
5676
4733
|
BTCModal,
|
|
5677
4734
|
WalletModal,
|
|
5678
|
-
WalletAsset,
|
|
5679
|
-
TokenSend,
|
|
5680
|
-
TokenDetail,
|
|
5681
|
-
TokenSendList,
|
|
5682
4735
|
components_exports,
|
|
5683
4736
|
useMatchWallet,
|
|
5684
4737
|
useMatchWalletRecords,
|
|
5685
|
-
useMatchWalletAssets,
|
|
5686
|
-
useMatchWalletAssetList,
|
|
5687
4738
|
useReceipt,
|
|
5688
|
-
useTransaction,
|
|
5689
4739
|
hooks_exports,
|
|
5690
4740
|
MatchProvider,
|
|
5691
4741
|
useMatch
|
|
5692
4742
|
};
|
|
5693
|
-
//# sourceMappingURL=chunk-
|
|
4743
|
+
//# sourceMappingURL=chunk-V3WGYFWQ.mjs.map
|