@matchain/matchid-sdk-react 0.1.48-alpha.9 → 0.1.48

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.
Files changed (71) hide show
  1. package/dist/assets/icon/index.d.mts +8 -2
  2. package/dist/assets/icon/index.d.ts +8 -2
  3. package/dist/assets/icon/index.js +54 -2
  4. package/dist/assets/icon/index.js.map +1 -1
  5. package/dist/assets/icon/index.mjs +5 -1
  6. package/dist/{chunk-T72FT5NB.mjs → chunk-4I5WVXIN.mjs} +2 -2
  7. package/dist/chunk-5JHHHLG4.mjs +136 -0
  8. package/dist/chunk-5JHHHLG4.mjs.map +1 -0
  9. package/dist/{chunk-USKUYOYJ.mjs → chunk-FB5MHLWX.mjs} +75 -42
  10. package/dist/chunk-FB5MHLWX.mjs.map +1 -0
  11. package/dist/{chunk-7UTR37EJ.mjs → chunk-LHNKZISB.mjs} +54 -4
  12. package/dist/chunk-LHNKZISB.mjs.map +1 -0
  13. package/dist/{chunk-CI63DTB6.mjs → chunk-YSASIFLY.mjs} +2018 -702
  14. package/dist/chunk-YSASIFLY.mjs.map +1 -0
  15. package/dist/components/index.d.mts +4 -3
  16. package/dist/components/index.d.ts +4 -3
  17. package/dist/components/index.js +2265 -536
  18. package/dist/components/index.js.map +1 -1
  19. package/dist/components/index.mjs +14 -3
  20. package/dist/hooks/api/index.d.mts +2 -2
  21. package/dist/hooks/api/index.d.ts +2 -2
  22. package/dist/hooks/api/index.js +363 -204
  23. package/dist/hooks/api/index.js.map +1 -1
  24. package/dist/hooks/api/index.mjs +5 -4
  25. package/dist/hooks/index.d.mts +3 -2
  26. package/dist/hooks/index.d.ts +3 -2
  27. package/dist/hooks/index.js +1532 -320
  28. package/dist/hooks/index.js.map +1 -1
  29. package/dist/hooks/index.mjs +8 -3
  30. package/dist/index-BMfaixEx.d.mts +66 -0
  31. package/dist/{index-Bbn2Stvu.d.ts → index-BMsj8hJv.d.ts} +4 -3
  32. package/dist/{index-DcxdJ0m2.d.ts → index-BcEreCxd.d.ts} +1 -1
  33. package/dist/index-Bpmrd7mh.d.ts +66 -0
  34. package/dist/{index-C_S7k6z2.d.mts → index-Bvc8cjpN.d.ts} +34 -4
  35. package/dist/{index-Dzvj-uGt.d.mts → index-C9F6f2iz.d.mts} +4 -3
  36. package/dist/{index-D-uNr-JV.d.ts → index-C9qYyRgt.d.mts} +34 -4
  37. package/dist/{index-CB4j_ONH.d.mts → index-Cou96DpL.d.mts} +1 -1
  38. package/dist/{index-B7A0lN0C.d.mts → index-Cy3K-Yao.d.ts} +21 -6
  39. package/dist/{index-dhPbMbvL.d.ts → index-D4ju2J_e.d.mts} +21 -6
  40. package/dist/{index-DDV4F9ka.d.mts → index-DUHkH5t-.d.mts} +114 -65
  41. package/dist/{index-Bz53bbI_.d.ts → index-DcQm2dkr.d.ts} +114 -65
  42. package/dist/index.css +613 -10
  43. package/dist/index.d.mts +8 -8
  44. package/dist/index.d.ts +8 -8
  45. package/dist/index.js +2593 -1104
  46. package/dist/index.js.map +1 -1
  47. package/dist/index.mjs +8 -7
  48. package/dist/types/index.d.mts +2 -1
  49. package/dist/types/index.d.ts +2 -1
  50. package/dist/{types-B4BYNw8B.d.mts → types-DzVVzMYU.d.mts} +62 -35
  51. package/dist/{types-B4BYNw8B.d.ts → types-DzVVzMYU.d.ts} +62 -35
  52. package/dist/ui/index.d.mts +4 -3
  53. package/dist/ui/index.d.ts +4 -3
  54. package/dist/ui/index.js +134 -95
  55. package/dist/ui/index.js.map +1 -1
  56. package/dist/ui/index.mjs +2 -2
  57. package/dist/utils/index.d.mts +26 -0
  58. package/dist/utils/index.d.ts +26 -0
  59. package/dist/utils/index.js +181 -0
  60. package/dist/utils/index.js.map +1 -0
  61. package/dist/utils/index.mjs +30 -0
  62. package/dist/utils/index.mjs.map +1 -0
  63. package/example/src/pages/Wallet/components/MatchWallet.tsx +44 -9
  64. package/example/src/pages/Wallet/index.tsx +2 -1
  65. package/package.json +7 -1
  66. package/dist/chunk-7UTR37EJ.mjs.map +0 -1
  67. package/dist/chunk-CI63DTB6.mjs.map +0 -1
  68. package/dist/chunk-USKUYOYJ.mjs.map +0 -1
  69. package/dist/index-CKyWWkzU.d.mts +0 -60
  70. package/dist/index-DV_mRu4y.d.ts +0 -60
  71. /package/dist/{chunk-T72FT5NB.mjs.map → chunk-4I5WVXIN.mjs.map} +0 -0
@@ -1,4 +1,5 @@
1
1
  import {
2
+ AlphaAvatar,
2
3
  Button,
3
4
  Field,
4
5
  HashPanel_default,
@@ -9,13 +10,28 @@ import {
9
10
  Overlay,
10
11
  Popover,
11
12
  Radio,
13
+ fail_default,
12
14
  matchlog_default,
15
+ success_default,
13
16
  useDownMd,
17
+ useHash,
14
18
  useLayout_exports
15
- } from "./chunk-USKUYOYJ.mjs";
19
+ } from "./chunk-FB5MHLWX.mjs";
20
+ import {
21
+ NumberFormatter,
22
+ encodeBase64,
23
+ formatAddress,
24
+ formatDate,
25
+ getAppClientId,
26
+ getVersion,
27
+ isValidEmail,
28
+ isValidUsername,
29
+ truncateAddress
30
+ } from "./chunk-5JHHHLG4.mjs";
16
31
  import {
17
32
  ArrowDownIcon,
18
33
  ArrowRightIcon,
34
+ ArrowSendIcon,
19
35
  BTCDarkIcon,
20
36
  BTCLightIcon,
21
37
  BitgetIcon,
@@ -33,8 +49,10 @@ import {
33
49
  GithubIcon,
34
50
  GoogleIcon,
35
51
  InfoLineIcon,
52
+ InfoRoundIcon,
36
53
  LeatherIcon,
37
54
  LinkedinIcon,
55
+ LoadingIcon_default,
38
56
  LoginIcon_default,
39
57
  OKXIcon,
40
58
  SOLDarkIcon,
@@ -44,6 +62,7 @@ import {
44
62
  TelegramIcon,
45
63
  TonLightIcon,
46
64
  TonLightIcon2,
65
+ TransferIcon,
47
66
  TronLinkIcon,
48
67
  UnLoginIcon_default,
49
68
  UnisatIcon,
@@ -51,7 +70,7 @@ import {
51
70
  XIcon,
52
71
  XverseIcon,
53
72
  YoutubeIcon
54
- } from "./chunk-7UTR37EJ.mjs";
73
+ } from "./chunk-LHNKZISB.mjs";
55
74
  import {
56
75
  __export
57
76
  } from "./chunk-J5LGTIGS.mjs";
@@ -75,42 +94,20 @@ __export(components_exports, {
75
94
  SOLModal: () => SOLModal,
76
95
  TONModal: () => TONModal,
77
96
  TRONModal: () => TRONModal,
97
+ TokenDetail: () => TokenDetail,
98
+ TokenSend: () => TokenSend,
99
+ TokenSendList: () => TokenSendList,
100
+ TransactionList: () => TransactionList,
78
101
  UsernameModal: () => UsernameModal,
102
+ WalletAsset: () => WalletAsset,
79
103
  WalletModal: () => WalletModal
80
104
  });
81
105
 
82
106
  // src/components/EmailModal/index.tsx
83
- import { useEffect as useEffect14, useState as useState13 } from "react";
107
+ import { useEffect as useEffect15, useState as useState14 } from "react";
84
108
 
85
109
  // src/components/EmailModal/StepEmail.tsx
86
110
  import { useEffect, useMemo, useState } from "react";
87
-
88
- // src/utils/index.ts
89
- var getVersion = () => {
90
- return "0.0.2";
91
- };
92
- function encodeBase64(input) {
93
- return btoa(unescape(encodeURIComponent(input)));
94
- }
95
- var isValidEmail = (email) => {
96
- return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
97
- };
98
- var isValidUsername = (username) => {
99
- return /^[a-zA-Z0-9_-]+$/.test(username);
100
- };
101
- function truncateAddress(address2) {
102
- if (address2.length <= 6) {
103
- return address2;
104
- }
105
- const start = address2.slice(0, 4);
106
- const end = address2.slice(-2);
107
- return `${start}...${end}`;
108
- }
109
- function getAppClientId() {
110
- return "react-sdk-" + getVersion();
111
- }
112
-
113
- // src/components/EmailModal/StepEmail.tsx
114
111
  import { FormattedMessage, useIntl } from "react-intl";
115
112
  import { jsx, jsxs } from "react/jsx-runtime";
116
113
  function StepEmail(props) {
@@ -371,11 +368,11 @@ var unBindApi = ({ type }) => {
371
368
  data: { type }
372
369
  });
373
370
  };
374
- var unBindWalletApi = ({ address: address2 }) => {
371
+ var unBindWalletApi = ({ address }) => {
375
372
  return request_default({
376
373
  url: `/api/v1/wallet/unbind`,
377
374
  method: "POST",
378
- data: { address: address2 }
375
+ data: { address }
379
376
  });
380
377
  };
381
378
  var verifyPohApi = ({
@@ -433,7 +430,7 @@ var getWalletNonceApi = (data) => {
433
430
  };
434
431
  var loginByWalletApi = ({
435
432
  type,
436
- address: address2,
433
+ address,
437
434
  signature,
438
435
  message,
439
436
  connector_type,
@@ -442,7 +439,7 @@ var loginByWalletApi = ({
442
439
  return request_default({
443
440
  url: `/api/v1/login/wallet`,
444
441
  method: "POST",
445
- data: { type, address: address2, signature, message, connector_type, wallet_client_type }
442
+ data: { type, address, signature, message, connector_type, wallet_client_type }
446
443
  });
447
444
  };
448
445
  var getWalletInitApi = (data) => {
@@ -454,7 +451,7 @@ var getWalletInitApi = (data) => {
454
451
  };
455
452
  var toBindWalletApi = ({
456
453
  type,
457
- address: address2,
454
+ address,
458
455
  signature,
459
456
  message,
460
457
  connector_type,
@@ -463,7 +460,7 @@ var toBindWalletApi = ({
463
460
  return request_default({
464
461
  url: `/api/v1/wallet/bind`,
465
462
  method: "POST",
466
- data: { type, address: address2, signature, message, connector_type, wallet_client_type }
463
+ data: { type, address, signature, message, connector_type, wallet_client_type }
467
464
  });
468
465
  };
469
466
  var getAppConfigApi = () => {
@@ -566,11 +563,11 @@ var persistedState = persist(
566
563
  setToken: (token) => set({ token }),
567
564
  setAppid: (appid) => set({ appid }),
568
565
  setMid: (mid) => set({ mid }),
569
- logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
566
+ logout: () => set({ token: "", did: "", mid: "", address: "", overview: null, assets: [] }),
570
567
  setTheme: (theme) => set({ theme }),
571
568
  setEndpoints: (endpoints) => set({ endpoints }),
572
569
  address: "",
573
- setAddress: (address2) => set({ address: address2 }),
570
+ setAddress: (address) => set({ address }),
574
571
  locale: "en",
575
572
  setLocale: (locale) => set({ locale }),
576
573
  wallet: {
@@ -578,7 +575,9 @@ var persistedState = persist(
578
575
  },
579
576
  setWallet: (wallet) => set({ wallet }),
580
577
  chainId: 698,
581
- setChainId: (chainId) => set({ chainId })
578
+ setChainId: (chainId) => set({ chainId }),
579
+ assets: [],
580
+ setAssets: (assets) => set({ assets })
582
581
  }),
583
582
  { name: "match-local" }
584
583
  );
@@ -587,7 +586,7 @@ var localStore = useLocalStore;
587
586
  var useLocalStore_default = useLocalStore;
588
587
 
589
588
  // src/hooks/useUserInfo.tsx
590
- import { useMemo as useMemo6 } from "react";
589
+ import { useMemo as useMemo7 } from "react";
591
590
 
592
591
  // src/MatchContext.tsx
593
592
  import { createContext as createContext3, useContext as useContext3 } from "react";
@@ -600,6 +599,8 @@ __export(hooks_exports, {
600
599
  useMatchChain: () => useMatchChain,
601
600
  useMatchEvents: () => useMatchEvents,
602
601
  useMatchWallet: () => useMatchWallet,
602
+ useMatchWalletAssetList: () => useMatchWalletAssetList,
603
+ useMatchWalletAssets: () => useMatchWalletAssets,
603
604
  useMatchWalletRecords: () => useMatchWalletRecords,
604
605
  useModal: () => useModal,
605
606
  useReceipt: () => useReceipt,
@@ -677,108 +678,112 @@ import { createWalletClient } from "viem";
677
678
  import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
678
679
  import { encodeDeployData } from "viem";
679
680
 
680
- // src/store/useModalStore.ts
681
- import { create as create3 } from "zustand";
681
+ // src/context/ModalContext.tsx
682
+ import { useState as useState2, useCallback, createContext, useContext } from "react";
683
+ import { createPortal } from "react-dom";
684
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
685
+ var ModalContext = createContext(null);
686
+ function ModalProvider({ children }) {
687
+ const [modalState, setModalState] = useState2({
688
+ modals: [],
689
+ highestZIndex: 100
690
+ });
691
+ const getNextIndex = useCallback(() => {
692
+ return Math.max(...modalState.modals.map((modal) => modal.index), 0) + 1 || 100;
693
+ }, [modalState]);
694
+ const closeModal = useCallback((index) => {
695
+ setModalState((prevState) => ({
696
+ modals: prevState.modals.filter((modal) => modal.index !== index),
697
+ highestZIndex: prevState.highestZIndex
698
+ }));
699
+ }, []);
700
+ const show = useCallback((content, index) => {
701
+ setModalState((prevState) => {
702
+ const modalIndex = index !== void 0 ? index : getNextIndex();
703
+ const newZIndex = prevState.highestZIndex + 1;
704
+ return {
705
+ modals: [...prevState.modals, {
706
+ visible: true,
707
+ index: modalIndex,
708
+ zIndex: newZIndex,
709
+ content: content({ close: () => closeModal(modalIndex), zIndex: newZIndex })
710
+ }],
711
+ highestZIndex: newZIndex
712
+ };
713
+ });
714
+ }, [getNextIndex, closeModal]);
715
+ const open = useCallback((props) => {
716
+ setModalState((prevState) => {
717
+ const modalIndex = props.index !== void 0 ? props.index : getNextIndex();
718
+ const newZIndex = prevState.highestZIndex + 1;
719
+ return {
720
+ modals: [...prevState.modals, {
721
+ visible: true,
722
+ index: modalIndex,
723
+ zIndex: newZIndex,
724
+ content: /* @__PURE__ */ jsx2(ModalDrawer, { showClose: true, isOpen: true, onClose: () => closeModal(modalIndex), title: props.title, zIndex: newZIndex, onBack: props.onBack, children: /* @__PURE__ */ jsx2(props.content, { close: () => closeModal(modalIndex), zIndex: newZIndex }) })
725
+ }],
726
+ highestZIndex: newZIndex
727
+ };
728
+ });
729
+ }, [getNextIndex, closeModal]);
730
+ const modalElements = modalState.modals.sort((a, b) => b.zIndex - a.zIndex).map(
731
+ (modal) => modal.visible ? createPortal(
732
+ modal.content,
733
+ document.body
734
+ ) : null
735
+ );
736
+ return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
737
+ children,
738
+ modalElements
739
+ ] });
740
+ }
741
+ function useModal() {
742
+ const context = useContext(ModalContext);
743
+ if (!context) {
744
+ throw new Error("useModal must be used within a ModalProvider");
745
+ }
746
+ return context;
747
+ }
682
748
 
683
- // src/hooks/useConfig.tsx
684
- import { jsx as jsx2 } from "react/jsx-runtime";
685
- var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
686
- var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
687
- function useWalletConfig() {
688
- const isDownMd = useDownMd();
689
- const walletMap = {
690
- evm: {
691
- icon: /* @__PURE__ */ jsx2(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
692
- activeIcon: /* @__PURE__ */ jsx2(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
693
- name: "EVM",
694
- method: "evm"
695
- },
696
- sol: {
697
- icon: /* @__PURE__ */ jsx2(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
698
- activeIcon: /* @__PURE__ */ jsx2(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
699
- name: "SOL",
700
- method: "sol"
701
- },
702
- btc: {
703
- icon: /* @__PURE__ */ jsx2(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
704
- activeIcon: /* @__PURE__ */ jsx2(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
705
- name: "BTC",
706
- method: "btc"
707
- },
708
- tron: {
709
- icon: /* @__PURE__ */ jsx2(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
710
- activeIcon: /* @__PURE__ */ jsx2(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
711
- name: "TRON",
712
- method: "tron"
749
+ // src/store/useTransactionStore.ts
750
+ import { create as create3 } from "zustand";
751
+ import { devtools as devtools2, persist as persist2 } from "zustand/middleware";
752
+ var persistedState2 = persist2(
753
+ (set, get) => ({
754
+ transactions: {},
755
+ addTransaction: (data) => {
756
+ set((state) => {
757
+ const updatedTransactions = {
758
+ ...state.transactions,
759
+ [`${data.chainId}-${data.address}`]: [data.info, ...state.transactions[`${data.chainId}-${data.address}`] || []]
760
+ };
761
+ return { transactions: updatedTransactions };
762
+ });
713
763
  },
714
- ton: {
715
- icon: /* @__PURE__ */ jsx2(TonLightIcon, { size: isDownMd ? 36 : 40 }),
716
- activeIcon: /* @__PURE__ */ jsx2(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
717
- name: "TON",
718
- method: "ton"
764
+ removeTransaction: (data) => {
765
+ set((state) => {
766
+ const updatedTransactions = {
767
+ ...state.transactions,
768
+ [`${data.chainId}-${data.address}`]: (state.transactions[`${data.chainId}-${data.address}`] || []).filter((tx) => tx.hash !== data.hash)
769
+ };
770
+ return { transactions: updatedTransactions };
771
+ });
719
772
  }
720
- };
721
- return {
722
- walletMap
723
- };
724
- }
725
-
726
- // src/store/useModalStore.ts
727
- var useSOLModalStore = create3((set) => ({
728
- isOpen: false,
729
- type: "",
730
- open: (type) => set({ isOpen: true, type }),
731
- close: () => set({ isOpen: false })
732
- }));
733
- var useTRONModalStore = create3((set) => ({
734
- isOpen: false,
735
- type: "",
736
- open: (type) => set({ isOpen: true, type }),
737
- close: () => set({ isOpen: false })
738
- }));
739
- var useTONModalStore = create3((set) => ({
740
- isOpen: false,
741
- type: "",
742
- open: (type) => set({ isOpen: true, type }),
743
- close: () => set({ isOpen: false })
744
- }));
745
- var useBTCModalStore = create3((set) => ({
746
- isOpen: false,
747
- type: "",
748
- open: (type) => set({ isOpen: true, type }),
749
- close: () => set({ isOpen: false })
750
- }));
751
- var useCEXBindModalStore = create3((set) => ({
752
- type: "",
753
- isOpen: false,
754
- open: (type) => set({ isOpen: true, type }),
755
- close: () => set({ isOpen: false })
756
- }));
757
- var useHashPanelStore = create3((set) => ({
758
- isOpen: false,
759
- hash: null,
760
- chain: null,
761
- open: (params) => set({
762
- isOpen: true,
763
- hash: params?.hash || null,
764
- chain: params?.chain || null
765
773
  }),
766
- close: () => set({ isOpen: false })
767
- }));
768
- var useWalletModalStore = create3((set) => ({
769
- isOpen: false,
770
- type: "",
771
- methods: [],
772
- open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
773
- close: () => set({ isOpen: false })
774
- }));
774
+ { name: "match-transactions-local" }
775
+ );
776
+ var useTransactionStore = create3(devtools2(persistedState2));
777
+ var useTransactionStore_default = useTransactionStore;
775
778
 
776
779
  // src/hooks/useWallet.tsx
780
+ import { jsx as jsx3 } from "react/jsx-runtime";
777
781
  var AppClientId = "react-sdk-" + getVersion();
778
782
  function useWallet() {
779
- const { address: address2, wallet: walletConfig } = useLocalStore_default();
783
+ const { address, wallet: walletConfig } = useLocalStore_default();
780
784
  const { walletReady } = useStore_default();
781
- const { open: openHashPanel } = useHashPanelStore();
785
+ const modal = useModal();
786
+ const { addTransaction } = useTransactionStore_default();
782
787
  const isRecovered = async () => {
783
788
  const res = await window.matchProvider.waitUntilWalletMessage({
784
789
  method: "isRecovered"
@@ -824,39 +829,44 @@ function useWallet() {
824
829
  }
825
830
  };
826
831
  const evmAccount = useMemo2(() => {
827
- return address2 ? toAccount({
828
- address: address2,
829
- async signMessage({ message }) {
830
- return await signMessage2({
831
- message,
832
- chainType: "ethereum" /* Ethereum */
833
- });
834
- },
835
- async signTransaction(transaction, options) {
836
- const { account, chain, ...restTransaction } = transaction;
837
- console.log("qwe-sign-transaction", restTransaction, options);
838
- return await signTransaction({
839
- transaction: {
840
- ...restTransaction
841
- },
842
- chainType: "ethereum" /* Ethereum */,
843
- chain: {
844
- id: chain?.id || restTransaction.chainId,
845
- name: chain?.name,
846
- nativeCurrency: {
847
- name: chain?.nativeCurrency?.name || "ETH",
848
- symbol: chain?.nativeCurrency?.symbol || "ETH",
849
- decimals: chain?.nativeCurrency?.decimals || 18
832
+ try {
833
+ return address ? toAccount({
834
+ address,
835
+ async signMessage({ message }) {
836
+ return await signMessage2({
837
+ message,
838
+ chainType: "ethereum" /* Ethereum */
839
+ });
840
+ },
841
+ async signTransaction(transaction, options) {
842
+ const { account, chain, ...restTransaction } = transaction;
843
+ console.log("qwe-sign-transaction", restTransaction, options);
844
+ return await signTransaction({
845
+ transaction: {
846
+ ...restTransaction
850
847
  },
851
- rpcUrls: chain?.rpcUrls
852
- }
853
- });
854
- },
855
- async signTypedData(typedData) {
856
- return "0x";
857
- }
858
- }) : void 0;
859
- }, [address2]);
848
+ chainType: "ethereum" /* Ethereum */,
849
+ chain: {
850
+ id: chain?.id || restTransaction.chainId,
851
+ name: chain?.name,
852
+ nativeCurrency: {
853
+ name: chain?.nativeCurrency?.name || "ETH",
854
+ symbol: chain?.nativeCurrency?.symbol || "ETH",
855
+ decimals: chain?.nativeCurrency?.decimals || 18
856
+ },
857
+ rpcUrls: chain?.rpcUrls
858
+ }
859
+ });
860
+ },
861
+ async signTypedData(typedData) {
862
+ return "0x";
863
+ }
864
+ }) : void 0;
865
+ } catch (error) {
866
+ console.error(`qwe-evm-account-error ${address}`, error);
867
+ return void 0;
868
+ }
869
+ }, [address]);
860
870
  useEffect3(() => {
861
871
  matchlog_default.log("qwe-evmAccount", evmAccount);
862
872
  }, [evmAccount]);
@@ -922,13 +932,25 @@ function useWallet() {
922
932
  prepareTransactionRequest
923
933
  }
924
934
  });
925
- openHashPanel();
926
935
  const txHash = await obj.sendRawTransaction({
927
936
  serializedTransaction
928
937
  });
929
- openHashPanel({
938
+ addTransaction({
939
+ chainId,
930
940
  hash: txHash,
931
- chain: _chain
941
+ info: {
942
+ from: evmAccount.address,
943
+ to: restTransaction.to,
944
+ value: (restTransaction.value || 0).toString(),
945
+ input: restTransaction.data,
946
+ timestamp: Math.floor(Date.now() / 1e3).toString(),
947
+ hash: txHash,
948
+ source: "local"
949
+ },
950
+ address: evmAccount.address
951
+ });
952
+ modal.show((props) => {
953
+ return /* @__PURE__ */ jsx3(HashPanel_default, { isOpen: true, onClose: props.close, zIndex: props.zIndex, hash: txHash, chain: _chain });
932
954
  });
933
955
  clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
934
956
  delete window.matchProvider.transactionMessageIntervalMap[transactionId];
@@ -949,7 +971,7 @@ function useWallet() {
949
971
  });
950
972
  };
951
973
  const writeContract = async (parameters2) => {
952
- const { abi, address: address3, args, dataSuffix, functionName, ...request3 } = parameters2;
974
+ const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
953
975
  const data = encodeFunctionData({
954
976
  abi,
955
977
  args,
@@ -957,7 +979,7 @@ function useWallet() {
957
979
  });
958
980
  return await sendTransaction({
959
981
  data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
960
- to: address3,
982
+ to: address2,
961
983
  ...request3
962
984
  });
963
985
  };
@@ -971,7 +993,7 @@ function useWallet() {
971
993
  return {
972
994
  walletReady,
973
995
  evmAccount,
974
- address: address2,
996
+ address,
975
997
  signMessage: signMessage2,
976
998
  signTransaction,
977
999
  isRecovered,
@@ -981,10 +1003,10 @@ function useWallet() {
981
1003
 
982
1004
  // src/hooks/useCopyClipboard.ts
983
1005
  import copy from "copy-to-clipboard";
984
- import { useCallback, useEffect as useEffect4, useState as useState3 } from "react";
1006
+ import { useCallback as useCallback2, useEffect as useEffect4, useState as useState4 } from "react";
985
1007
  function useCopyClipboard(timeout = 500) {
986
- const [isCopied, setIsCopied] = useState3(false);
987
- const staticCopy = useCallback((text) => {
1008
+ const [isCopied, setIsCopied] = useState4(false);
1009
+ const staticCopy = useCallback2((text) => {
988
1010
  const didCopy = copy(text);
989
1011
  setIsCopied(didCopy);
990
1012
  }, []);
@@ -1002,48 +1024,6 @@ function useCopyClipboard(timeout = 500) {
1002
1024
  return [isCopied, staticCopy];
1003
1025
  }
1004
1026
 
1005
- // src/context/ModalContext.tsx
1006
- import { useState as useState4, useCallback as useCallback2, createContext, useContext } from "react";
1007
- import { createPortal } from "react-dom";
1008
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1009
- var ModalContext = createContext(null);
1010
- function ModalProvider({ children }) {
1011
- const [showModalState, setShowModalState] = useState4({
1012
- visible: false,
1013
- content: null
1014
- });
1015
- const closeShowModal = useCallback2(() => {
1016
- setShowModalState({ visible: false, content: null });
1017
- }, []);
1018
- const show = useCallback2((content) => {
1019
- setShowModalState({
1020
- visible: true,
1021
- content: content({ close: closeShowModal })
1022
- });
1023
- }, [closeShowModal]);
1024
- const open = useCallback2((props) => {
1025
- setShowModalState({
1026
- visible: true,
1027
- content: /* @__PURE__ */ jsx3(ModalDrawer, { showClose: true, isOpen: true, onClose: closeShowModal, title: props.title, children: /* @__PURE__ */ jsx3(props.content, { close: closeShowModal }) })
1028
- });
1029
- }, [closeShowModal]);
1030
- const ShowModalComponent = showModalState.visible ? createPortal(
1031
- showModalState.content,
1032
- document.body
1033
- ) : null;
1034
- return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
1035
- children,
1036
- ShowModalComponent
1037
- ] });
1038
- }
1039
- function useModal() {
1040
- const context = useContext(ModalContext);
1041
- if (!context) {
1042
- throw new Error("useModal must be used within a ModalProvider");
1043
- }
1044
- return context;
1045
- }
1046
-
1047
1027
  // src/context/ToastContext.tsx
1048
1028
  import { useState as useState5, useCallback as useCallback3, createContext as createContext2, useContext as useContext2 } from "react";
1049
1029
  import { createPortal as createPortal2 } from "react-dom";
@@ -1097,12 +1077,14 @@ function useToast() {
1097
1077
  // src/hooks/api/wallet.ts
1098
1078
  var wallet_exports = {};
1099
1079
  __export(wallet_exports, {
1080
+ USER_IMPORT_TOKEN_LIST_KEY: () => USER_IMPORT_TOKEN_LIST_KEY,
1100
1081
  getUserWalletTransactionsApi: () => getUserWalletTransactionsApi,
1101
1082
  getWalletAssetListApi: () => getWalletAssetListApi,
1102
1083
  getWalletListApi: () => getWalletListApi,
1103
1084
  useAssetListQuery: () => useAssetListQuery,
1104
1085
  useChainListQuery: () => useChainListQuery,
1105
1086
  useImportTokenListQuery: () => useImportTokenListQuery,
1087
+ useWalletAssetListQuery: () => useWalletAssetListQuery,
1106
1088
  useWalletChainListQuery: () => useWalletChainListQuery,
1107
1089
  useWalletNftListQuery: () => useWalletNftListQuery,
1108
1090
  userImportTokenApi: () => userImportTokenApi
@@ -1111,7 +1093,7 @@ import { useQuery } from "@tanstack/react-query";
1111
1093
  function useChainListQuery(options) {
1112
1094
  const { isLogin, token } = useUserInfo();
1113
1095
  return useQuery({
1114
- queryKey: ["match-chain-list", token],
1096
+ queryKey: ["match-user-chain-list", token],
1115
1097
  queryFn: async () => {
1116
1098
  const res = await getUserChainListApi();
1117
1099
  if (!isSuccess(res)) {
@@ -1129,7 +1111,7 @@ function useAssetListQuery({
1129
1111
  }) {
1130
1112
  const { isLogin, token } = useUserInfo();
1131
1113
  return useQuery({
1132
- queryKey: ["match-wallet-asset-list", token, chainId],
1114
+ queryKey: ["match-user-asset-list", token, chainId],
1133
1115
  queryFn: async () => {
1134
1116
  const res = await getUserWalletAssetApi({ chain_id: chainId.toString() });
1135
1117
  if (!isSuccess(res)) {
@@ -1141,13 +1123,14 @@ function useAssetListQuery({
1141
1123
  ...options
1142
1124
  });
1143
1125
  }
1126
+ var USER_IMPORT_TOKEN_LIST_KEY = "match-user-import-token-list";
1144
1127
  function useImportTokenListQuery({
1145
1128
  chainId,
1146
1129
  ...options
1147
1130
  }) {
1148
1131
  const { isLogin, token } = useUserInfo();
1149
1132
  return useQuery({
1150
- queryKey: ["match-wallet-import-token-list", token, chainId],
1133
+ queryKey: [USER_IMPORT_TOKEN_LIST_KEY, token, chainId],
1151
1134
  queryFn: async () => {
1152
1135
  const res = await getUserImportTokenListApi({ chain_id: chainId.toString() });
1153
1136
  if (!isSuccess(res)) {
@@ -1176,16 +1159,16 @@ function useWalletChainListQuery(options) {
1176
1159
  }
1177
1160
  function useWalletNftListQuery({
1178
1161
  chainId,
1179
- address: address2,
1162
+ address,
1180
1163
  ...options
1181
1164
  }) {
1182
1165
  const { isLogin, token } = useUserInfo();
1183
1166
  return useQuery({
1184
- queryKey: ["match-wallet-nft-list", token, chainId, address2],
1167
+ queryKey: ["match-wallet-nft-list", token, chainId, address],
1185
1168
  queryFn: async () => {
1186
1169
  const res = await getWalletNftListApi({
1187
1170
  chain_id: chainId.toString(),
1188
- address: address2
1171
+ address
1189
1172
  });
1190
1173
  if (!isSuccess(res)) {
1191
1174
  return [];
@@ -1196,10 +1179,32 @@ function useWalletNftListQuery({
1196
1179
  ...options
1197
1180
  });
1198
1181
  }
1182
+ function useWalletAssetListQuery({
1183
+ chainId,
1184
+ address,
1185
+ ...options
1186
+ }) {
1187
+ const { isLogin, token } = useUserInfo();
1188
+ return useQuery({
1189
+ queryKey: ["match-wallet-asset-list", token, chainId, address],
1190
+ queryFn: async () => {
1191
+ const res = await getWalletAssetListApi({
1192
+ chain_id: chainId,
1193
+ address
1194
+ });
1195
+ if (!isSuccess(res)) {
1196
+ return null;
1197
+ }
1198
+ return res.data;
1199
+ },
1200
+ enabled: isLogin,
1201
+ ...options
1202
+ });
1203
+ }
1199
1204
 
1200
1205
  // src/hooks/useMatchChain.tsx
1201
1206
  import { useMemo as useMemo3, useState as useState6 } from "react";
1202
- import { createPublicClient, http } from "viem";
1207
+ import { createPublicClient as createPublicClient2, formatUnits, http as http2, parseUnits } from "viem";
1203
1208
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1204
1209
  function useMatchChain() {
1205
1210
  const chainListQuery = useChainListQuery();
@@ -1263,9 +1268,9 @@ function useMatchChain() {
1263
1268
  if (!chain) {
1264
1269
  return null;
1265
1270
  }
1266
- return createPublicClient({
1271
+ return createPublicClient2({
1267
1272
  chain,
1268
- transport: http()
1273
+ transport: http2()
1269
1274
  });
1270
1275
  }, [chain]);
1271
1276
  return {
@@ -1275,86 +1280,139 @@ function useMatchChain() {
1275
1280
  chain,
1276
1281
  explorerLink,
1277
1282
  showChangeNetwork,
1278
- publicClient
1283
+ publicClient,
1284
+ formatUnits: (value) => {
1285
+ return formatUnits(value, chain?.nativeCurrency.decimals || 18);
1286
+ },
1287
+ parseUnits: (value) => {
1288
+ return parseUnits(value, chain?.nativeCurrency.decimals || 18);
1289
+ }
1279
1290
  };
1280
1291
  }
1281
1292
 
1282
1293
  // src/hooks/useMatchWallet.tsx
1283
1294
  import { QRCode } from "react-qrcode";
1284
- import { useEffect as useEffect6, useMemo as useMemo4, useRef, useState as useState7 } from "react";
1295
+ import { useEffect as useEffect7, useMemo as useMemo5, useRef, useState as useState8 } from "react";
1296
+ import { useQuery as useQuery3 } from "@tanstack/react-query";
1285
1297
 
1286
- // example/src/config/contract.ts
1287
- var address = "0x4143e29770fd63e24bb1f32d50bf8a590e34de4b";
1298
+ // src/config/index.tsx
1299
+ var EMAIL_INTERVAL = 60;
1300
+ var EMAIL_CODE_LENGTH = 6;
1301
+ var NATIVE_TOKEN_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
1288
1302
 
1289
1303
  // src/hooks/useMatchWallet.tsx
1304
+ import { erc20Abi as erc20Abi2, formatUnits as formatUnits2 } from "viem";
1305
+
1306
+ // src/store/useContractStore.ts
1307
+ import { create as create4 } from "zustand";
1308
+ import { devtools as devtools3, persist as persist3 } from "zustand/middleware";
1309
+ var persistedState3 = persist3(
1310
+ (set, get) => ({
1311
+ contracts: {},
1312
+ getContract: (chainId, contractAddress) => {
1313
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1314
+ return get().contracts[key];
1315
+ },
1316
+ setContractName: (chainId, contractAddress, name) => {
1317
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1318
+ set((state) => {
1319
+ const updatedContracts = {
1320
+ ...state.contracts,
1321
+ [key]: { ...state.contracts[key], name }
1322
+ };
1323
+ return { contracts: updatedContracts };
1324
+ });
1325
+ },
1326
+ setContractSymbol: (chainId, contractAddress, symbol) => {
1327
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1328
+ set((state) => {
1329
+ const updatedContracts = {
1330
+ ...state.contracts,
1331
+ [key]: { ...state.contracts[key], symbol }
1332
+ };
1333
+ return { contracts: updatedContracts };
1334
+ });
1335
+ },
1336
+ setContractDecimals: (chainId, contractAddress, decimals) => {
1337
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1338
+ set((state) => {
1339
+ const updatedContracts = {
1340
+ ...state.contracts,
1341
+ [key]: { ...state.contracts[key], decimals }
1342
+ };
1343
+ return { contracts: updatedContracts };
1344
+ });
1345
+ },
1346
+ setContracts: (data) => {
1347
+ set((state) => {
1348
+ const newContracts = { ...state.contracts };
1349
+ data.forEach(({ chainId, contractAddress, info }) => {
1350
+ const key = `${chainId}-${contractAddress.toLowerCase()}`;
1351
+ newContracts[key] = { ...newContracts[key], ...info };
1352
+ });
1353
+ return { contracts: newContracts };
1354
+ });
1355
+ }
1356
+ }),
1357
+ { name: "match-contract-local" }
1358
+ );
1359
+ var useContractStore = create4(devtools3(persistedState3));
1360
+ var useContractStore_default = useContractStore;
1361
+
1362
+ // src/hooks/useMatchWallet.tsx
1363
+ import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
1364
+
1365
+ // src/components/ImportToken/index.tsx
1366
+ import { useEffect as useEffect6, useMemo as useMemo4, useState as useState7 } from "react";
1367
+ import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
1368
+ import { useQueryClient } from "@tanstack/react-query";
1369
+ import { defineChain, erc20Abi } from "viem";
1370
+
1371
+ // src/hooks/useIsContract.ts
1372
+ import { createPublicClient as createPublicClient3, http as http3 } from "viem";
1373
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
1374
+ function useIsContract({
1375
+ address,
1376
+ chain,
1377
+ enabled
1378
+ }) {
1379
+ return useQuery2({
1380
+ queryKey: ["is_contract", chain?.id, address],
1381
+ queryFn: async () => {
1382
+ if (!chain) return false;
1383
+ if (!address) return false;
1384
+ const publicClient = createPublicClient3({
1385
+ chain,
1386
+ transport: http3()
1387
+ });
1388
+ const res = await publicClient.getCode({ address });
1389
+ return res !== null && res !== void 0;
1390
+ },
1391
+ enabled
1392
+ });
1393
+ }
1394
+
1395
+ // src/components/ImportToken/index.tsx
1290
1396
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
1291
- var ReceiveModal = () => {
1292
- const chain = useMatchChain();
1293
- const { address: address2 } = useWallet();
1294
- const [copied, setCopied] = useCopyClipboard();
1295
- const toast = useToast();
1296
- const onCopy = () => {
1297
- setCopied(address2);
1298
- toast.success("Copied!");
1299
- };
1300
- const chainLink = chain.explorerLink("address/" + address2);
1301
- return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
1302
- /* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
1303
- /* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
1304
- /* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
1305
- QRCode,
1306
- {
1307
- margin: "0",
1308
- className: `matchid-qr-code`,
1309
- value: address2
1310
- }
1311
- ) }),
1312
- /* @__PURE__ */ jsx6(
1313
- "a",
1314
- {
1315
- href: chainLink,
1316
- target: "_blank",
1317
- className: `matchid-receive-link`,
1318
- children: address2
1319
- }
1320
- )
1321
- ] }),
1322
- /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
1323
- ] });
1324
- };
1325
- var ImportTokenModal = ({ close }) => {
1326
- const [address2, setAddress] = useState7("");
1397
+ function ImportToken({ close }) {
1398
+ const [status, setStatus] = useState7("");
1399
+ const { token } = useUserInfo();
1400
+ const [address, setAddress] = useState7("");
1327
1401
  const [symbol, setSymbol] = useState7("");
1328
1402
  const [decimals, setDecimals] = useState7("");
1329
1403
  const [error, setError] = useState7({});
1330
- const { publicClient, chainId } = useMatchChain();
1404
+ const { publicClient, chainId, chain } = useMatchChain();
1331
1405
  const getContractInfo = async () => {
1332
1406
  if (!publicClient) return;
1333
- const erc20Abi = [
1334
- {
1335
- name: "decimals",
1336
- type: "function",
1337
- stateMutability: "view",
1338
- inputs: [],
1339
- outputs: [{ name: "decimals", type: "uint8" }]
1340
- },
1341
- {
1342
- name: "symbol",
1343
- type: "function",
1344
- stateMutability: "view",
1345
- inputs: [],
1346
- outputs: [{ name: "symbol", type: "string" }]
1347
- }
1348
- ];
1349
1407
  const calls = [
1350
1408
  {
1351
- address: address2,
1409
+ address,
1352
1410
  abi: erc20Abi,
1353
1411
  functionName: "symbol",
1354
1412
  args: []
1355
1413
  },
1356
1414
  {
1357
- address: address2,
1415
+ address,
1358
1416
  abi: erc20Abi,
1359
1417
  functionName: "decimals",
1360
1418
  args: []
@@ -1375,13 +1433,16 @@ var ImportTokenModal = ({ close }) => {
1375
1433
  });
1376
1434
  }
1377
1435
  };
1436
+ const intl = useIntl2();
1378
1437
  useEffect6(() => {
1379
- if (address2.length === 42) {
1438
+ if (address.length === 42) {
1380
1439
  const reg = /^0x[0-9a-fA-F]{40}$/;
1381
- if (!reg.test(address2)) {
1440
+ if (!reg.test(address)) {
1382
1441
  setError({
1383
1442
  ...error,
1384
- address: "Invalid address"
1443
+ address: intl.formatMessage({
1444
+ id: "tokenAddressError"
1445
+ })
1385
1446
  });
1386
1447
  } else {
1387
1448
  setError({
@@ -1391,32 +1452,37 @@ var ImportTokenModal = ({ close }) => {
1391
1452
  publicClient && getContractInfo();
1392
1453
  }
1393
1454
  }
1394
- }, [address2, publicClient]);
1455
+ }, [address, publicClient]);
1395
1456
  const [loading, setLoading] = useState7(false);
1396
1457
  const toast = useToast();
1458
+ const queryClient2 = useQueryClient();
1397
1459
  const onImport = async () => {
1398
1460
  setLoading(true);
1399
1461
  try {
1400
1462
  const res = await userImportTokenApi({
1401
1463
  chain_id: chainId?.toString() || "",
1402
1464
  symbol,
1403
- address: address2,
1465
+ address,
1404
1466
  decimals
1405
1467
  });
1406
1468
  if (isSuccess(res)) {
1407
- toast.success("Imported successfully");
1408
- close();
1469
+ setStatus("success");
1470
+ queryClient2.invalidateQueries({
1471
+ queryKey: [USER_IMPORT_TOKEN_LIST_KEY, token, chainId]
1472
+ });
1409
1473
  } else {
1474
+ setStatus("fail");
1410
1475
  toast.error(res.message);
1411
1476
  }
1412
1477
  } catch (error2) {
1478
+ setStatus("fail");
1413
1479
  toast.error(error2.message);
1414
1480
  } finally {
1415
1481
  setLoading(false);
1416
1482
  }
1417
1483
  };
1418
1484
  const canImport = useMemo4(() => {
1419
- if (!address2) {
1485
+ if (!address) {
1420
1486
  return false;
1421
1487
  }
1422
1488
  if (!symbol) {
@@ -1426,35 +1492,62 @@ var ImportTokenModal = ({ close }) => {
1426
1492
  return false;
1427
1493
  }
1428
1494
  const reg = /^0x[0-9a-fA-F]{40}$/;
1429
- if (!reg.test(address2)) {
1495
+ if (!reg.test(address)) {
1430
1496
  return false;
1431
1497
  }
1432
1498
  return true;
1433
- }, [error, address2, symbol, decimals]);
1499
+ }, [error, address, symbol, decimals]);
1500
+ const isContractQuery = useIsContract({
1501
+ //@ts-ignore
1502
+ chain: defineChain(chain),
1503
+ address,
1504
+ enabled: canImport
1505
+ });
1506
+ if (status == "success" || status == "fail") {
1507
+ return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token-result matchid-flex`, children: [
1508
+ /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token-result-box matchid-flex`, children: [
1509
+ /* @__PURE__ */ jsx6("img", { src: status == "success" ? success_default : fail_default, alt: status == "success" ? "success" : "fail", className: `matchid-import-token-result-img` }),
1510
+ /* @__PURE__ */ jsx6("div", { className: `matchid-import-token-result-text matchid-import-token-result-text-${status}`, children: status == "success" ? /* @__PURE__ */ jsx6(FormattedMessage2, { id: "importSuccess" }) : /* @__PURE__ */ jsx6(FormattedMessage2, { id: "importFail" }) })
1511
+ ] }),
1512
+ status == "success" ? /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: close, block: true, highlight: true, children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "close" }) }) : /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: () => setStatus(""), block: true, highlight: true, children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "back" }) })
1513
+ ] });
1514
+ }
1434
1515
  return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token`, children: [
1435
1516
  /* @__PURE__ */ jsxs5("div", { className: "matchid-import-token-form", children: [
1436
- /* @__PURE__ */ jsx6(Field, { label: "Token Smart Contract", error: error.address, children: /* @__PURE__ */ jsx6(
1517
+ /* @__PURE__ */ jsx6(Field, { label: intl.formatMessage({
1518
+ id: "tokenSmartContract"
1519
+ }), error: error.address ? error.address : isContractQuery.isFetched && !isContractQuery.isLoading && !isContractQuery.data && canImport ? "Address isn't a contract address" : "", children: /* @__PURE__ */ jsx6(
1437
1520
  Input,
1438
1521
  {
1439
- placeholder: "Enter the Token Smart Contract",
1440
- value: address2,
1522
+ placeholder: intl.formatMessage({
1523
+ id: "tokenSmartContractPlaceholder"
1524
+ }),
1525
+ value: address,
1441
1526
  onChange: (e) => setAddress(e.target.value),
1442
1527
  maxLength: 42
1443
1528
  }
1444
1529
  ) }),
1445
- /* @__PURE__ */ jsx6(Field, { label: "Token Symbol", error: error.symbol, children: /* @__PURE__ */ jsx6(
1530
+ /* @__PURE__ */ jsx6(Field, { label: intl.formatMessage({
1531
+ id: "tokenSymbol"
1532
+ }), error: error.symbol, children: /* @__PURE__ */ jsx6(
1446
1533
  Input,
1447
1534
  {
1448
- placeholder: "Enter the Token Symbol",
1535
+ placeholder: intl.formatMessage({
1536
+ id: "tokenSymbolPlaceholder"
1537
+ }),
1449
1538
  value: symbol,
1450
1539
  onChange: (e) => setSymbol(e.target.value),
1451
1540
  maxLength: 16
1452
1541
  }
1453
1542
  ) }),
1454
- /* @__PURE__ */ jsx6(Field, { label: "Decimals", error: error.decimals, children: /* @__PURE__ */ jsx6(
1543
+ /* @__PURE__ */ jsx6(Field, { label: intl.formatMessage({
1544
+ id: "tokenDecimals"
1545
+ }), error: error.decimals, children: /* @__PURE__ */ jsx6(
1455
1546
  Input,
1456
1547
  {
1457
- placeholder: "Enter the Decimals",
1548
+ placeholder: intl.formatMessage({
1549
+ id: "tokenDecimalsPlaceholder"
1550
+ }),
1458
1551
  type: "number",
1459
1552
  value: decimals,
1460
1553
  onChange: (e) => setDecimals(e.target.value)
@@ -1467,85 +1560,393 @@ var ImportTokenModal = ({ close }) => {
1467
1560
  size: "lg",
1468
1561
  onClick: onImport,
1469
1562
  block: true,
1470
- loading,
1471
- disabled: !canImport,
1563
+ loading: loading || isContractQuery.isLoading,
1564
+ disabled: !canImport || !isContractQuery.data,
1472
1565
  highlight: true,
1473
- children: "Import"
1566
+ children: /* @__PURE__ */ jsx6(FormattedMessage2, { id: "import" })
1474
1567
  }
1475
1568
  )
1476
1569
  ] });
1570
+ }
1571
+
1572
+ // src/hooks/useMatchWallet.tsx
1573
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
1574
+ var ReceiveModal = () => {
1575
+ const chain = useMatchChain();
1576
+ const { address } = useWallet();
1577
+ const [copied, setCopied] = useCopyClipboard();
1578
+ const toast = useToast();
1579
+ const intl = useIntl3();
1580
+ const onCopy = () => {
1581
+ setCopied(address);
1582
+ toast.success(intl.formatMessage({
1583
+ id: "copied"
1584
+ }));
1585
+ };
1586
+ const chainLink = chain.explorerLink("address/" + address);
1587
+ return /* @__PURE__ */ jsxs6("div", { className: `matchid-receive-modal`, children: [
1588
+ /* @__PURE__ */ jsxs6("div", { className: "matchid-receive-container", children: [
1589
+ /* @__PURE__ */ jsx7("div", { className: `matchid-receive-text`, children: /* @__PURE__ */ jsx7(FormattedMessage3, { id: "receiveQrcode" }) }),
1590
+ /* @__PURE__ */ jsx7("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx7(
1591
+ QRCode,
1592
+ {
1593
+ margin: "0",
1594
+ className: `matchid-qr-code`,
1595
+ value: address
1596
+ }
1597
+ ) }),
1598
+ /* @__PURE__ */ jsx7(
1599
+ "a",
1600
+ {
1601
+ href: chainLink,
1602
+ target: "_blank",
1603
+ className: `matchid-receive-link`,
1604
+ children: address
1605
+ }
1606
+ )
1607
+ ] }),
1608
+ /* @__PURE__ */ jsx7(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: /* @__PURE__ */ jsx7(
1609
+ FormattedMessage3,
1610
+ {
1611
+ id: "copyAddress"
1612
+ }
1613
+ ) })
1614
+ ] });
1477
1615
  };
1478
1616
  function useMatchWallet() {
1479
1617
  const modal = useModal();
1618
+ const intl = useIntl3();
1480
1619
  const showReceiveModal = () => {
1481
1620
  modal.open({
1482
- title: "Receive",
1621
+ title: intl.formatMessage({
1622
+ id: "receive"
1623
+ }),
1483
1624
  content: ReceiveModal
1484
1625
  });
1485
1626
  };
1486
1627
  const showImportTokenModal = () => {
1487
1628
  modal.open({
1488
- title: "Customized Token",
1489
- content: ImportTokenModal
1629
+ title: intl.formatMessage({
1630
+ id: "customizedToken"
1631
+ }),
1632
+ content: ImportToken
1633
+ });
1634
+ };
1635
+ const showSendListModal = () => {
1636
+ modal.open({
1637
+ title: intl.formatMessage({
1638
+ id: "send"
1639
+ }),
1640
+ content: TokenSendList
1490
1641
  });
1491
1642
  };
1492
1643
  return {
1493
1644
  showReceiveModal,
1494
- showImportTokenModal
1645
+ showImportTokenModal,
1646
+ showSendListModal
1495
1647
  };
1496
1648
  }
1497
- function useMatchWalletRecords({
1498
- pageSize = 10
1499
- }) {
1500
- const [hasMore, setHasMore] = useState7(true);
1501
- const [items, setItems] = useState7([]);
1502
- const { chainId } = useMatchChain();
1649
+ function useMatchWalletRecords() {
1650
+ const [hasMore, setHasMore] = useState8(true);
1651
+ const [items, setItems] = useState8([]);
1652
+ const { chainId, publicClient } = useMatchChain();
1653
+ const { address } = useWallet();
1503
1654
  const hasMoreRef = useRef(hasMore);
1655
+ const nextPageParamsRef = useRef(void 0);
1656
+ const { contracts, setContracts } = useContractStore_default();
1504
1657
  const fetchMoreData = async () => {
1505
- if (!hasMoreRef.current) {
1658
+ const chainIdStr = chainId ? chainId.toString() : "";
1659
+ if (!hasMoreRef.current || !chainIdStr) {
1506
1660
  return;
1507
1661
  }
1508
- const chainIdStr = chainId ? chainId.toString() : "";
1509
1662
  const res = await getUserWalletTransactionsApi({
1510
1663
  chain_id: chainIdStr,
1511
- limit: pageSize,
1512
- offset: items.length
1664
+ ...nextPageParamsRef.current
1513
1665
  });
1514
1666
  if (isSuccess(res)) {
1515
- if (res.data && res.data.transactions.length > 0) {
1516
- setItems(items.concat(res.data.transactions));
1667
+ if (res.data && res.data.transactions && res.data.transactions.length > 0) {
1668
+ setItems(items.concat(res.data.transactions || []));
1517
1669
  }
1518
- hasMoreRef.current = res.data && res.data.transactions.length >= pageSize;
1519
- setHasMore(res.data && res.data.transactions.length >= pageSize);
1670
+ hasMoreRef.current = res.data && res.data.transactions && res.data.transactions.length >= 50;
1671
+ setHasMore(hasMoreRef.current);
1672
+ nextPageParamsRef.current = res.data.next_page_params;
1520
1673
  }
1521
1674
  };
1522
1675
  const onInit = async () => {
1676
+ nextPageParamsRef.current = void 0;
1523
1677
  setItems([]);
1524
1678
  setHasMore(true);
1525
1679
  hasMoreRef.current = true;
1526
1680
  fetchMoreData();
1527
1681
  };
1528
- useEffect6(() => {
1682
+ useEffect7(() => {
1529
1683
  if (chainId && address) {
1530
1684
  onInit();
1531
1685
  }
1532
1686
  }, [chainId, address]);
1687
+ const { transactions, removeTransaction } = useTransactionStore_default();
1688
+ const getContractInfoList = async (contractList) => {
1689
+ const contractUnique = Array.from(new Set(contractList)).filter((item) => {
1690
+ const contract = contracts[`${chainId}-${item.toLowerCase()}`];
1691
+ if (!contract) {
1692
+ return true;
1693
+ }
1694
+ if (!contract.symbol && !contract.name) {
1695
+ return true;
1696
+ }
1697
+ if (!contract.decimals) {
1698
+ return true;
1699
+ }
1700
+ return false;
1701
+ });
1702
+ const calls = [];
1703
+ for (const contract of contractUnique) {
1704
+ calls.push({
1705
+ address: contract,
1706
+ abi: erc20Abi2,
1707
+ functionName: "symbol",
1708
+ args: []
1709
+ });
1710
+ calls.push({
1711
+ address: contract,
1712
+ abi: erc20Abi2,
1713
+ functionName: "decimals",
1714
+ args: []
1715
+ });
1716
+ }
1717
+ const results = await publicClient?.multicall({ contracts: calls });
1718
+ if (results) {
1719
+ console.log("contract results", calls, results);
1720
+ const contractMap = [];
1721
+ for (let i = 0; i < contractUnique.length; i++) {
1722
+ const info = {};
1723
+ if (results[i * 2].status == "success") {
1724
+ info.symbol = results[i * 2].result;
1725
+ }
1726
+ if (results[i * 2 + 1].status == "success") {
1727
+ info.decimals = results[i * 2 + 1].result;
1728
+ }
1729
+ contractMap.push({
1730
+ chainId: chainId || 0,
1731
+ contractAddress: contractUnique[i],
1732
+ info
1733
+ });
1734
+ }
1735
+ setContracts(contractMap);
1736
+ }
1737
+ };
1738
+ const list = useMemo5(() => {
1739
+ const localTransactions = transactions[`${chainId}-${address}`] || [];
1740
+ const removeList = localTransactions.filter((n) => items.findIndex((m) => m.hash == n.hash) >= 0);
1741
+ removeList.forEach((item) => {
1742
+ removeTransaction({
1743
+ chainId: chainId || 0,
1744
+ hash: item.hash,
1745
+ address
1746
+ });
1747
+ });
1748
+ const saveList = localTransactions.filter((n) => items.findIndex((m) => m.hash == n.hash) < 0);
1749
+ const list2 = [
1750
+ ...saveList,
1751
+ ...items
1752
+ ].sort((a, b) => {
1753
+ const btimestamp = typeof b.timestamp === "string" ? parseInt(b.timestamp) : b.timestamp;
1754
+ const atimestamp = typeof a.timestamp === "string" ? parseInt(a.timestamp) : a.timestamp;
1755
+ return btimestamp - atimestamp;
1756
+ });
1757
+ const contractList = list2.filter((item) => item.input.toLowerCase().substring(0, 10) == "0xa9059cbb").map((item) => item.to);
1758
+ getContractInfoList(contractList);
1759
+ return list2;
1760
+ }, [transactions, chainId, items, address]);
1533
1761
  return {
1534
- items,
1762
+ items: list,
1535
1763
  fetchMoreData,
1536
1764
  hasMore
1537
1765
  };
1538
1766
  }
1767
+ function useMatchWalletAssets({
1768
+ importTokenOptions,
1769
+ assetListOptions
1770
+ } = {}) {
1771
+ const { chainId, chain } = useMatchChain();
1772
+ const importTokenQuery = useImportTokenListQuery({
1773
+ chainId: chainId || 0,
1774
+ ...importTokenOptions
1775
+ });
1776
+ const assetListQuery = useAssetListQuery({
1777
+ chainId: chainId || 0,
1778
+ ...assetListOptions
1779
+ });
1780
+ const mergedAssets = useMemo5(() => {
1781
+ if (!assetListQuery.data && !importTokenQuery.data) return [];
1782
+ const assetList = (assetListQuery.data || []).map((asset) => ({
1783
+ ...asset,
1784
+ isAuto: true
1785
+ }));
1786
+ const importTokens = (importTokenQuery.data || []).map((token) => ({
1787
+ ...token,
1788
+ isCustom: true
1789
+ }));
1790
+ const assetMap = /* @__PURE__ */ new Map();
1791
+ assetList.forEach((asset) => {
1792
+ const key = `${asset.chain_id}-${asset.address.toLowerCase()}`;
1793
+ assetMap.set(key, asset);
1794
+ });
1795
+ importTokens.forEach((token) => {
1796
+ const key = `${token.chain_id}-${token.address.toLowerCase()}`;
1797
+ if (assetMap.has(key)) {
1798
+ const existing = assetMap.get(key);
1799
+ assetMap.set(key, {
1800
+ ...existing,
1801
+ symbol: token.symbol,
1802
+ decimals: token.decimals,
1803
+ isCustom: true,
1804
+ isAuto: existing.isAuto ?? false
1805
+ });
1806
+ } else {
1807
+ assetMap.set(key, token);
1808
+ }
1809
+ });
1810
+ const list = Array.from(assetMap.values()).sort((a, b) => {
1811
+ return (b.isAuto ? 1 : 0) - (a.isAuto ? 1 : 0);
1812
+ });
1813
+ const nativeToken = list.find((asset) => asset.address.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase());
1814
+ if (!nativeToken) {
1815
+ list.unshift({
1816
+ chain_id: chain?.id.toString() || "",
1817
+ address: NATIVE_TOKEN_ADDRESS,
1818
+ decimals: chain?.nativeCurrency.decimals || 18,
1819
+ symbol: chain?.nativeCurrency.symbol,
1820
+ name: chain?.nativeCurrency.name,
1821
+ balance: 0,
1822
+ icon: chain?.nativeCurrency.icon
1823
+ });
1824
+ }
1825
+ return list;
1826
+ }, [assetListQuery.data, importTokenQuery.data]);
1827
+ return {
1828
+ importTokenQuery,
1829
+ assetListQuery,
1830
+ mergedAssets
1831
+ };
1832
+ }
1833
+ var MULTICALL_LIMIT = 100;
1834
+ function useMatchWalletAssetList({
1835
+ list
1836
+ }) {
1837
+ const { publicClient, chain } = useMatchChain();
1838
+ const { address } = useWallet();
1839
+ const { assets, setAssets } = useLocalStore_default();
1840
+ const nativeToken = list.find((asset) => asset.address.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase()) || {
1841
+ chain_id: chain?.id || "",
1842
+ address: NATIVE_TOKEN_ADDRESS,
1843
+ decimals: 18,
1844
+ symbol: chain?.nativeCurrency.symbol,
1845
+ name: chain?.nativeCurrency.name,
1846
+ balance: 0
1847
+ };
1848
+ const nativeBalanceQuery = useQuery3({
1849
+ queryKey: ["nativeBalance", nativeToken?.chain_id],
1850
+ queryFn: async () => {
1851
+ if (!nativeToken || !publicClient) return null;
1852
+ try {
1853
+ return await publicClient.getBalance({
1854
+ address
1855
+ });
1856
+ } catch (error) {
1857
+ console.error("Native Token Balance Error:", error);
1858
+ return null;
1859
+ }
1860
+ },
1861
+ enabled: !!nativeToken && !!publicClient,
1862
+ refetchInterval: 15e3,
1863
+ // Refresh every 15 seconds
1864
+ retry: 3
1865
+ // Retry up to 3 times if failed
1866
+ });
1867
+ const erc20Tokens = useMemo5(() => list.filter((asset) => asset.address !== NATIVE_TOKEN_ADDRESS), [list]);
1868
+ const erc20BalanceQuery = useQuery3({
1869
+ queryKey: ["erc20Balances", erc20Tokens.map((token) => token.address)],
1870
+ queryFn: async () => {
1871
+ if (!erc20Tokens.length || !publicClient) return [];
1872
+ const calls = erc20Tokens.map((token) => ({
1873
+ address: token.address,
1874
+ abi: erc20Abi2,
1875
+ functionName: "balanceOf",
1876
+ args: [address]
1877
+ }));
1878
+ let balances = [];
1879
+ for (let i = 0; i < calls.length; i += MULTICALL_LIMIT) {
1880
+ const batchCalls = calls.slice(i, i + MULTICALL_LIMIT);
1881
+ try {
1882
+ const results = await publicClient.multicall({ contracts: batchCalls });
1883
+ balances.push(...results);
1884
+ } catch (error) {
1885
+ console.error("MultiCall Error:", error);
1886
+ }
1887
+ }
1888
+ return balances;
1889
+ },
1890
+ enabled: !!publicClient,
1891
+ refetchInterval: 15e3,
1892
+ // Refresh every 15 seconds
1893
+ retry: 3
1894
+ });
1895
+ const enrichedAssets = useMemo5(() => {
1896
+ if (!list) return [];
1897
+ const erc20Balances = erc20BalanceQuery.data || [];
1898
+ return list.map((asset) => {
1899
+ let balanceValue = "0";
1900
+ let balance = 0;
1901
+ const decimals = typeof asset.decimals === "string" ? parseInt(asset.decimals) : asset.decimals;
1902
+ const assetAddress = asset.address.toLowerCase();
1903
+ if (assetAddress === NATIVE_TOKEN_ADDRESS) {
1904
+ balanceValue = nativeBalanceQuery.data?.toString() || "0";
1905
+ balance = nativeBalanceQuery.data ? Number(formatUnits2(nativeBalanceQuery.data, decimals)) : 0;
1906
+ } else {
1907
+ const index = erc20Tokens.findIndex((t) => t.address.toLowerCase() === assetAddress);
1908
+ if (index !== -1 && erc20Balances[index] && erc20Balances[index].status === "success") {
1909
+ balance = Number(formatUnits2(erc20Balances[index].result, decimals));
1910
+ balanceValue = erc20Balances[index].result?.toString() || "0";
1911
+ }
1912
+ }
1913
+ const value = asset.isAuto ? balance * (asset.price || 0) : 0;
1914
+ return { ...asset, balance, value, balanceValue };
1915
+ });
1916
+ }, [list, nativeBalanceQuery.data, erc20BalanceQuery.data]);
1917
+ useEffect7(() => {
1918
+ const list2 = enrichedAssets.sort((a, b) => {
1919
+ if (a.address === NATIVE_TOKEN_ADDRESS) return -1;
1920
+ if (b.address === NATIVE_TOKEN_ADDRESS) return 1;
1921
+ if (a.isAuto && b.isAuto) return b.value - a.value;
1922
+ if (a.isAuto) return -1;
1923
+ if (b.isAuto) return 1;
1924
+ if (a.isCustom && !a.isAuto && a.balance > 0) return -1;
1925
+ if (b.isCustom && !b.isAuto && b.balance > 0) return 1;
1926
+ return 0;
1927
+ });
1928
+ setAssets(list2);
1929
+ }, [enrichedAssets]);
1930
+ return {
1931
+ list: assets,
1932
+ isLoading: nativeBalanceQuery.isLoading || erc20BalanceQuery.isLoading,
1933
+ isFetched: nativeBalanceQuery.isFetched && erc20BalanceQuery.isFetched,
1934
+ nativeBalanceQuery,
1935
+ erc20BalanceQuery,
1936
+ nativeBalance: nativeBalanceQuery.data,
1937
+ erc20Balances: erc20BalanceQuery.data
1938
+ };
1939
+ }
1539
1940
 
1540
1941
  // src/hooks/useReceipt.tsx
1541
- import { useState as useState8, useCallback as useCallback4, useEffect as useEffect7 } from "react";
1542
- import { useQuery as useQuery2 } from "@tanstack/react-query";
1543
- import { createPublicClient as createPublicClient2, defineChain, http as http2 } from "viem";
1942
+ import { useState as useState9, useCallback as useCallback4, useEffect as useEffect8 } from "react";
1943
+ import { useQuery as useQuery4 } from "@tanstack/react-query";
1944
+ import { createPublicClient as createPublicClient4, defineChain as defineChain2, http as http4 } from "viem";
1544
1945
  var CACHE_TTL = 86400 * 30 * 1e3;
1545
1946
  var MAX_CACHE_SIZE = 500;
1546
1947
  var STORAGE_KEY = "match_receipt_logs";
1547
1948
  function useReceiptCache() {
1548
- const [cache, setCache] = useState8(/* @__PURE__ */ new Map());
1949
+ const [cache, setCache] = useState9(/* @__PURE__ */ new Map());
1549
1950
  const isLocalStorageAvailable = (() => {
1550
1951
  try {
1551
1952
  const testKey = "__test__";
@@ -1556,7 +1957,7 @@ function useReceiptCache() {
1556
1957
  return false;
1557
1958
  }
1558
1959
  })();
1559
- useEffect7(() => {
1960
+ useEffect8(() => {
1560
1961
  if (isLocalStorageAvailable) {
1561
1962
  try {
1562
1963
  const storedData = localStorage.getItem(STORAGE_KEY);
@@ -1647,8 +2048,8 @@ function useReceipt({
1647
2048
  const { list } = useMatchChain();
1648
2049
  const cache = useReceiptCache();
1649
2050
  const chain = list?.find((item) => item.id === chainId);
1650
- const [shouldRefetch, setShouldRefetch] = useState8(true);
1651
- const query = useQuery2({
2051
+ const [shouldRefetch, setShouldRefetch] = useState9(true);
2052
+ const query = useQuery4({
1652
2053
  queryKey: ["match-tx-receipt", hash, chain],
1653
2054
  queryFn: async () => {
1654
2055
  if (!chain || !hash) return false;
@@ -1657,9 +2058,9 @@ function useReceipt({
1657
2058
  return cache.get(cacheKey);
1658
2059
  }
1659
2060
  try {
1660
- const publicClient = createPublicClient2({
1661
- chain: defineChain(chain),
1662
- transport: http2()
2061
+ const publicClient = createPublicClient4({
2062
+ chain: defineChain2(chain),
2063
+ transport: http4()
1663
2064
  });
1664
2065
  const receipt = await publicClient.getTransactionReceipt({ hash });
1665
2066
  if (!receipt) {
@@ -1673,7 +2074,7 @@ function useReceipt({
1673
2074
  },
1674
2075
  refetchInterval: shouldRefetch ? 1e4 : false
1675
2076
  });
1676
- useEffect7(() => {
2077
+ useEffect8(() => {
1677
2078
  if (query.data) {
1678
2079
  setShouldRefetch(false);
1679
2080
  }
@@ -1682,14 +2083,14 @@ function useReceipt({
1682
2083
  }
1683
2084
 
1684
2085
  // src/hooks/useTransaction.tsx
1685
- import { useState as useState9, useCallback as useCallback5, useEffect as useEffect8 } from "react";
1686
- import { useQuery as useQuery3 } from "@tanstack/react-query";
1687
- import { createPublicClient as createPublicClient3, defineChain as defineChain2, http as http3 } from "viem";
2086
+ import { useState as useState10, useCallback as useCallback5, useEffect as useEffect9 } from "react";
2087
+ import { useQuery as useQuery5 } from "@tanstack/react-query";
2088
+ import { createPublicClient as createPublicClient5, defineChain as defineChain3, http as http5 } from "viem";
1688
2089
  var CACHE_TTL2 = 86400 * 30 * 1e3;
1689
2090
  var MAX_CACHE_SIZE2 = 500;
1690
2091
  var STORAGE_KEY2 = "match_transaction_logs";
1691
2092
  function useTransactionCache() {
1692
- const [cache, setCache] = useState9(/* @__PURE__ */ new Map());
2093
+ const [cache, setCache] = useState10(/* @__PURE__ */ new Map());
1693
2094
  const isLocalStorageAvailable = (() => {
1694
2095
  try {
1695
2096
  const testKey = "__test__";
@@ -1700,7 +2101,7 @@ function useTransactionCache() {
1700
2101
  return false;
1701
2102
  }
1702
2103
  })();
1703
- useEffect8(() => {
2104
+ useEffect9(() => {
1704
2105
  if (isLocalStorageAvailable) {
1705
2106
  try {
1706
2107
  const storedData = localStorage.getItem(STORAGE_KEY2);
@@ -1791,8 +2192,8 @@ function useTransaction({
1791
2192
  const { list } = useMatchChain();
1792
2193
  const cache = useTransactionCache();
1793
2194
  const chain = list?.find((item) => item.id === chainId);
1794
- const [shouldRefetch, setShouldRefetch] = useState9(true);
1795
- const query = useQuery3({
2195
+ const [shouldRefetch, setShouldRefetch] = useState10(true);
2196
+ const query = useQuery5({
1796
2197
  queryKey: ["match-tx-transaction", hash, chain],
1797
2198
  queryFn: async () => {
1798
2199
  if (!chain || !hash) return false;
@@ -1801,9 +2202,9 @@ function useTransaction({
1801
2202
  return cache.get(cacheKey);
1802
2203
  }
1803
2204
  try {
1804
- const publicClient = createPublicClient3({
1805
- chain: defineChain2(chain),
1806
- transport: http3()
2205
+ const publicClient = createPublicClient5({
2206
+ chain: defineChain3(chain),
2207
+ transport: http5()
1807
2208
  });
1808
2209
  const transaction = await publicClient.getTransaction({ hash });
1809
2210
  if (!transaction) {
@@ -1817,7 +2218,7 @@ function useTransaction({
1817
2218
  },
1818
2219
  refetchInterval: shouldRefetch ? 1e4 : false
1819
2220
  });
1820
- useEffect8(() => {
2221
+ useEffect9(() => {
1821
2222
  if (query.data) {
1822
2223
  setShouldRefetch(false);
1823
2224
  }
@@ -1825,28 +2226,113 @@ function useTransaction({
1825
2226
  return query;
1826
2227
  }
1827
2228
 
2229
+ // src/store/useModalStore.ts
2230
+ import { create as create5 } from "zustand";
2231
+
2232
+ // src/hooks/useConfig.tsx
2233
+ import { jsx as jsx8 } from "react/jsx-runtime";
2234
+ var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
2235
+ var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
2236
+ function useWalletConfig() {
2237
+ const isDownMd = useDownMd();
2238
+ const walletMap = {
2239
+ evm: {
2240
+ icon: /* @__PURE__ */ jsx8(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
2241
+ activeIcon: /* @__PURE__ */ jsx8(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
2242
+ name: "EVM",
2243
+ method: "evm"
2244
+ },
2245
+ sol: {
2246
+ icon: /* @__PURE__ */ jsx8(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
2247
+ activeIcon: /* @__PURE__ */ jsx8(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
2248
+ name: "SOL",
2249
+ method: "sol"
2250
+ },
2251
+ btc: {
2252
+ icon: /* @__PURE__ */ jsx8(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
2253
+ activeIcon: /* @__PURE__ */ jsx8(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
2254
+ name: "BTC",
2255
+ method: "btc"
2256
+ },
2257
+ tron: {
2258
+ icon: /* @__PURE__ */ jsx8(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
2259
+ activeIcon: /* @__PURE__ */ jsx8(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
2260
+ name: "TRON",
2261
+ method: "tron"
2262
+ },
2263
+ ton: {
2264
+ icon: /* @__PURE__ */ jsx8(TonLightIcon, { size: isDownMd ? 36 : 40 }),
2265
+ activeIcon: /* @__PURE__ */ jsx8(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
2266
+ name: "TON",
2267
+ method: "ton"
2268
+ }
2269
+ };
2270
+ return {
2271
+ walletMap
2272
+ };
2273
+ }
2274
+
2275
+ // src/store/useModalStore.ts
2276
+ var useSOLModalStore = create5((set) => ({
2277
+ isOpen: false,
2278
+ type: "",
2279
+ open: (type) => set({ isOpen: true, type }),
2280
+ close: () => set({ isOpen: false })
2281
+ }));
2282
+ var useTRONModalStore = create5((set) => ({
2283
+ isOpen: false,
2284
+ type: "",
2285
+ open: (type) => set({ isOpen: true, type }),
2286
+ close: () => set({ isOpen: false })
2287
+ }));
2288
+ var useTONModalStore = create5((set) => ({
2289
+ isOpen: false,
2290
+ type: "",
2291
+ open: (type) => set({ isOpen: true, type }),
2292
+ close: () => set({ isOpen: false })
2293
+ }));
2294
+ var useBTCModalStore = create5((set) => ({
2295
+ isOpen: false,
2296
+ type: "",
2297
+ open: (type) => set({ isOpen: true, type }),
2298
+ close: () => set({ isOpen: false })
2299
+ }));
2300
+ var useCEXBindModalStore = create5((set) => ({
2301
+ type: "",
2302
+ isOpen: false,
2303
+ open: (type) => set({ isOpen: true, type }),
2304
+ close: () => set({ isOpen: false })
2305
+ }));
2306
+ var useWalletModalStore = create5((set) => ({
2307
+ isOpen: false,
2308
+ type: "",
2309
+ methods: [],
2310
+ open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
2311
+ close: () => set({ isOpen: false })
2312
+ }));
2313
+
1828
2314
  // src/components/CEXBindModal/index.tsx
1829
- import { useEffect as useEffect9, useMemo as useMemo5, useState as useState10 } from "react";
1830
- import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
1831
- import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
2315
+ import { useEffect as useEffect10, useMemo as useMemo6, useState as useState11 } from "react";
2316
+ import { FormattedMessage as FormattedMessage4, useIntl as useIntl4 } from "react-intl";
2317
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1832
2318
  function CEXBindModal({
1833
2319
  onClose,
1834
2320
  type,
1835
2321
  isOpen = false,
1836
2322
  ...props
1837
2323
  }) {
1838
- const intl = useIntl2();
2324
+ const intl = useIntl4();
1839
2325
  const { events } = useMatch();
1840
- const [APIPassphrase, setAPIPassphrase] = useState10("");
2326
+ const [APIPassphrase, setAPIPassphrase] = useState11("");
1841
2327
  const { refreshOverview } = useUserInfo();
1842
- const [loading, setLoading] = useState10(false);
1843
- const [key, setKey] = useState10("");
1844
- const [secret, setSecret] = useState10("");
1845
- const [error, setError] = useState10("");
1846
- const needPassphrase = useMemo5(() => {
2328
+ const [loading, setLoading] = useState11(false);
2329
+ const [key, setKey] = useState11("");
2330
+ const [secret, setSecret] = useState11("");
2331
+ const [error, setError] = useState11("");
2332
+ const needPassphrase = useMemo6(() => {
1847
2333
  return ["bitget", "okx"].includes(type.toLowerCase());
1848
2334
  }, [type]);
1849
- useEffect9(() => {
2335
+ useEffect10(() => {
1850
2336
  if (isOpen) {
1851
2337
  setSecret("");
1852
2338
  setKey("");
@@ -1883,20 +2369,20 @@ function CEXBindModal({
1883
2369
  setLoading(false);
1884
2370
  }
1885
2371
  };
1886
- return /* @__PURE__ */ jsx7(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
2372
+ return /* @__PURE__ */ jsx9(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
1887
2373
  id: "CEXBindTitle"
1888
2374
  }, {
1889
2375
  type
1890
- }), ...props, children: /* @__PURE__ */ jsxs6("div", { className: "matchid-cex-modal", children: [
1891
- /* @__PURE__ */ jsxs6("div", { children: [
1892
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindAttention" }) }),
1893
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips1" }) }),
1894
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips2" }) }),
1895
- /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips3" }) })
2376
+ }), ...props, children: /* @__PURE__ */ jsxs7("div", { className: "matchid-cex-modal", children: [
2377
+ /* @__PURE__ */ jsxs7("div", { children: [
2378
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindAttention" }) }),
2379
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips1" }) }),
2380
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips2" }) }),
2381
+ /* @__PURE__ */ jsx9("p", { children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "CEXBindTips3" }) })
1896
2382
  ] }),
1897
- /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2383
+ /* @__PURE__ */ jsx9(Field, { label: intl.formatMessage({
1898
2384
  id: "CEXBindApiKey"
1899
- }), children: /* @__PURE__ */ jsx7(
2385
+ }), children: /* @__PURE__ */ jsx9(
1900
2386
  Input,
1901
2387
  {
1902
2388
  value: key,
@@ -1904,9 +2390,9 @@ function CEXBindModal({
1904
2390
  placeholder: "**** **** ****"
1905
2391
  }
1906
2392
  ) }),
1907
- /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2393
+ /* @__PURE__ */ jsx9(Field, { label: intl.formatMessage({
1908
2394
  id: "CEXBindApiSecretKey"
1909
- }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx7(
2395
+ }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx9(
1910
2396
  Input,
1911
2397
  {
1912
2398
  value: secret,
@@ -1914,9 +2400,9 @@ function CEXBindModal({
1914
2400
  placeholder: "**** **** ****"
1915
2401
  }
1916
2402
  ) }),
1917
- needPassphrase && /* @__PURE__ */ jsx7(Field, { error, label: intl.formatMessage({
2403
+ needPassphrase && /* @__PURE__ */ jsx9(Field, { error, label: intl.formatMessage({
1918
2404
  id: "CEXBindApiPassphrase"
1919
- }), children: /* @__PURE__ */ jsx7(
2405
+ }), children: /* @__PURE__ */ jsx9(
1920
2406
  Input,
1921
2407
  {
1922
2408
  value: APIPassphrase,
@@ -1924,7 +2410,7 @@ function CEXBindModal({
1924
2410
  placeholder: "**** **** ****"
1925
2411
  }
1926
2412
  ) }),
1927
- /* @__PURE__ */ jsx7(
2413
+ /* @__PURE__ */ jsx9(
1928
2414
  Button,
1929
2415
  {
1930
2416
  onClick: SubmitApi,
@@ -1932,14 +2418,14 @@ function CEXBindModal({
1932
2418
  block: true,
1933
2419
  loading,
1934
2420
  disabled: !key || !secret,
1935
- children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "continue" })
2421
+ children: /* @__PURE__ */ jsx9(FormattedMessage4, { id: "continue" })
1936
2422
  }
1937
2423
  )
1938
2424
  ] }) });
1939
2425
  }
1940
2426
 
1941
2427
  // src/context/BusinessProvider.tsx
1942
- import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
2428
+ import { Fragment, jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
1943
2429
  function BusinessProvider({ children }) {
1944
2430
  const { overview, token } = useUserInfo();
1945
2431
  const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
@@ -1948,13 +2434,12 @@ function BusinessProvider({ children }) {
1948
2434
  const { type: BTCType, isOpen: BTCIsOpen, close: BTCClose } = useBTCModalStore();
1949
2435
  const { type: CEXType, isOpen: CEXIsOpen, close: CEXClose } = useCEXBindModalStore();
1950
2436
  const WalletModalStore = useWalletModalStore();
1951
- const { close: HashPanelClose, ...hashPanelProps } = useHashPanelStore();
1952
2437
  const walletModalClose = (func) => {
1953
2438
  WalletModalStore.close();
1954
2439
  func();
1955
2440
  };
1956
- return /* @__PURE__ */ jsxs7(Fragment, { children: [
1957
- /* @__PURE__ */ jsx8(
2441
+ return /* @__PURE__ */ jsxs8(Fragment, { children: [
2442
+ /* @__PURE__ */ jsx10(
1958
2443
  SOLModal,
1959
2444
  {
1960
2445
  isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
@@ -1964,7 +2449,7 @@ function BusinessProvider({ children }) {
1964
2449
  zIndex: 199
1965
2450
  }
1966
2451
  ),
1967
- /* @__PURE__ */ jsx8(
2452
+ /* @__PURE__ */ jsx10(
1968
2453
  TRONModal,
1969
2454
  {
1970
2455
  isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
@@ -1974,7 +2459,7 @@ function BusinessProvider({ children }) {
1974
2459
  zIndex: 199
1975
2460
  }
1976
2461
  ),
1977
- /* @__PURE__ */ jsx8(
2462
+ /* @__PURE__ */ jsx10(
1978
2463
  TONModal,
1979
2464
  {
1980
2465
  isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
@@ -1984,7 +2469,7 @@ function BusinessProvider({ children }) {
1984
2469
  zIndex: 199
1985
2470
  }
1986
2471
  ),
1987
- /* @__PURE__ */ jsx8(
2472
+ /* @__PURE__ */ jsx10(
1988
2473
  BTCModal,
1989
2474
  {
1990
2475
  isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
@@ -1994,7 +2479,7 @@ function BusinessProvider({ children }) {
1994
2479
  zIndex: 199
1995
2480
  }
1996
2481
  ),
1997
- /* @__PURE__ */ jsx8(
2482
+ /* @__PURE__ */ jsx10(
1998
2483
  CEXBindModal,
1999
2484
  {
2000
2485
  isOpen: CEXIsOpen && (!!token && !!overview),
@@ -2003,8 +2488,7 @@ function BusinessProvider({ children }) {
2003
2488
  zIndex: 199
2004
2489
  }
2005
2490
  ),
2006
- /* @__PURE__ */ jsx8(HashPanel_default, { onClose: HashPanelClose, ...hashPanelProps }),
2007
- /* @__PURE__ */ jsx8(
2491
+ /* @__PURE__ */ jsx10(
2008
2492
  WalletModal,
2009
2493
  {
2010
2494
  isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
@@ -2019,14 +2503,14 @@ function BusinessProvider({ children }) {
2019
2503
  }
2020
2504
 
2021
2505
  // src/context/index.tsx
2022
- import { jsx as jsx9 } from "react/jsx-runtime";
2506
+ import { jsx as jsx11 } from "react/jsx-runtime";
2023
2507
  var Providers = ({ children }) => {
2024
- return /* @__PURE__ */ jsx9(ToastProvider, { children: /* @__PURE__ */ jsx9(ModalProvider, { children: /* @__PURE__ */ jsx9(BusinessProvider, { children }) }) });
2508
+ return /* @__PURE__ */ jsx11(ToastProvider, { children: /* @__PURE__ */ jsx11(ModalProvider, { children: /* @__PURE__ */ jsx11(BusinessProvider, { children }) }) });
2025
2509
  };
2026
2510
  var context_default = Providers;
2027
2511
 
2028
2512
  // src/hooks/useWalletInit.ts
2029
- import { useEffect as useEffect10, useRef as useRef2 } from "react";
2513
+ import { useEffect as useEffect11, useRef as useRef2 } from "react";
2030
2514
 
2031
2515
  // src/utils/wallet.ts
2032
2516
  var sendMessage = ({ method, data, resolve, reject, timeout }) => {
@@ -2060,10 +2544,10 @@ function useWalletInit({
2060
2544
  const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
2061
2545
  const { setWalletReady, walletReady } = useStore_default();
2062
2546
  const iframeReadyRef = useRef2(walletReady);
2063
- useEffect10(() => {
2547
+ useEffect11(() => {
2064
2548
  setWallet(config);
2065
2549
  }, [config]);
2066
- useEffect10(() => {
2550
+ useEffect11(() => {
2067
2551
  matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
2068
2552
  iframeReadyRef.current = walletReady;
2069
2553
  if (iframeReadyRef.current) {
@@ -2080,7 +2564,7 @@ function useWalletInit({
2080
2564
  onReady();
2081
2565
  }
2082
2566
  }, [walletReady]);
2083
- useEffect10(() => {
2567
+ useEffect11(() => {
2084
2568
  if (!endpoints.auth || !appid || !token || !config) {
2085
2569
  const existingIframe = getWalletIframe();
2086
2570
  if (existingIframe) {
@@ -2180,7 +2664,7 @@ function useWalletInit({
2180
2664
  }
2181
2665
  }
2182
2666
  }, [endpoints.auth, appid, token, config]);
2183
- useEffect10(() => {
2667
+ useEffect11(() => {
2184
2668
  const messageHandle = async (e) => {
2185
2669
  if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
2186
2670
  return;
@@ -2261,7 +2745,7 @@ function useWalletInit({
2261
2745
  }
2262
2746
 
2263
2747
  // src/hooks/useInit.tsx
2264
- import { useEffect as useEffect11, useRef as useRef3 } from "react";
2748
+ import { useEffect as useEffect12, useRef as useRef3 } from "react";
2265
2749
  function useInit({
2266
2750
  theme,
2267
2751
  appid,
@@ -2285,19 +2769,19 @@ function useInit({
2285
2769
  const searchParams = new URLSearchParams(window.location.search);
2286
2770
  const matchToken = searchParams.get("matchToken");
2287
2771
  const realEndpoints = endpoints || env_default.endpoints;
2288
- useEffect11(() => {
2772
+ useEffect12(() => {
2289
2773
  setTheme(theme);
2290
2774
  }, [theme]);
2291
- useEffect11(() => {
2775
+ useEffect12(() => {
2292
2776
  setAppid(appid);
2293
2777
  }, [appid]);
2294
- useEffect11(() => {
2778
+ useEffect12(() => {
2295
2779
  setEndpoints(realEndpoints);
2296
2780
  }, [realEndpoints]);
2297
- useEffect11(() => {
2781
+ useEffect12(() => {
2298
2782
  setLocale(locale || "en");
2299
2783
  }, [locale]);
2300
- useEffect11(() => {
2784
+ useEffect12(() => {
2301
2785
  if (matchToken) {
2302
2786
  const tokenData = JSON.parse(atob(matchToken));
2303
2787
  if (tokenData && tokenData.mid && tokenData.token) {
@@ -2308,7 +2792,7 @@ function useInit({
2308
2792
  }
2309
2793
  }
2310
2794
  }, [matchToken]);
2311
- useEffect11(() => {
2795
+ useEffect12(() => {
2312
2796
  const onLoginMessage = (event) => {
2313
2797
  const res = event.data;
2314
2798
  if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
@@ -2345,7 +2829,7 @@ function useInit({
2345
2829
  overviewLoadingRef.current = false;
2346
2830
  }
2347
2831
  };
2348
- useEffect11(() => {
2832
+ useEffect12(() => {
2349
2833
  if (token) {
2350
2834
  loadOverview();
2351
2835
  }
@@ -2428,7 +2912,35 @@ var en_default = {
2428
2912
  CEXBindApiSecretKey: "API Secret Key",
2429
2913
  CEXBindApiPassphrase: "API Passphrase",
2430
2914
  cancel: "Cancel",
2431
- walletLoading: "Wallet service is loading"
2915
+ walletLoading: "Wallet service is loading",
2916
+ tokenDetails: "Token Details",
2917
+ tokenAmountMin: "Amount must be greater than 0.",
2918
+ tokenAmountMax: "Insufficient balance.",
2919
+ tokenAddressError: "Invalid address.",
2920
+ amount: "Amount",
2921
+ amountPlaceholder: "Enter the Amount.",
2922
+ balance: "Balance",
2923
+ receiveTitle: "Received wallet address",
2924
+ receivePlaceholder: "Enter the Received wallet address.",
2925
+ next: "Next",
2926
+ copied: "Copied",
2927
+ receiveQrcode: "Receive by scanning the QR code",
2928
+ copyAddress: "Copy Address",
2929
+ tokenSmartContract: "Token Smart Contract",
2930
+ tokenSmartContractPlaceholder: "Enter the Token Smart Contract.",
2931
+ tokenSymbol: "Token Symbol",
2932
+ tokenSymbolPlaceholder: "Enter the Token Symbol.",
2933
+ tokenDecimals: "Decimals",
2934
+ tokenDecimalsPlaceholder: "Enter the Decimals.",
2935
+ import: "Import",
2936
+ receive: "Receive",
2937
+ customizedToken: "Customized Token",
2938
+ noMoreRecords: "There is no more Records here!",
2939
+ noRecords: "No Records here!",
2940
+ close: "Close",
2941
+ back: "Back",
2942
+ importSuccess: "Import Token Successfully",
2943
+ importFail: "Failed to import Token"
2432
2944
  };
2433
2945
 
2434
2946
  // src/i18n/zh.json
@@ -2480,7 +2992,35 @@ var zh_default = {
2480
2992
  CEXBindApiSecretKey: "API \u79D8\u94A5",
2481
2993
  CEXBindApiPassphrase: "API \u5BC6\u7801\u77ED\u8BED",
2482
2994
  cancel: "\u53D6\u6D88",
2483
- walletLoading: "\u94B1\u5305\u670D\u52A1\u6B63\u5728\u52A0\u8F7D"
2995
+ walletLoading: "\u94B1\u5305\u670D\u52A1\u6B63\u5728\u52A0\u8F7D",
2996
+ tokenDetails: "\u4EE3\u5E01\u8BE6\u60C5",
2997
+ tokenAmountMin: "\u91D1\u989D\u5FC5\u987B\u5927\u4E8E 0\u3002",
2998
+ tokenAmountMax: "\u4F59\u989D\u4E0D\u8DB3\u3002",
2999
+ tokenAddressError: "\u65E0\u6548\u7684\u5730\u5740\u3002",
3000
+ amount: "\u91D1\u989D",
3001
+ amountPlaceholder: "\u8BF7\u8F93\u5165\u91D1\u989D\u3002",
3002
+ balance: "\u4F59\u989D",
3003
+ receiveTitle: "\u63A5\u6536\u94B1\u5305\u5730\u5740",
3004
+ receivePlaceholder: "\u8BF7\u8F93\u5165\u63A5\u6536\u94B1\u5305\u5730\u5740\u3002",
3005
+ next: "\u4E0B\u4E00\u6B65",
3006
+ copied: "\u5DF2\u590D\u5236",
3007
+ receiveQrcode: "\u626B\u63CF QR \u7801\u63A5\u6536",
3008
+ copyAddress: "\u590D\u5236\u5730\u5740",
3009
+ tokenSmartContract: "\u4EE3\u5E01\u667A\u80FD\u5408\u7EA6",
3010
+ tokenSmartContractPlaceholder: "\u8BF7\u8F93\u5165\u4EE3\u5E01\u667A\u80FD\u5408\u7EA6\u3002",
3011
+ tokenSymbol: "\u4EE3\u5E01\u7B26\u53F7",
3012
+ tokenSymbolPlaceholder: "\u8BF7\u8F93\u5165\u4EE3\u5E01\u7B26\u53F7\u3002",
3013
+ tokenDecimals: "\u5C0F\u6570\u4F4D\u6570",
3014
+ tokenDecimalsPlaceholder: "\u8BF7\u8F93\u5165\u5C0F\u6570\u4F4D\u6570\u3002",
3015
+ import: "\u5BFC\u5165",
3016
+ receive: "\u63A5\u6536",
3017
+ customizedToken: "\u81EA\u5B9A\u4E49\u4EE3\u5E01",
3018
+ noMoreRecords: "\u6CA1\u6709\u66F4\u591A\u4EA4\u6613\u8BB0\u5F55\u4E86\uFF01",
3019
+ noRecords: "\u6682\u65E0\u4EA4\u6613\u8BB0\u5F55\uFF01",
3020
+ close: "\u5173\u95ED",
3021
+ back: "\u8FD4\u56DE",
3022
+ importSuccess: "\u6210\u529F\u5BFC\u5165\u4EE3\u5E01",
3023
+ importFail: "\u5BFC\u5165\u4EE3\u5E01\u5931\u8D25"
2484
3024
  };
2485
3025
 
2486
3026
  // src/i18n/tw.json
@@ -2532,7 +3072,35 @@ var tw_default = {
2532
3072
  CEXBindApiSecretKey: "API \u5BC6\u9470",
2533
3073
  CEXBindApiPassphrase: "API \u5BC6\u78BC\u77ED\u8A9E",
2534
3074
  cancel: "\u53D6\u6D88",
2535
- walletLoading: "\u9322\u5305\u670D\u52D9\u6B63\u5728\u52A0\u8F09"
3075
+ walletLoading: "\u9322\u5305\u670D\u52D9\u6B63\u5728\u52A0\u8F09",
3076
+ tokenDetails: "\u4EE3\u5E63\u8A73\u60C5",
3077
+ tokenAmountMin: "\u91D1\u984D\u5FC5\u9808\u5927\u65BC 0\u3002",
3078
+ tokenAmountMax: "\u9918\u984D\u4E0D\u8DB3\u3002",
3079
+ tokenAddressError: "\u7121\u6548\u7684\u5730\u5740\u3002",
3080
+ amount: "\u91D1\u984D",
3081
+ amountPlaceholder: "\u8ACB\u8F38\u5165\u91D1\u984D\u3002",
3082
+ balance: "\u9918\u984D",
3083
+ receiveTitle: "\u63A5\u6536\u9322\u5305\u5730\u5740",
3084
+ receivePlaceholder: "\u8ACB\u8F38\u5165\u63A5\u6536\u9322\u5305\u5730\u5740\u3002",
3085
+ next: "\u4E0B\u4E00\u6B65",
3086
+ copied: "\u5DF2\u8907\u88FD",
3087
+ receiveQrcode: "\u6383\u63CF QR \u78BC\u63A5\u6536",
3088
+ copyAddress: "\u8907\u88FD\u5730\u5740",
3089
+ tokenSmartContract: "\u4EE3\u5E63\u667A\u80FD\u5408\u7D04",
3090
+ tokenSmartContractPlaceholder: "\u8ACB\u8F38\u5165\u4EE3\u5E63\u667A\u80FD\u5408\u7D04\u3002",
3091
+ tokenSymbol: "\u4EE3\u5E63\u7B26\u865F",
3092
+ tokenSymbolPlaceholder: "\u8ACB\u8F38\u5165\u4EE3\u5E63\u7B26\u865F\u3002",
3093
+ tokenDecimals: "\u5C0F\u6578\u4F4D\u6578",
3094
+ tokenDecimalsPlaceholder: "\u8ACB\u8F38\u5165\u5C0F\u6578\u4F4D\u6578\u3002",
3095
+ import: "\u5C0E\u5165",
3096
+ receive: "\u63A5\u6536",
3097
+ customizedToken: "\u81EA\u5B9A\u7FA9\u4EE3\u5E63",
3098
+ noMoreRecords: "\u6C92\u6709\u66F4\u591A\u4EA4\u6613\u8A18\u9304\u4E86\uFF01",
3099
+ noRecords: "\u66AB\u7121\u4EA4\u6613\u8A18\u9304\uFF01",
3100
+ close: "\u95DC\u9589",
3101
+ back: "\u8FD4\u56DE",
3102
+ importSuccess: "\u6210\u529F\u532F\u5165\u4EE3\u5E63",
3103
+ importFail: "\u532F\u5165\u4EE3\u5E63\u5931\u6557"
2536
3104
  };
2537
3105
 
2538
3106
  // src/i18n/fr.json
@@ -2584,7 +3152,35 @@ var fr_default = {
2584
3152
  CEXBindApiSecretKey: "Cl\xE9 Secr\xE8te API",
2585
3153
  CEXBindApiPassphrase: "Phrase secr\xE8te API",
2586
3154
  cancel: "Annuler",
2587
- walletLoading: "Le service de portefeuille est en cours de chargement"
3155
+ walletLoading: "Le service de portefeuille est en cours de chargement",
3156
+ tokenDetails: "D\xE9tails du Token",
3157
+ tokenAmountMin: "Le montant doit \xEAtre sup\xE9rieur \xE0 0.",
3158
+ tokenAmountMax: "Solde insuffisant.",
3159
+ tokenAddressError: "Adresse invalide.",
3160
+ amount: "Montant",
3161
+ amountPlaceholder: "Entrez le montant.",
3162
+ balance: "Solde",
3163
+ receiveTitle: "Adresse du portefeuille re\xE7u",
3164
+ receivePlaceholder: "Entrez l'adresse du portefeuille re\xE7u.",
3165
+ next: "Suivant",
3166
+ copied: "Copi\xE9",
3167
+ receiveQrcode: "Recevoir en scannant le code QR",
3168
+ copyAddress: "Copier l'adresse",
3169
+ tokenSmartContract: "Contrat intelligent du Token",
3170
+ tokenSmartContractPlaceholder: "Entrez le contrat intelligent du Token.",
3171
+ tokenSymbol: "Symbole du Token",
3172
+ tokenSymbolPlaceholder: "Entrez le symbole du Token.",
3173
+ tokenDecimals: "D\xE9cimales",
3174
+ tokenDecimalsPlaceholder: "Entrez les d\xE9cimales.",
3175
+ import: "Importer",
3176
+ receive: "Recevoir",
3177
+ customizedToken: "Token personnalis\xE9",
3178
+ noMoreRecords: "Il n'y a plus d'enregistrements ici !",
3179
+ noRecords: "Il n'y a aucun enregistrement ici !",
3180
+ close: "Fermer",
3181
+ back: "Retour",
3182
+ importSuccess: "Importation du jeton r\xE9ussie",
3183
+ importFail: "\xC9chec de l'importation du jeton"
2588
3184
  };
2589
3185
 
2590
3186
  // src/i18n/ja.json
@@ -2636,7 +3232,35 @@ var ja_default = {
2636
3232
  CEXBindApiSecretKey: "API \u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30AD\u30FC",
2637
3233
  CEXBindApiPassphrase: "API \u30D1\u30B9\u30D5\u30EC\u30FC\u30BA",
2638
3234
  cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
2639
- walletLoading: "\u30A6\u30A9\u30EC\u30C3\u30C8\u30B5\u30FC\u30D3\u30B9\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059"
3235
+ walletLoading: "\u30A6\u30A9\u30EC\u30C3\u30C8\u30B5\u30FC\u30D3\u30B9\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059",
3236
+ tokenDetails: "\u30C8\u30FC\u30AF\u30F3\u306E\u8A73\u7D30",
3237
+ tokenAmountMin: "\u91D1\u984D\u306F0\u3088\u308A\u5927\u304D\u304F\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002",
3238
+ tokenAmountMax: "\u6B8B\u9AD8\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002",
3239
+ tokenAddressError: "\u7121\u52B9\u306A\u30A2\u30C9\u30EC\u30B9\u3067\u3059\u3002",
3240
+ amount: "\u91D1\u984D",
3241
+ amountPlaceholder: "\u91D1\u984D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3242
+ balance: "\u6B8B\u9AD8",
3243
+ receiveTitle: "\u53D7\u53D6\u30A6\u30A9\u30EC\u30C3\u30C8\u30A2\u30C9\u30EC\u30B9",
3244
+ receivePlaceholder: "\u53D7\u53D6\u30A6\u30A9\u30EC\u30C3\u30C8\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3245
+ next: "\u6B21\u3078",
3246
+ copied: "\u30B3\u30D4\u30FC\u3057\u307E\u3057\u305F",
3247
+ receiveQrcode: "QR\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u53D7\u3051\u53D6\u308B",
3248
+ copyAddress: "\u30A2\u30C9\u30EC\u30B9\u3092\u30B3\u30D4\u30FC",
3249
+ tokenSmartContract: "\u30C8\u30FC\u30AF\u30F3\u306E\u30B9\u30DE\u30FC\u30C8\u30B3\u30F3\u30C8\u30E9\u30AF\u30C8",
3250
+ tokenSmartContractPlaceholder: "\u30C8\u30FC\u30AF\u30F3\u306E\u30B9\u30DE\u30FC\u30C8\u30B3\u30F3\u30C8\u30E9\u30AF\u30C8\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3251
+ tokenSymbol: "\u30C8\u30FC\u30AF\u30F3\u30B7\u30F3\u30DC\u30EB",
3252
+ tokenSymbolPlaceholder: "\u30C8\u30FC\u30AF\u30F3\u30B7\u30F3\u30DC\u30EB\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3253
+ tokenDecimals: "\u5C0F\u6570\u70B9",
3254
+ tokenDecimalsPlaceholder: "\u5C0F\u6570\u70B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
3255
+ import: "\u30A4\u30F3\u30DD\u30FC\u30C8",
3256
+ receive: "\u53D7\u3051\u53D6\u308B",
3257
+ customizedToken: "\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u30C8\u30FC\u30AF\u30F3",
3258
+ noMoreRecords: "\u3053\u308C\u4EE5\u4E0A\u306E\u8A18\u9332\u306F\u3042\u308A\u307E\u305B\u3093\uFF01",
3259
+ noRecords: "\u8A18\u9332\u304C\u3042\u308A\u307E\u305B\u3093\uFF01",
3260
+ close: "\u9589\u3058\u308B",
3261
+ back: "\u623B\u308B",
3262
+ importSuccess: "\u30C8\u30FC\u30AF\u30F3\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u6210\u529F\u3057\u307E\u3057\u305F",
3263
+ importFail: "\u30C8\u30FC\u30AF\u30F3\u306E\u30A4\u30F3\u30DD\u30FC\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F"
2640
3264
  };
2641
3265
 
2642
3266
  // src/i18n/ko.json
@@ -2688,7 +3312,35 @@ var ko_default = {
2688
3312
  CEXBindApiSecretKey: "API \uBE44\uBC00 \uD0A4",
2689
3313
  CEXBindApiPassphrase: "API \uC554\uD638 \uAD6C\uBB38",
2690
3314
  cancel: "\uCDE8\uC18C",
2691
- walletLoading: "\uC9C0\uAC11 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uB294 \uC911"
3315
+ walletLoading: "\uC9C0\uAC11 \uC11C\uBE44\uC2A4\uB97C \uBD88\uB7EC\uC624\uB294 \uC911",
3316
+ tokenDetails: "\uD1A0\uD070 \uC0C1\uC138\uC815\uBCF4",
3317
+ tokenAmountMin: "\uAE08\uC561\uC740 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.",
3318
+ tokenAmountMax: "\uC794\uC561\uC774 \uBD80\uC871\uD569\uB2C8\uB2E4.",
3319
+ tokenAddressError: "\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 \uC8FC\uC18C\uC785\uB2C8\uB2E4.",
3320
+ amount: "\uAE08\uC561",
3321
+ amountPlaceholder: "\uAE08\uC561\uC744 \uC785\uB825\uD558\uC138\uC694.",
3322
+ balance: "\uC794\uC561",
3323
+ receiveTitle: "\uC218\uC2E0 \uC9C0\uAC11 \uC8FC\uC18C",
3324
+ receivePlaceholder: "\uC218\uC2E0 \uC9C0\uAC11 \uC8FC\uC18C\uB97C \uC785\uB825\uD558\uC138\uC694.",
3325
+ next: "\uB2E4\uC74C",
3326
+ copied: "\uBCF5\uC0AC\uB428",
3327
+ receiveQrcode: "QR \uCF54\uB4DC\uB97C \uC2A4\uCE94\uD558\uC5EC \uBC1B\uAE30",
3328
+ copyAddress: "\uC8FC\uC18C \uBCF5\uC0AC",
3329
+ tokenSmartContract: "\uD1A0\uD070 \uC2A4\uB9C8\uD2B8 \uCEE8\uD2B8\uB799\uD2B8",
3330
+ tokenSmartContractPlaceholder: "\uD1A0\uD070 \uC2A4\uB9C8\uD2B8 \uCEE8\uD2B8\uB799\uD2B8\uB97C \uC785\uB825\uD558\uC138\uC694.",
3331
+ tokenSymbol: "\uD1A0\uD070 \uC2EC\uBCFC",
3332
+ tokenSymbolPlaceholder: "\uD1A0\uD070 \uC2EC\uBCFC\uC744 \uC785\uB825\uD558\uC138\uC694.",
3333
+ tokenDecimals: "\uC18C\uC218\uC810 \uC790\uB9AC\uC218",
3334
+ tokenDecimalsPlaceholder: "\uC18C\uC218\uC810 \uC790\uB9AC\uC218\uB97C \uC785\uB825\uD558\uC138\uC694.",
3335
+ import: "\uAC00\uC838\uC624\uAE30",
3336
+ receive: "\uBC1B\uAE30",
3337
+ customizedToken: "\uB9DE\uCDA4\uD615 \uD1A0\uD070",
3338
+ noMoreRecords: "\uC5EC\uAE30\uC5D0 \uB354 \uC774\uC0C1 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4!",
3339
+ noRecords: "\uC5EC\uAE30\uC5D0 \uAE30\uB85D\uC774 \uC5C6\uC2B5\uB2C8\uB2E4!",
3340
+ close: "\uB2EB\uAE30",
3341
+ back: "\uB4A4\uB85C",
3342
+ importSuccess: "\uD1A0\uD070\uC744 \uC131\uACF5\uC801\uC73C\uB85C \uAC00\uC838\uC654\uC2B5\uB2C8\uB2E4",
3343
+ importFail: "\uD1A0\uD070 \uAC00\uC838\uC624\uAE30\uC5D0 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4"
2692
3344
  };
2693
3345
 
2694
3346
  // src/i18n/vi.json
@@ -2740,7 +3392,35 @@ var vi_default = {
2740
3392
  CEXBindApiSecretKey: "Kh\xF3a b\xED m\u1EADt API",
2741
3393
  CEXBindApiPassphrase: "C\u1EE5m m\u1EADt kh\u1EA9u API",
2742
3394
  cancel: "H\u1EE7y",
2743
- walletLoading: "D\u1ECBch v\u1EE5 v\xED \u0111ang t\u1EA3i"
3395
+ walletLoading: "D\u1ECBch v\u1EE5 v\xED \u0111ang t\u1EA3i",
3396
+ tokenDetails: "Chi ti\u1EBFt Token",
3397
+ tokenAmountMin: "S\u1ED1 ti\u1EC1n ph\u1EA3i l\u1EDBn h\u01A1n 0.",
3398
+ tokenAmountMax: "S\u1ED1 d\u01B0 kh\xF4ng \u0111\u1EE7.",
3399
+ tokenAddressError: "\u0110\u1ECBa ch\u1EC9 kh\xF4ng h\u1EE3p l\u1EC7.",
3400
+ amount: "S\u1ED1 l\u01B0\u1EE3ng",
3401
+ amountPlaceholder: "Nh\u1EADp s\u1ED1 l\u01B0\u1EE3ng.",
3402
+ balance: "S\u1ED1 d\u01B0",
3403
+ receiveTitle: "\u0110\u1ECBa ch\u1EC9 v\xED nh\u1EADn",
3404
+ receivePlaceholder: "Nh\u1EADp \u0111\u1ECBa ch\u1EC9 v\xED nh\u1EADn.",
3405
+ next: "Ti\u1EBFp theo",
3406
+ copied: "\u0110\xE3 sao ch\xE9p",
3407
+ receiveQrcode: "Nh\u1EADn b\u1EB1ng c\xE1ch qu\xE9t m\xE3 QR",
3408
+ copyAddress: "Sao ch\xE9p \u0111\u1ECBa ch\u1EC9",
3409
+ tokenSmartContract: "H\u1EE3p \u0111\u1ED3ng th\xF4ng minh Token",
3410
+ tokenSmartContractPlaceholder: "Nh\u1EADp h\u1EE3p \u0111\u1ED3ng th\xF4ng minh Token.",
3411
+ tokenSymbol: "K\xFD hi\u1EC7u Token",
3412
+ tokenSymbolPlaceholder: "Nh\u1EADp k\xFD hi\u1EC7u Token.",
3413
+ tokenDecimals: "S\u1ED1 th\u1EADp ph\xE2n",
3414
+ tokenDecimalsPlaceholder: "Nh\u1EADp s\u1ED1 th\u1EADp ph\xE2n.",
3415
+ import: "Nh\u1EADp",
3416
+ receive: "Nh\u1EADn",
3417
+ customizedToken: "Token t\xF9y ch\u1EC9nh",
3418
+ noMoreRecords: "Kh\xF4ng c\xF2n b\u1EA3n ghi n\xE0o \u1EDF \u0111\xE2y!",
3419
+ noRecords: "Kh\xF4ng c\xF3 b\u1EA3n ghi n\xE0o \u1EDF \u0111\xE2y!",
3420
+ close: "\u0110\xF3ng",
3421
+ back: "Quay l\u1EA1i",
3422
+ importSuccess: "Nh\u1EADp Token th\xE0nh c\xF4ng",
3423
+ importFail: "Kh\xF4ng th\u1EC3 nh\u1EADp Token"
2744
3424
  };
2745
3425
 
2746
3426
  // src/i18n/es.json
@@ -2792,7 +3472,35 @@ var es_default = {
2792
3472
  CEXBindApiSecretKey: "Clave Secreta API",
2793
3473
  CEXBindApiPassphrase: "Frase de contrase\xF1a API",
2794
3474
  cancel: "Cancelar",
2795
- walletLoading: "El servicio de cartera se est\xE1 cargando"
3475
+ walletLoading: "El servicio de cartera se est\xE1 cargando",
3476
+ tokenDetails: "Detalles del Token",
3477
+ tokenAmountMin: "La cantidad debe ser mayor que 0.",
3478
+ tokenAmountMax: "Saldo insuficiente.",
3479
+ tokenAddressError: "Direcci\xF3n no v\xE1lida.",
3480
+ amount: "Cantidad",
3481
+ amountPlaceholder: "Ingrese la cantidad.",
3482
+ balance: "Saldo",
3483
+ receiveTitle: "Direcci\xF3n de billetera recibida",
3484
+ receivePlaceholder: "Ingrese la direcci\xF3n de la billetera recibida.",
3485
+ next: "Siguiente",
3486
+ copied: "Copiado",
3487
+ receiveQrcode: "Recibir escaneando el c\xF3digo QR",
3488
+ copyAddress: "Copiar direcci\xF3n",
3489
+ tokenSmartContract: "Contrato inteligente del Token",
3490
+ tokenSmartContractPlaceholder: "Ingrese el contrato inteligente del Token.",
3491
+ tokenSymbol: "S\xEDmbolo del Token",
3492
+ tokenSymbolPlaceholder: "Ingrese el s\xEDmbolo del Token.",
3493
+ tokenDecimals: "Decimales",
3494
+ tokenDecimalsPlaceholder: "Ingrese los decimales.",
3495
+ import: "Importar",
3496
+ receive: "Recibir",
3497
+ customizedToken: "Token personalizado",
3498
+ noMoreRecords: "\xA1No hay m\xE1s registros aqu\xED!",
3499
+ noRecords: "\xA1No hay registros aqu\xED!",
3500
+ close: "Cerrar",
3501
+ back: "Atr\xE1s",
3502
+ importSuccess: "Token importado con \xE9xito",
3503
+ importFail: "Error al importar el token"
2796
3504
  };
2797
3505
 
2798
3506
  // src/i18n/pt.json
@@ -2844,7 +3552,35 @@ var pt_default = {
2844
3552
  CEXBindApiSecretKey: "Chave Secreta API",
2845
3553
  CEXBindApiPassphrase: "Senha de API",
2846
3554
  cancel: "Cancelar",
2847
- walletLoading: "O servi\xE7o de carteira est\xE1 carregando"
3555
+ walletLoading: "O servi\xE7o de carteira est\xE1 carregando",
3556
+ tokenDetails: "Detalhes do Token",
3557
+ tokenAmountMin: "O valor deve ser maior que 0.",
3558
+ tokenAmountMax: "Saldo insuficiente.",
3559
+ tokenAddressError: "Endere\xE7o inv\xE1lido.",
3560
+ amount: "Quantidade",
3561
+ amountPlaceholder: "Digite a quantidade.",
3562
+ balance: "Saldo",
3563
+ receiveTitle: "Endere\xE7o da carteira recebida",
3564
+ receivePlaceholder: "Digite o endere\xE7o da carteira recebida.",
3565
+ next: "Pr\xF3ximo",
3566
+ copied: "Copiado",
3567
+ receiveQrcode: "Receber escaneando o c\xF3digo QR",
3568
+ copyAddress: "Copiar endere\xE7o",
3569
+ tokenSmartContract: "Contrato inteligente do Token",
3570
+ tokenSmartContractPlaceholder: "Digite o contrato inteligente do Token.",
3571
+ tokenSymbol: "S\xEDmbolo do Token",
3572
+ tokenSymbolPlaceholder: "Digite o s\xEDmbolo do Token.",
3573
+ tokenDecimals: "Decimais",
3574
+ tokenDecimalsPlaceholder: "Digite os decimais.",
3575
+ import: "Importar",
3576
+ receive: "Receber",
3577
+ customizedToken: "Token personalizado",
3578
+ noMoreRecords: "N\xE3o h\xE1 mais registros aqui!",
3579
+ noRecords: "N\xE3o h\xE1 registros aqui!",
3580
+ close: "Fechar",
3581
+ back: "Voltar",
3582
+ importSuccess: "Token importado com sucesso",
3583
+ importFail: "Falha ao importar o token"
2848
3584
  };
2849
3585
 
2850
3586
  // src/i18n/index.ts
@@ -2861,7 +3597,7 @@ var messages = {
2861
3597
  };
2862
3598
 
2863
3599
  // src/MatchContext.tsx
2864
- import { jsx as jsx10 } from "react/jsx-runtime";
3600
+ import { jsx as jsx12 } from "react/jsx-runtime";
2865
3601
  var queryClient = new QueryClient();
2866
3602
  var MatchContext = createContext3(void 0);
2867
3603
  var MatchProvider = ({
@@ -2883,7 +3619,7 @@ var MatchProvider = ({
2883
3619
  useWalletInit({
2884
3620
  config: wallet
2885
3621
  });
2886
- return /* @__PURE__ */ jsx10(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx10(
3622
+ return /* @__PURE__ */ jsx12(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx12(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx12(
2887
3623
  MatchContext.Provider,
2888
3624
  {
2889
3625
  value: {
@@ -2894,7 +3630,7 @@ var MatchProvider = ({
2894
3630
  theme,
2895
3631
  locale: realLocale
2896
3632
  },
2897
- children: /* @__PURE__ */ jsx10(context_default, { children })
3633
+ children: /* @__PURE__ */ jsx12(context_default, { children })
2898
3634
  }
2899
3635
  ) }) });
2900
3636
  };
@@ -2916,7 +3652,7 @@ function useUserInfo() {
2916
3652
  logout: logoutStore,
2917
3653
  setOverview,
2918
3654
  overview,
2919
- address: address2,
3655
+ address,
2920
3656
  endpoints,
2921
3657
  locale,
2922
3658
  refreshOverview
@@ -2928,7 +3664,7 @@ function useUserInfo() {
2928
3664
  const { open: BTCOpen } = useBTCModalStore();
2929
3665
  const { open: CEXBindOpen } = useCEXBindModalStore();
2930
3666
  const walletModalStore = useWalletModalStore();
2931
- const isLogin = useMemo6(() => !!token && !!overview, [token, overview]);
3667
+ const isLogin = useMemo7(() => !!token && !!overview, [token, overview]);
2932
3668
  const logout = async () => {
2933
3669
  try {
2934
3670
  await toLogoutApi();
@@ -2956,11 +3692,11 @@ function useUserInfo() {
2956
3692
  return loginByMethod("google");
2957
3693
  };
2958
3694
  const loginByWallet = async () => {
2959
- return window.open(`${endpoints.auth}login/wallet?appid=${appid}`);
3695
+ return window.open(`${endpoints.auth}login/wallet?appid=${appid}&locale=${locale}`);
2960
3696
  };
2961
3697
  const loginByTelegram = async () => {
2962
3698
  return window.open(
2963
- `${endpoints.auth}login/telegram?appid=${appid}`,
3699
+ `${endpoints.auth}login/telegram?appid=${appid}&locale=${locale}`,
2964
3700
  // Replace with the actual authorization URL
2965
3701
  "authWindow",
2966
3702
  "width=800,height=600"
@@ -2971,7 +3707,7 @@ function useUserInfo() {
2971
3707
  case "wallet":
2972
3708
  return walletModalStore.open("login", extra?.methods);
2973
3709
  case "evm":
2974
- return window.open(`${endpoints.auth}login/wallet?appid=${appid}`);
3710
+ return window.open(`${endpoints.auth}login/wallet?appid=${appid}&locale=${locale}`);
2975
3711
  case "sol":
2976
3712
  return SOLOpen("login");
2977
3713
  case "tron":
@@ -3032,14 +3768,14 @@ function useUserInfo() {
3032
3768
  if (!token) {
3033
3769
  throw new Error("You must login first");
3034
3770
  }
3035
- return window.open(`${endpoints.auth}bind/wallet?appid=${appid}&st=` + encodeURIComponent(encodeBase64(token)));
3771
+ return window.open(`${endpoints.auth}bind/wallet?appid=${appid}&locale=${locale}&st=` + encodeURIComponent(encodeBase64(token)));
3036
3772
  };
3037
3773
  const bindTelegram = async () => {
3038
3774
  if (!token) {
3039
3775
  throw new Error("You must login first");
3040
3776
  }
3041
3777
  const authWindow = window.open(
3042
- `${endpoints.auth}bind/telegram?appid=${appid}&st=` + encodeURIComponent(encodeBase64(token)),
3778
+ `${endpoints.auth}bind/telegram?appid=${appid}&locale=${locale}&st=` + encodeURIComponent(encodeBase64(token)),
3043
3779
  // Replace with the actual authorization URL
3044
3780
  "authWindow",
3045
3781
  "width=800,height=600"
@@ -3060,7 +3796,7 @@ function useUserInfo() {
3060
3796
  case "wallet":
3061
3797
  return walletModalStore.open("bind", extra?.methods);
3062
3798
  case "evm":
3063
- return window.open(`${endpoints.auth}bind/wallet?appid=${appid}&st=` + encodeURIComponent(encodeBase64(token)));
3799
+ return window.open(`${endpoints.auth}bind/wallet?appid=${appid}&locale=${locale}&st=` + encodeURIComponent(encodeBase64(token)));
3064
3800
  case "sol":
3065
3801
  return SOLOpen("bind");
3066
3802
  case "tron":
@@ -3144,7 +3880,7 @@ function useUserInfo() {
3144
3880
  token,
3145
3881
  mid,
3146
3882
  did,
3147
- address: address2,
3883
+ address,
3148
3884
  isLogin,
3149
3885
  logout,
3150
3886
  getLoginEmailCode,
@@ -3160,24 +3896,18 @@ function useUserInfo() {
3160
3896
  }
3161
3897
 
3162
3898
  // src/components/EmailModal/StepVerify.tsx
3163
- import { useEffect as useEffect13, useMemo as useMemo7, useRef as useRef4, useState as useState12 } from "react";
3164
-
3165
- // src/config/index.tsx
3166
- var EMAIL_INTERVAL = 60;
3167
- var EMAIL_CODE_LENGTH = 6;
3168
-
3169
- // src/components/EmailModal/StepVerify.tsx
3170
- import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
3171
- import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
3899
+ import { useEffect as useEffect14, useMemo as useMemo8, useRef as useRef4, useState as useState13 } from "react";
3900
+ import { FormattedMessage as FormattedMessage5, useIntl as useIntl5 } from "react-intl";
3901
+ import { jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
3172
3902
  function StepVerify(props) {
3173
- const intl = useIntl3();
3903
+ const intl = useIntl5();
3174
3904
  const { getLoginEmailCode, loginByEmail } = useUserInfo();
3175
- const [error, setError] = useState12("");
3176
- const [code, setCode] = useState12("");
3177
- const [sending, setSending] = useState12(false);
3178
- const [submitting, setSubmitting] = useState12(false);
3905
+ const [error, setError] = useState13("");
3906
+ const [code, setCode] = useState13("");
3907
+ const [sending, setSending] = useState13(false);
3908
+ const [submitting, setSubmitting] = useState13(false);
3179
3909
  const sendTimeRef = useRef4(0);
3180
- const [sendBtnText, setSendBtnText] = useState12(intl.formatMessage({
3910
+ const [sendBtnText, setSendBtnText] = useState13(intl.formatMessage({
3181
3911
  id: "send"
3182
3912
  }));
3183
3913
  const intervalTime = EMAIL_INTERVAL;
@@ -3213,7 +3943,7 @@ function StepVerify(props) {
3213
3943
  setSending(false);
3214
3944
  }
3215
3945
  };
3216
- useEffect13(() => {
3946
+ useEffect14(() => {
3217
3947
  onSend();
3218
3948
  return () => {
3219
3949
  if (intervalRef.current) {
@@ -3221,7 +3951,7 @@ function StepVerify(props) {
3221
3951
  }
3222
3952
  };
3223
3953
  }, []);
3224
- const canContinue = useMemo7(() => {
3954
+ const canContinue = useMemo8(() => {
3225
3955
  return code.length === codeLength;
3226
3956
  }, [code]);
3227
3957
  const onContinue = async () => {
@@ -3245,17 +3975,17 @@ function StepVerify(props) {
3245
3975
  setSubmitting(false);
3246
3976
  }
3247
3977
  };
3248
- return /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-box", children: [
3249
- /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header", children: [
3250
- /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx11(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
3251
- /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header-content", children: [
3252
- /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-value", children: props.email }),
3253
- /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "sendEmailTips" }) })
3978
+ return /* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-box", children: [
3979
+ /* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-header", children: [
3980
+ /* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx13(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
3981
+ /* @__PURE__ */ jsxs9("div", { className: "matchid-email-verify-header-content", children: [
3982
+ /* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-value", children: props.email }),
3983
+ /* @__PURE__ */ jsx13("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx13(FormattedMessage5, { id: "sendEmailTips" }) })
3254
3984
  ] })
3255
3985
  ] }),
3256
- /* @__PURE__ */ jsx11(Field, { label: intl.formatMessage({
3986
+ /* @__PURE__ */ jsx13(Field, { label: intl.formatMessage({
3257
3987
  id: "verificationCode"
3258
- }), error, children: /* @__PURE__ */ jsx11(
3988
+ }), error, children: /* @__PURE__ */ jsx13(
3259
3989
  Input,
3260
3990
  {
3261
3991
  placeholder: intl.formatMessage({
@@ -3265,7 +3995,7 @@ function StepVerify(props) {
3265
3995
  maxLength: codeLength,
3266
3996
  onChange: (e) => setCode(e.target.value),
3267
3997
  value: code,
3268
- after: /* @__PURE__ */ jsx11(
3998
+ after: /* @__PURE__ */ jsx13(
3269
3999
  Button,
3270
4000
  {
3271
4001
  highlight: true,
@@ -3284,13 +4014,13 @@ function StepVerify(props) {
3284
4014
  )
3285
4015
  }
3286
4016
  ) }),
3287
- /* @__PURE__ */ jsx11(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "continue" }) })
4017
+ /* @__PURE__ */ jsx13(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx13(FormattedMessage5, { id: "continue" }) })
3288
4018
  ] });
3289
4019
  }
3290
4020
 
3291
4021
  // src/components/EmailModal/index.tsx
3292
- import { useIntl as useIntl4 } from "react-intl";
3293
- import { jsx as jsx12 } from "react/jsx-runtime";
4022
+ import { useIntl as useIntl6 } from "react-intl";
4023
+ import { jsx as jsx14 } from "react/jsx-runtime";
3294
4024
  function EmailModal({
3295
4025
  isOpen = false,
3296
4026
  width = 480,
@@ -3298,16 +4028,16 @@ function EmailModal({
3298
4028
  onBack,
3299
4029
  onLogin
3300
4030
  }) {
3301
- const [step, setStep] = useState13("input");
3302
- const [emailVal, setEmailVal] = useState13("");
3303
- const intl = useIntl4();
3304
- useEffect14(() => {
4031
+ const [step, setStep] = useState14("input");
4032
+ const [emailVal, setEmailVal] = useState14("");
4033
+ const intl = useIntl6();
4034
+ useEffect15(() => {
3305
4035
  if (!isOpen) {
3306
4036
  setStep("input");
3307
4037
  setEmailVal("");
3308
4038
  }
3309
4039
  }, [isOpen]);
3310
- return /* @__PURE__ */ jsx12(
4040
+ return /* @__PURE__ */ jsx14(
3311
4041
  ModalWithHeader,
3312
4042
  {
3313
4043
  isOpen,
@@ -3317,22 +4047,22 @@ function EmailModal({
3317
4047
  id: "email"
3318
4048
  }),
3319
4049
  onBack: step == "verify" ? () => setStep("input") : onBack,
3320
- children: step === "input" ? /* @__PURE__ */ jsx12(StepEmail, { email: emailVal, onContinue: (email) => {
4050
+ children: step === "input" ? /* @__PURE__ */ jsx14(StepEmail, { email: emailVal, onContinue: (email) => {
3321
4051
  setEmailVal(email);
3322
4052
  setStep("verify");
3323
- } }) : /* @__PURE__ */ jsx12(StepVerify, { email: emailVal, onSuccess: onLogin })
4053
+ } }) : /* @__PURE__ */ jsx14(StepVerify, { email: emailVal, onSuccess: onLogin })
3324
4054
  }
3325
4055
  );
3326
4056
  }
3327
4057
 
3328
4058
  // src/components/LoginBox/index.tsx
3329
- import { useMemo as useMemo8, useState as useState14 } from "react";
3330
- import { FormattedMessage as FormattedMessage4, useIntl as useIntl5 } from "react-intl";
4059
+ import { useMemo as useMemo9, useState as useState15 } from "react";
4060
+ import { FormattedMessage as FormattedMessage6, useIntl as useIntl7 } from "react-intl";
3331
4061
 
3332
4062
  // src/hooks/useAppConfig.ts
3333
- import { useQuery as useQuery4 } from "@tanstack/react-query";
4063
+ import { useQuery as useQuery6 } from "@tanstack/react-query";
3334
4064
  function useAppConfig() {
3335
- const query = useQuery4({
4065
+ const query = useQuery6({
3336
4066
  queryKey: ["appConfig"],
3337
4067
  queryFn: async () => {
3338
4068
  const res = await getAppConfigApi();
@@ -3350,7 +4080,7 @@ function useAppConfig() {
3350
4080
  }
3351
4081
 
3352
4082
  // src/components/LoginBox/index.tsx
3353
- import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
4083
+ import { Fragment as Fragment2, jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
3354
4084
  var RecommendItem = ({
3355
4085
  icon,
3356
4086
  name,
@@ -3359,20 +4089,20 @@ var RecommendItem = ({
3359
4089
  children,
3360
4090
  footer
3361
4091
  }) => {
3362
- return /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method", children: [
3363
- /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-item", onClick, children: [
3364
- /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-content", children: [
3365
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-method-icon", children: icon }),
3366
- /* @__PURE__ */ jsx13("span", { className: "matchid-login-recommend-method-name", children: name })
4092
+ return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method", children: [
4093
+ /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method-item", onClick, children: [
4094
+ /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-method-content", children: [
4095
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-method-icon", children: icon }),
4096
+ /* @__PURE__ */ jsx15("span", { className: "matchid-login-recommend-method-name", children: name })
3367
4097
  ] }),
3368
- footer ? footer : children ? /* @__PURE__ */ jsx13(
4098
+ footer ? footer : children ? /* @__PURE__ */ jsx15(
3369
4099
  ArrowDownIcon,
3370
4100
  {
3371
4101
  className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
3372
4102
  size: 20,
3373
4103
  color: "var(--matchid-arrow-color)"
3374
4104
  }
3375
- ) : /* @__PURE__ */ jsx13(
4105
+ ) : /* @__PURE__ */ jsx15(
3376
4106
  ArrowRightIcon,
3377
4107
  {
3378
4108
  className: "matchid-login-recommend-method-arrow",
@@ -3381,7 +4111,7 @@ var RecommendItem = ({
3381
4111
  }
3382
4112
  )
3383
4113
  ] }),
3384
- children && /* @__PURE__ */ jsx13(
4114
+ children && /* @__PURE__ */ jsx15(
3385
4115
  "div",
3386
4116
  {
3387
4117
  className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
@@ -3397,7 +4127,7 @@ function LoginBox({
3397
4127
  inModal = false
3398
4128
  }) {
3399
4129
  const config = useAppConfig();
3400
- const methodConfig = useMemo8(() => {
4130
+ const methodConfig = useMemo9(() => {
3401
4131
  if (recommendMethods || methods || walletMethods) {
3402
4132
  return {
3403
4133
  recommendMethods: recommendMethods ? recommendMethods : walletMethods ? ["wallet"] : [],
@@ -3439,82 +4169,82 @@ function LoginBox({
3439
4169
  walletMethods: walletMethodList
3440
4170
  };
3441
4171
  }, [config.platform, recommendMethods, methods, walletMethods]);
3442
- const [emailOpen, setEmailOpen] = useState14(false);
4172
+ const [emailOpen, setEmailOpen] = useState15(false);
3443
4173
  const { login } = useUserInfo();
3444
- const [showWallet, setShowWallet] = useState14(false);
3445
- const intl = useIntl5();
4174
+ const [showWallet, setShowWallet] = useState15(false);
4175
+ const intl = useIntl7();
3446
4176
  const isDownMd = useDownMd();
3447
4177
  const methodMap = {
3448
4178
  wallet: {
3449
- icon: /* @__PURE__ */ jsx13(WalletIcon, { size: isDownMd ? 36 : 40 }),
4179
+ icon: /* @__PURE__ */ jsx15(WalletIcon, { size: isDownMd ? 36 : 40 }),
3450
4180
  name: intl.formatMessage({ id: "wallet" }),
3451
4181
  onClick: () => setShowWallet(!showWallet),
3452
4182
  type: "wallet"
3453
4183
  },
3454
4184
  email: {
3455
- icon: /* @__PURE__ */ jsx13(EmailIcon, { size: isDownMd ? 36 : 40 }),
4185
+ icon: /* @__PURE__ */ jsx15(EmailIcon, { size: isDownMd ? 36 : 40 }),
3456
4186
  name: intl.formatMessage({ id: "email" }),
3457
4187
  onClick: () => {
3458
4188
  setEmailOpen(true);
3459
4189
  }
3460
4190
  },
3461
4191
  google: {
3462
- icon: /* @__PURE__ */ jsx13(GoogleIcon, { size: isDownMd ? 36 : 40 }),
4192
+ icon: /* @__PURE__ */ jsx15(GoogleIcon, { size: isDownMd ? 36 : 40 }),
3463
4193
  name: "Google",
3464
4194
  onClick: () => login("google")
3465
4195
  },
3466
4196
  twitter: {
3467
- icon: /* @__PURE__ */ jsx13(XIcon, { size: isDownMd ? 36 : 40 }),
4197
+ icon: /* @__PURE__ */ jsx15(XIcon, { size: isDownMd ? 36 : 40 }),
3468
4198
  name: "X",
3469
4199
  onClick: () => login("twitter")
3470
4200
  },
3471
4201
  telegram: {
3472
- icon: /* @__PURE__ */ jsx13(TelegramIcon, { size: isDownMd ? 36 : 40 }),
4202
+ icon: /* @__PURE__ */ jsx15(TelegramIcon, { size: isDownMd ? 36 : 40 }),
3473
4203
  name: "Telegram",
3474
4204
  onClick: () => login("telegram")
3475
4205
  },
3476
4206
  github: {
3477
- icon: /* @__PURE__ */ jsx13(GithubIcon, { size: isDownMd ? 36 : 40 }),
4207
+ icon: /* @__PURE__ */ jsx15(GithubIcon, { size: isDownMd ? 36 : 40 }),
3478
4208
  name: "Github",
3479
4209
  onClick: () => login("github")
3480
4210
  },
3481
4211
  discord: {
3482
- icon: /* @__PURE__ */ jsx13(DiscordIcon, { size: isDownMd ? 36 : 40 }),
4212
+ icon: /* @__PURE__ */ jsx15(DiscordIcon, { size: isDownMd ? 36 : 40 }),
3483
4213
  name: "Discord",
3484
4214
  onClick: () => login("discord")
3485
4215
  },
3486
4216
  linkedin: {
3487
- icon: /* @__PURE__ */ jsx13(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
4217
+ icon: /* @__PURE__ */ jsx15(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
3488
4218
  name: "LinkedIn",
3489
4219
  onClick: () => login("linkedin")
3490
4220
  },
3491
4221
  facebook: {
3492
- icon: /* @__PURE__ */ jsx13(FacebookIcon, { size: isDownMd ? 36 : 40 }),
4222
+ icon: /* @__PURE__ */ jsx15(FacebookIcon, { size: isDownMd ? 36 : 40 }),
3493
4223
  name: "Facebook",
3494
4224
  onClick: () => login("facebook")
3495
4225
  },
3496
4226
  youtube: {
3497
- icon: /* @__PURE__ */ jsx13(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
4227
+ icon: /* @__PURE__ */ jsx15(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
3498
4228
  name: "Youtube",
3499
4229
  onClick: () => login("youtube")
3500
4230
  }
3501
4231
  };
3502
4232
  const { walletMap } = useWalletConfig();
3503
- return /* @__PURE__ */ jsxs9(Fragment2, { children: [
3504
- (!inModal || !emailOpen) && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-box", children: [
3505
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
3506
- return /* @__PURE__ */ jsx13(
4233
+ return /* @__PURE__ */ jsxs10(Fragment2, { children: [
4234
+ (!inModal || !emailOpen) && /* @__PURE__ */ jsxs10("div", { className: "matchid-login-box", children: [
4235
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
4236
+ return /* @__PURE__ */ jsx15(
3507
4237
  RecommendItem,
3508
4238
  {
3509
4239
  icon: methodMap[m]?.icon,
3510
4240
  name: methodMap[m]?.name,
3511
4241
  onClick: methodMap[m]?.onClick,
3512
4242
  showChildren: m == "wallet" && showWallet,
3513
- children: m == "wallet" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
3514
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-divider" }),
3515
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
4243
+ children: m == "wallet" && /* @__PURE__ */ jsxs10(Fragment2, { children: [
4244
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-divider" }),
4245
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
3516
4246
  const m2 = walletMap[n];
3517
- return /* @__PURE__ */ jsxs9(
4247
+ return /* @__PURE__ */ jsxs10(
3518
4248
  "div",
3519
4249
  {
3520
4250
  className: "matchid-login-recommend-wallet-item",
@@ -3522,16 +4252,16 @@ function LoginBox({
3522
4252
  login(m2.method);
3523
4253
  },
3524
4254
  children: [
3525
- /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-wallet-item-content", children: [
3526
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
3527
- /* @__PURE__ */ jsx13(
4255
+ /* @__PURE__ */ jsxs10("div", { className: "matchid-login-recommend-wallet-item-content", children: [
4256
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
4257
+ /* @__PURE__ */ jsx15(
3528
4258
  "div",
3529
4259
  {
3530
4260
  className: "matchid-login-recommend-wallet-item-hover-icon",
3531
4261
  children: m2.activeIcon
3532
4262
  }
3533
4263
  ),
3534
- /* @__PURE__ */ jsx13(
4264
+ /* @__PURE__ */ jsx15(
3535
4265
  "span",
3536
4266
  {
3537
4267
  className: "matchid-login-recommend-wallet-item-name",
@@ -3539,7 +4269,7 @@ function LoginBox({
3539
4269
  }
3540
4270
  )
3541
4271
  ] }),
3542
- /* @__PURE__ */ jsx13(
4272
+ /* @__PURE__ */ jsx15(
3543
4273
  ArrowRightIcon,
3544
4274
  {
3545
4275
  className: "matchid-login-recommend-wallet-item-arrow",
@@ -3557,10 +4287,10 @@ function LoginBox({
3557
4287
  m
3558
4288
  );
3559
4289
  }) }),
3560
- methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-other", children: [
3561
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx13(FormattedMessage4, { id: "otherLoginMethods" }) }),
3562
- /* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
3563
- return /* @__PURE__ */ jsx13(
4290
+ methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs10("div", { className: "matchid-login-other", children: [
4291
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx15(FormattedMessage6, { id: "otherLoginMethods" }) }),
4292
+ /* @__PURE__ */ jsx15("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
4293
+ return /* @__PURE__ */ jsx15(
3564
4294
  "div",
3565
4295
  {
3566
4296
  className: "matchid-login-method-item",
@@ -3573,7 +4303,7 @@ function LoginBox({
3573
4303
  }) })
3574
4304
  ] })
3575
4305
  ] }),
3576
- /* @__PURE__ */ jsx13(
4306
+ /* @__PURE__ */ jsx15(
3577
4307
  EmailModal,
3578
4308
  {
3579
4309
  isOpen: emailOpen,
@@ -3589,56 +4319,56 @@ function LoginBox({
3589
4319
  }
3590
4320
 
3591
4321
  // src/components/LoginButton/index.tsx
3592
- import { useState as useState16 } from "react";
4322
+ import { useState as useState17 } from "react";
3593
4323
 
3594
4324
  // src/components/LoginPanel/index.tsx
3595
- import { FormattedMessage as FormattedMessage5 } from "react-intl";
3596
- import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
4325
+ import { FormattedMessage as FormattedMessage7 } from "react-intl";
4326
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
3597
4327
  function LoginPanel({
3598
4328
  header,
3599
4329
  onClose,
3600
4330
  ...props
3601
4331
  }) {
3602
4332
  const isDownMd = useDownMd();
3603
- return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel", children: [
3604
- header ? header : /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header", children: [
3605
- /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header-content", children: [
3606
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTitle" }) }),
3607
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTips" }) })
4333
+ return /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel", children: [
4334
+ header ? header : /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel-header", children: [
4335
+ /* @__PURE__ */ jsxs11("div", { className: "matchid-login-panel-header-content", children: [
4336
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx16(FormattedMessage7, { id: "loginTitle" }) }),
4337
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx16(FormattedMessage7, { id: "loginTips" }) })
3608
4338
  ] }),
3609
- onClose && /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx14(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
4339
+ onClose && /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx16(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
3610
4340
  ] }),
3611
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-divide" }),
3612
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx14(LoginBox, { ...props }) })
4341
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-divide" }),
4342
+ /* @__PURE__ */ jsx16("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx16(LoginBox, { ...props }) })
3613
4343
  ] });
3614
4344
  }
3615
4345
 
3616
4346
  // src/components/LoginModal/index.tsx
3617
- import { jsx as jsx15 } from "react/jsx-runtime";
4347
+ import { jsx as jsx17 } from "react/jsx-runtime";
3618
4348
  function LoginModal({
3619
4349
  isOpen = false,
3620
4350
  width = 480,
3621
4351
  ...props
3622
4352
  }) {
3623
4353
  const { isLogin } = useUserInfo();
3624
- return /* @__PURE__ */ jsx15(
4354
+ return /* @__PURE__ */ jsx17(
3625
4355
  Modal,
3626
4356
  {
3627
4357
  isOpen: isOpen && !isLogin,
3628
4358
  width,
3629
- children: /* @__PURE__ */ jsx15(LoginPanel, { ...props, inModal: true })
4359
+ children: /* @__PURE__ */ jsx17(LoginPanel, { ...props, inModal: true })
3630
4360
  }
3631
4361
  );
3632
4362
  }
3633
4363
 
3634
4364
  // src/components/UserPopover/index.tsx
3635
- import { useState as useState15 } from "react";
4365
+ import { useState as useState16 } from "react";
3636
4366
 
3637
4367
  // src/assets/icon/ProfileIcon.tsx
3638
- import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
4368
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
3639
4369
  function ProfileIcon({ size = 24, color = "black", ...props }) {
3640
- return /* @__PURE__ */ jsxs11("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3641
- /* @__PURE__ */ jsx16(
4370
+ return /* @__PURE__ */ jsxs12("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
4371
+ /* @__PURE__ */ jsx18(
3642
4372
  "path",
3643
4373
  {
3644
4374
  fillRule: "evenodd",
@@ -3647,7 +4377,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3647
4377
  fill: color
3648
4378
  }
3649
4379
  ),
3650
- /* @__PURE__ */ jsx16(
4380
+ /* @__PURE__ */ jsx18(
3651
4381
  "path",
3652
4382
  {
3653
4383
  fillRule: "evenodd",
@@ -3660,11 +4390,11 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3660
4390
  }
3661
4391
 
3662
4392
  // src/components/UserPopover/index.tsx
3663
- import { FormattedMessage as FormattedMessage6, useIntl as useIntl6 } from "react-intl";
3664
- import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
4393
+ import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
4394
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
3665
4395
  function UserContent() {
3666
- const { logout, address: address2, username } = useUserInfo();
3667
- const [logouting, setLogouting] = useState15(false);
4396
+ const { logout, address, username } = useUserInfo();
4397
+ const [logouting, setLogouting] = useState16(false);
3668
4398
  const onLogout = async () => {
3669
4399
  if (logouting) return;
3670
4400
  try {
@@ -3682,34 +4412,34 @@ function UserContent() {
3682
4412
  rightIcon,
3683
4413
  onClick
3684
4414
  }) => {
3685
- return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-item", onClick, children: [
3686
- /* @__PURE__ */ jsxs12("div", { className: `matchid-user-popover-item-content`, children: [
4415
+ return /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-item", onClick, children: [
4416
+ /* @__PURE__ */ jsxs13("div", { className: `matchid-user-popover-item-content`, children: [
3687
4417
  icon,
3688
- /* @__PURE__ */ jsx17("div", { className: "matchid-user-popover-item-text", children })
4418
+ /* @__PURE__ */ jsx19("div", { className: "matchid-user-popover-item-text", children })
3689
4419
  ] }),
3690
4420
  rightIcon
3691
4421
  ] });
3692
4422
  };
3693
4423
  const UserDivider = () => {
3694
- return /* @__PURE__ */ jsx17("div", { className: `matchid-user-popover-divider` });
4424
+ return /* @__PURE__ */ jsx19("div", { className: `matchid-user-popover-divider` });
3695
4425
  };
3696
- const [usernameOpen, setUsernameOpen] = useState15(false);
4426
+ const [usernameOpen, setUsernameOpen] = useState16(false);
3697
4427
  const [copied, setCopied] = useCopyClipboard();
3698
- const intl = useIntl6();
3699
- return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-content", children: [
3700
- /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-list", children: [
3701
- /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
3702
- setCopied(address2);
3703
- }, 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) }),
3704
- /* @__PURE__ */ jsx17(UserDivider, {}),
3705
- /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
4428
+ const intl = useIntl8();
4429
+ return /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-content", children: [
4430
+ /* @__PURE__ */ jsxs13("div", { className: "matchid-user-popover-list", children: [
4431
+ /* @__PURE__ */ jsx19(UserItem, { onClick: () => {
4432
+ setCopied(address);
4433
+ }, icon: copied ? /* @__PURE__ */ jsx19(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx19(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx19(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
4434
+ /* @__PURE__ */ jsx19(UserDivider, {}),
4435
+ /* @__PURE__ */ jsx19(UserItem, { onClick: () => {
3706
4436
  setUsernameOpen(true);
3707
- }, icon: /* @__PURE__ */ jsx17(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx17(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
4437
+ }, icon: /* @__PURE__ */ jsx19(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx19(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
3708
4438
  id: "setUsername"
3709
4439
  }) })
3710
4440
  ] }),
3711
- /* @__PURE__ */ jsx17(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx17(FormattedMessage6, { id: "disconnect" }) }),
3712
- /* @__PURE__ */ jsx17(UsernameModal, { isOpen: usernameOpen, onClose: () => {
4441
+ /* @__PURE__ */ jsx19(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "disconnect" }) }),
4442
+ /* @__PURE__ */ jsx19(UsernameModal, { isOpen: usernameOpen, onClose: () => {
3713
4443
  setUsernameOpen(false);
3714
4444
  }, onSuccess: () => {
3715
4445
  setUsernameOpen(false);
@@ -3720,12 +4450,12 @@ function UserPopover({
3720
4450
  children,
3721
4451
  ...props
3722
4452
  }) {
3723
- return /* @__PURE__ */ jsx17(Popover, { ...props, content: /* @__PURE__ */ jsx17(UserContent, {}), children });
4453
+ return /* @__PURE__ */ jsx19(Popover, { ...props, content: /* @__PURE__ */ jsx19(UserContent, {}), children });
3724
4454
  }
3725
4455
 
3726
4456
  // src/components/LoginButton/index.tsx
3727
- import { FormattedMessage as FormattedMessage7, useIntl as useIntl7 } from "react-intl";
3728
- import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
4457
+ import { FormattedMessage as FormattedMessage9, useIntl as useIntl9 } from "react-intl";
4458
+ import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
3729
4459
  function LoginButton({
3730
4460
  loginRender,
3731
4461
  methods,
@@ -3737,12 +4467,12 @@ function LoginButton({
3737
4467
  walletMethods,
3738
4468
  ...props
3739
4469
  }) {
3740
- const intl = useIntl7();
4470
+ const intl = useIntl9();
3741
4471
  const { isLogin, username } = useUserInfo();
3742
- const [loginOpen, setLoginOpen] = useState16(false);
4472
+ const [loginOpen, setLoginOpen] = useState17(false);
3743
4473
  if (!isLogin) {
3744
- return /* @__PURE__ */ jsxs13(Fragment3, { children: [
3745
- /* @__PURE__ */ jsx18(
4474
+ return /* @__PURE__ */ jsxs14(Fragment3, { children: [
4475
+ /* @__PURE__ */ jsx20(
3746
4476
  LoginModal,
3747
4477
  {
3748
4478
  methods,
@@ -3752,32 +4482,32 @@ function LoginButton({
3752
4482
  onClose: () => setLoginOpen(false)
3753
4483
  }
3754
4484
  ),
3755
- /* @__PURE__ */ jsxs13(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
3756
- /* @__PURE__ */ jsx18(UnLoginIcon_default, {}),
3757
- /* @__PURE__ */ jsx18("span", { children: /* @__PURE__ */ jsx18(FormattedMessage7, { id: "login" }) })
4485
+ /* @__PURE__ */ jsxs14(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
4486
+ /* @__PURE__ */ jsx20(UnLoginIcon_default, {}),
4487
+ /* @__PURE__ */ jsx20("span", { children: /* @__PURE__ */ jsx20(FormattedMessage9, { id: "login" }) })
3758
4488
  ] })
3759
4489
  ] });
3760
4490
  }
3761
- 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: [
3762
- /* @__PURE__ */ jsx18(LoginIcon_default, {}),
3763
- /* @__PURE__ */ jsx18("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
4491
+ return loginRender ? /* @__PURE__ */ jsx20(Fragment3, { children: loginRender }) : /* @__PURE__ */ jsx20(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs14(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
4492
+ /* @__PURE__ */ jsx20(LoginIcon_default, {}),
4493
+ /* @__PURE__ */ jsx20("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
3764
4494
  id: "user"
3765
4495
  }) })
3766
4496
  ] }) });
3767
4497
  }
3768
4498
 
3769
4499
  // src/components/UsernameModal/index.tsx
3770
- import { useEffect as useEffect15, useMemo as useMemo9, useState as useState17 } from "react";
3771
- import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
3772
- import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
4500
+ import { useEffect as useEffect16, useMemo as useMemo10, useState as useState18 } from "react";
4501
+ import { FormattedMessage as FormattedMessage10, useIntl as useIntl10 } from "react-intl";
4502
+ import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
3773
4503
  var ValidItem = ({
3774
4504
  success = false,
3775
4505
  text
3776
4506
  }) => {
3777
4507
  const isDownMd = useDownMd();
3778
- return /* @__PURE__ */ jsxs14("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
3779
- success ? /* @__PURE__ */ jsx19(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx19(InfoLineIcon, { size: isDownMd ? 12 : 16 }),
3780
- /* @__PURE__ */ jsx19("span", { children: text })
4508
+ return /* @__PURE__ */ jsxs15("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
4509
+ success ? /* @__PURE__ */ jsx21(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx21(InfoLineIcon, { size: isDownMd ? 12 : 16 }),
4510
+ /* @__PURE__ */ jsx21("span", { children: text })
3781
4511
  ] });
3782
4512
  };
3783
4513
  function UsernameModal({
@@ -3788,23 +4518,23 @@ function UsernameModal({
3788
4518
  }) {
3789
4519
  const { username, refreshOverview } = useUserInfo();
3790
4520
  const { isLogin } = useUserInfo();
3791
- const [val, setVal] = useState17(username);
3792
- const [error, setError] = useState17("");
4521
+ const [val, setVal] = useState18(username);
4522
+ const [error, setError] = useState18("");
3793
4523
  const isDownMd = useDownMd();
3794
- useEffect15(() => {
4524
+ useEffect16(() => {
3795
4525
  if (isOpen) {
3796
4526
  setVal(username);
3797
4527
  setError("");
3798
4528
  }
3799
4529
  }, [isOpen]);
3800
- const isValid = useMemo9(() => {
4530
+ const isValid = useMemo10(() => {
3801
4531
  return isValidUsername(val);
3802
4532
  }, [val]);
3803
- const isLength = useMemo9(() => {
4533
+ const isLength = useMemo10(() => {
3804
4534
  return val.length >= 2 && val.length <= 32;
3805
4535
  }, [val]);
3806
4536
  const isSafe = isValid && isLength;
3807
- const [isSubmitting, setIsSubmitting] = useState17(false);
4537
+ const [isSubmitting, setIsSubmitting] = useState18(false);
3808
4538
  const onSubmit = async () => {
3809
4539
  if (isSubmitting) return;
3810
4540
  try {
@@ -3824,13 +4554,13 @@ function UsernameModal({
3824
4554
  setIsSubmitting(false);
3825
4555
  }
3826
4556
  };
3827
- const intl = useIntl8();
3828
- return /* @__PURE__ */ jsx19(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
4557
+ const intl = useIntl10();
4558
+ return /* @__PURE__ */ jsx21(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
3829
4559
  id: username ? "editUsernameTitle" : "setUsernameTitle"
3830
- }), children: /* @__PURE__ */ jsxs14("div", { className: "matchid-username-box", children: [
3831
- /* @__PURE__ */ jsx19(Field, { label: intl.formatMessage({
4560
+ }), children: /* @__PURE__ */ jsxs15("div", { className: "matchid-username-box", children: [
4561
+ /* @__PURE__ */ jsx21(Field, { label: intl.formatMessage({
3832
4562
  id: "username"
3833
- }), error, children: /* @__PURE__ */ jsx19(
4563
+ }), error, children: /* @__PURE__ */ jsx21(
3834
4564
  Input,
3835
4565
  {
3836
4566
  placeholder: intl.formatMessage({
@@ -3843,8 +4573,8 @@ function UsernameModal({
3843
4573
  value: val
3844
4574
  }
3845
4575
  ) }),
3846
- /* @__PURE__ */ jsxs14("div", { className: "matchid-valid", children: [
3847
- /* @__PURE__ */ jsx19(
4576
+ /* @__PURE__ */ jsxs15("div", { className: "matchid-valid", children: [
4577
+ /* @__PURE__ */ jsx21(
3848
4578
  ValidItem,
3849
4579
  {
3850
4580
  success: isValid,
@@ -3853,21 +4583,21 @@ function UsernameModal({
3853
4583
  })
3854
4584
  }
3855
4585
  ),
3856
- /* @__PURE__ */ jsx19(ValidItem, { success: isLength, text: intl.formatMessage({
4586
+ /* @__PURE__ */ jsx21(ValidItem, { success: isLength, text: intl.formatMessage({
3857
4587
  id: "usernameLengthError"
3858
4588
  }) })
3859
4589
  ] }),
3860
- /* @__PURE__ */ jsx19(Button, { disabled: !isSafe, loading: isSubmitting, style: {
4590
+ /* @__PURE__ */ jsx21(Button, { disabled: !isSafe, loading: isSubmitting, style: {
3861
4591
  marginTop: isDownMd ? "36px" : "64px"
3862
- }, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "confirm" }) }),
3863
- /* @__PURE__ */ jsx19(Button, { style: {
4592
+ }, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ jsx21(FormattedMessage10, { id: "confirm" }) }),
4593
+ /* @__PURE__ */ jsx21(Button, { style: {
3864
4594
  marginTop: isDownMd ? "12px" : "24px"
3865
- }, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ jsx19(FormattedMessage8, { id: "cancel" }) })
4595
+ }, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ jsx21(FormattedMessage10, { id: "cancel" }) })
3866
4596
  ] }) });
3867
4597
  }
3868
4598
 
3869
4599
  // src/components/SOLModal/index.tsx
3870
- import React7, { useEffect as useEffect16, useState as useState18 } from "react";
4600
+ import React7, { useEffect as useEffect17, useState as useState19 } from "react";
3871
4601
  import { clusterApiUrl } from "@solana/web3.js";
3872
4602
  import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
3873
4603
  import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
@@ -3918,10 +4648,10 @@ import {
3918
4648
  XDEFIWalletAdapter
3919
4649
  } from "@solana/wallet-adapter-wallets";
3920
4650
  import "@solana/wallet-adapter-react-ui/styles.css";
3921
- import { useIntl as useIntl9 } from "react-intl";
4651
+ import { useIntl as useIntl11 } from "react-intl";
3922
4652
 
3923
4653
  // src/components/WalletModalContent/index.tsx
3924
- import { useMemo as useMemo10 } from "react";
4654
+ import { useMemo as useMemo11 } from "react";
3925
4655
 
3926
4656
  // src/assets/wallet.ts
3927
4657
  var walletErrorImage = "data:image/png;base64,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";
@@ -3931,7 +4661,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
3931
4661
  var walletSigningImage = "data:image/png;base64,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";
3932
4662
 
3933
4663
  // src/components/WalletModalContent/index.tsx
3934
- import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
4664
+ import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
3935
4665
  function WalletModalContent({
3936
4666
  status,
3937
4667
  error,
@@ -3939,10 +4669,10 @@ function WalletModalContent({
3939
4669
  setError,
3940
4670
  setVisible,
3941
4671
  visible,
3942
- address: address2,
4672
+ address,
3943
4673
  connected
3944
4674
  }) {
3945
- const pageData = useMemo10(() => {
4675
+ const pageData = useMemo11(() => {
3946
4676
  if (status == "success") {
3947
4677
  return {
3948
4678
  btnText: "Disconnect Wallet",
@@ -4000,13 +4730,13 @@ function WalletModalContent({
4000
4730
  text: "Please Connect your wallet",
4001
4731
  statusImage: walletConnectImage
4002
4732
  };
4003
- }, [visible, connected, status, error, address2]);
4004
- return /* @__PURE__ */ jsx20("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs15("div", { className: `matchid-wallet-box`, children: [
4005
- /* @__PURE__ */ jsxs15("div", { className: `matchid-wallet-content`, children: [
4006
- /* @__PURE__ */ jsx20("img", { src: pageData.statusImage }),
4007
- /* @__PURE__ */ jsx20("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
4733
+ }, [visible, connected, status, error, address]);
4734
+ return /* @__PURE__ */ jsx22("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
4735
+ /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-content`, children: [
4736
+ /* @__PURE__ */ jsx22("img", { src: pageData.statusImage }),
4737
+ /* @__PURE__ */ jsx22("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
4008
4738
  ] }),
4009
- /* @__PURE__ */ jsx20(
4739
+ /* @__PURE__ */ jsx22(
4010
4740
  Button,
4011
4741
  {
4012
4742
  block: true,
@@ -4021,7 +4751,7 @@ function WalletModalContent({
4021
4751
  }
4022
4752
 
4023
4753
  // src/components/SOLModal/index.tsx
4024
- import { jsx as jsx21 } from "react/jsx-runtime";
4754
+ import { jsx as jsx23 } from "react/jsx-runtime";
4025
4755
  function WalletContent({
4026
4756
  onSuccess,
4027
4757
  type
@@ -4029,17 +4759,17 @@ function WalletContent({
4029
4759
  const { setVisible, visible } = useWalletModal();
4030
4760
  const wallet = useWallet2();
4031
4761
  const { events, login } = useMatch();
4032
- const [status, setStatus] = useState18("");
4762
+ const [status, setStatus] = useState19("");
4033
4763
  const statusRef = React7.useRef(status);
4034
- const [error, setError] = useState18("");
4035
- useEffect16(() => {
4764
+ const [error, setError] = useState19("");
4765
+ useEffect17(() => {
4036
4766
  const init = async () => {
4037
4767
  await wallet.disconnect();
4038
4768
  setVisible(true);
4039
4769
  };
4040
4770
  init();
4041
4771
  }, []);
4042
- useEffect16(() => {
4772
+ useEffect17(() => {
4043
4773
  if (wallet.connected) {
4044
4774
  console.log("wallet.connected", wallet.connected);
4045
4775
  toLoginInWallet();
@@ -4047,14 +4777,14 @@ function WalletContent({
4047
4777
  }, [wallet.connected]);
4048
4778
  const toLoginInWallet = async () => {
4049
4779
  if (statusRef.current) return;
4050
- const address2 = wallet.publicKey?.toBase58() || "";
4780
+ const address = wallet.publicKey?.toBase58() || "";
4051
4781
  try {
4052
4782
  setStatus("nonce");
4053
4783
  statusRef.current = "nonce";
4054
4784
  const res = type == "bind" ? await getWalletInitApi({
4055
- address: address2,
4785
+ address,
4056
4786
  type: "SOL"
4057
- }) : await getWalletNonceApi({ address: address2, type: "SOL" });
4787
+ }) : await getWalletNonceApi({ address, type: "SOL" });
4058
4788
  if (!isSuccess(res)) {
4059
4789
  throw new Error(res.message);
4060
4790
  }
@@ -4067,7 +4797,7 @@ function WalletContent({
4067
4797
  const signedMessage = await wallet.signMessage(encodedMessage);
4068
4798
  let obj = {
4069
4799
  type: "SOL",
4070
- address: address2,
4800
+ address,
4071
4801
  signature: Buffer.from(signedMessage).toString("base64"),
4072
4802
  message,
4073
4803
  connector_type: "SOL",
@@ -4103,7 +4833,7 @@ function WalletContent({
4103
4833
  statusRef.current = "";
4104
4834
  }
4105
4835
  };
4106
- return /* @__PURE__ */ jsx21(
4836
+ return /* @__PURE__ */ jsx23(
4107
4837
  WalletModalContent,
4108
4838
  {
4109
4839
  connected: wallet.connected,
@@ -4163,20 +4893,20 @@ function SOLConnectModal({
4163
4893
  onSuccess,
4164
4894
  ...props
4165
4895
  }) {
4166
- const intl = useIntl9();
4167
- return /* @__PURE__ */ jsx21(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4896
+ const intl = useIntl11();
4897
+ return /* @__PURE__ */ jsx23(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4168
4898
  id: type == "bind" ? "bindWith" : "loginWith"
4169
4899
  }, {
4170
4900
  name: "SOL"
4171
- }), children: /* @__PURE__ */ jsx21(ConnectionProvider, { endpoint: clusterApiUrl("devnet"), children: /* @__PURE__ */ jsx21(WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ jsx21(WalletModalProvider, { children: /* @__PURE__ */ jsx21(WalletContent, { onSuccess, type }) }) }) }) });
4901
+ }), children: /* @__PURE__ */ jsx23(ConnectionProvider, { endpoint: clusterApiUrl("devnet"), children: /* @__PURE__ */ jsx23(WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ jsx23(WalletModalProvider, { children: /* @__PURE__ */ jsx23(WalletContent, { onSuccess, type }) }) }) }) });
4172
4902
  }
4173
4903
  function SOLModal(props) {
4174
- return props.isOpen && /* @__PURE__ */ jsx21(SOLConnectModal, { ...props });
4904
+ return props.isOpen && /* @__PURE__ */ jsx23(SOLConnectModal, { ...props });
4175
4905
  }
4176
4906
 
4177
4907
  // src/components/TRONModal/index.tsx
4178
- import React8, { useEffect as useEffect18, useMemo as useMemo11, useState as useState20 } from "react";
4179
- import { useIntl as useIntl10 } from "react-intl";
4908
+ import React8, { useEffect as useEffect19, useMemo as useMemo12, useState as useState21 } from "react";
4909
+ import { useIntl as useIntl12 } from "react-intl";
4180
4910
 
4181
4911
  // src/lib/tron/TronLinkAdapter.ts
4182
4912
  var TronLinkAdapter = class {
@@ -4209,7 +4939,7 @@ var TronLinkAdapter = class {
4209
4939
  };
4210
4940
 
4211
4941
  // src/hooks/useTRONWallet.ts
4212
- import { useEffect as useEffect17, useState as useState19 } from "react";
4942
+ import { useEffect as useEffect18, useState as useState20 } from "react";
4213
4943
 
4214
4944
  // src/lib/tron/BitgetAdapter.ts
4215
4945
  var BitgetAdapter = class {
@@ -4254,9 +4984,9 @@ var OKXAdapter = class {
4254
4984
  // src/hooks/useTRONWallet.ts
4255
4985
  var useTRONWallet = () => {
4256
4986
  const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
4257
- const [installedWallets, setInstalledWallets] = useState19([]);
4258
- const [address2, setAddress] = useState19(null);
4259
- useEffect17(() => {
4987
+ const [installedWallets, setInstalledWallets] = useState20([]);
4988
+ const [address, setAddress] = useState20(null);
4989
+ useEffect18(() => {
4260
4990
  const getInstalled = async () => {
4261
4991
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
4262
4992
  wallet: wallet2,
@@ -4266,11 +4996,11 @@ var useTRONWallet = () => {
4266
4996
  };
4267
4997
  getInstalled();
4268
4998
  }, []);
4269
- const [wallet, chooseWallet] = useState19(null);
4999
+ const [wallet, chooseWallet] = useState20(null);
4270
5000
  const onConnect = async () => {
4271
5001
  setAddress(await wallet.connect());
4272
5002
  };
4273
- useEffect17(() => {
5003
+ useEffect18(() => {
4274
5004
  if (!wallet) {
4275
5005
  setAddress(null);
4276
5006
  }
@@ -4280,33 +5010,33 @@ var useTRONWallet = () => {
4280
5010
  wallets: wallets2,
4281
5011
  chooseWallet,
4282
5012
  wallet,
4283
- address: address2,
5013
+ address,
4284
5014
  onConnect
4285
5015
  };
4286
5016
  };
4287
5017
 
4288
5018
  // src/components/TRONModal/index.tsx
4289
- import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
5019
+ import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
4290
5020
  function TRONConnectModal({
4291
5021
  type = "login",
4292
5022
  onSuccess,
4293
5023
  ...props
4294
5024
  }) {
4295
5025
  const isDownMd = useDownMd();
4296
- const intl = useIntl10();
4297
- const { wallets: wallets2, installedWallets, chooseWallet, wallet, address: address2, onConnect } = useTRONWallet();
5026
+ const intl = useIntl12();
5027
+ const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
4298
5028
  const iconMaps = {
4299
- tronlink: /* @__PURE__ */ jsx22(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
4300
- bitget: /* @__PURE__ */ jsx22(BitgetIcon, { size: isDownMd ? 36 : 40 }),
4301
- okx: /* @__PURE__ */ jsx22(OKXIcon, { size: isDownMd ? 36 : 40 })
5029
+ tronlink: /* @__PURE__ */ jsx24(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
5030
+ bitget: /* @__PURE__ */ jsx24(BitgetIcon, { size: isDownMd ? 36 : 40 }),
5031
+ okx: /* @__PURE__ */ jsx24(OKXIcon, { size: isDownMd ? 36 : 40 })
4302
5032
  };
4303
5033
  const { events, login } = useMatch();
4304
- const [status, setStatus] = useState20("");
5034
+ const [status, setStatus] = useState21("");
4305
5035
  const statusRef = React8.useRef(status);
4306
- const [error, setError] = useState20("");
4307
- const connected = useMemo11(() => {
4308
- return !!address2;
4309
- }, [address2]);
5036
+ const [error, setError] = useState21("");
5037
+ const connected = useMemo12(() => {
5038
+ return !!address;
5039
+ }, [address]);
4310
5040
  const disconnect = async () => {
4311
5041
  setStatus("");
4312
5042
  chooseWallet(null);
@@ -4320,11 +5050,11 @@ function TRONConnectModal({
4320
5050
  setError("");
4321
5051
  };
4322
5052
  const toLoginInWallet = async () => {
4323
- if (statusRef.current || !address2 || !wallet) return;
5053
+ if (statusRef.current || !address || !wallet) return;
4324
5054
  try {
4325
5055
  setStatus("nonce");
4326
5056
  statusRef.current = "nonce";
4327
- const res = type == "bind" ? await getWalletInitApi({ address: address2, type: "TRON" }) : await getWalletNonceApi({ address: address2, type: "TRON" });
5057
+ const res = type == "bind" ? await getWalletInitApi({ address, type: "TRON" }) : await getWalletNonceApi({ address, type: "TRON" });
4328
5058
  if (!isSuccess(res)) {
4329
5059
  throw new Error(res.message);
4330
5060
  }
@@ -4336,7 +5066,7 @@ function TRONConnectModal({
4336
5066
  const signedMessage = await wallet.signMessage(message);
4337
5067
  let obj = {
4338
5068
  type: "TRON",
4339
- address: address2,
5069
+ address,
4340
5070
  signature: signedMessage,
4341
5071
  message,
4342
5072
  connector_type: "TRON",
@@ -4372,7 +5102,7 @@ function TRONConnectModal({
4372
5102
  statusRef.current = "";
4373
5103
  }
4374
5104
  };
4375
- useEffect18(() => {
5105
+ useEffect19(() => {
4376
5106
  if (wallet) {
4377
5107
  console.log("onConnect");
4378
5108
  onConnect();
@@ -4380,36 +5110,36 @@ function TRONConnectModal({
4380
5110
  setStatus("");
4381
5111
  }
4382
5112
  }, [wallet]);
4383
- useEffect18(() => {
4384
- if (address2) {
5113
+ useEffect19(() => {
5114
+ if (address) {
4385
5115
  toLoginInWallet();
4386
5116
  }
4387
- }, [address2]);
4388
- useEffect18(() => {
5117
+ }, [address]);
5118
+ useEffect19(() => {
4389
5119
  if (!props.isOpen) {
4390
5120
  disconnect();
4391
5121
  }
4392
5122
  }, [props.isOpen]);
4393
- return /* @__PURE__ */ jsx22(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5123
+ return /* @__PURE__ */ jsx24(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4394
5124
  id: type == "bind" ? "bindWith" : "loginWith"
4395
5125
  }, {
4396
5126
  name: "TRON"
4397
- }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx22(
5127
+ }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx24(
4398
5128
  WalletModalContent,
4399
5129
  {
4400
5130
  error,
4401
5131
  setError,
4402
5132
  status,
4403
5133
  disconnect,
4404
- address: address2 || "",
5134
+ address: address || "",
4405
5135
  connected,
4406
5136
  visible: true,
4407
5137
  setVisible: () => {
4408
5138
  }
4409
5139
  }
4410
- ) : /* @__PURE__ */ jsx22("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs16("div", { className: "matchid-login-recommend-list", children: [
5140
+ ) : /* @__PURE__ */ jsx24("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
4411
5141
  installedWallets.map((wallet2) => {
4412
- return /* @__PURE__ */ jsx22(
5142
+ return /* @__PURE__ */ jsx24(
4413
5143
  RecommendItem,
4414
5144
  {
4415
5145
  icon: iconMaps[wallet2.walletKey],
@@ -4422,14 +5152,14 @@ function TRONConnectModal({
4422
5152
  );
4423
5153
  }),
4424
5154
  wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
4425
- return /* @__PURE__ */ jsx22(
5155
+ return /* @__PURE__ */ jsx24(
4426
5156
  RecommendItem,
4427
5157
  {
4428
5158
  icon: iconMaps[wallet2.walletKey],
4429
5159
  name: wallet2.name,
4430
5160
  onClick: () => {
4431
5161
  },
4432
- footer: /* @__PURE__ */ jsx22(Button, { size: "sm", onClick: () => {
5162
+ footer: /* @__PURE__ */ jsx24(Button, { size: "sm", onClick: () => {
4433
5163
  window.open(wallet2.website);
4434
5164
  }, children: "Install" })
4435
5165
  },
@@ -4439,12 +5169,12 @@ function TRONConnectModal({
4439
5169
  ] }) }) });
4440
5170
  }
4441
5171
  function TRONModal(props) {
4442
- return props.isOpen && /* @__PURE__ */ jsx22(TRONConnectModal, { ...props, type: props.type });
5172
+ return props.isOpen && /* @__PURE__ */ jsx24(TRONConnectModal, { ...props, type: props.type });
4443
5173
  }
4444
5174
 
4445
5175
  // src/components/TONModal/index.tsx
4446
- import React9, { useEffect as useEffect19, useState as useState21 } from "react";
4447
- import { useIntl as useIntl11 } from "react-intl";
5176
+ import React9, { useEffect as useEffect20, useState as useState22 } from "react";
5177
+ import { useIntl as useIntl13 } from "react-intl";
4448
5178
  import {
4449
5179
  TonConnectUIProvider,
4450
5180
  useTonAddress,
@@ -4452,23 +5182,23 @@ import {
4452
5182
  useTonConnectUI,
4453
5183
  useTonWallet
4454
5184
  } from "@tonconnect/ui-react";
4455
- import { jsx as jsx23 } from "react/jsx-runtime";
5185
+ import { jsx as jsx25 } from "react/jsx-runtime";
4456
5186
  function WalletContent2({
4457
5187
  onSuccess,
4458
5188
  type
4459
5189
  }) {
4460
5190
  const { events, login } = useMatch();
4461
- const [connected, setConnected] = useState21(false);
5191
+ const [connected, setConnected] = useState22(false);
4462
5192
  const wallet = useTonWallet();
4463
5193
  const userFriendlyAddress = useTonAddress();
4464
5194
  const [tonConnectUI] = useTonConnectUI();
4465
5195
  const { state, open, close } = useTonConnectModal();
4466
- const [status, setStatus] = useState21("");
5196
+ const [status, setStatus] = useState22("");
4467
5197
  const statusRef = React9.useRef(status);
4468
- const [error, setError] = useState21("");
4469
- useEffect19(() => {
5198
+ const [error, setError] = useState22("");
5199
+ useEffect20(() => {
4470
5200
  const init = async () => {
4471
- if (wallet) {
5201
+ if (tonConnectUI.connected) {
4472
5202
  await tonConnectUI.disconnect();
4473
5203
  }
4474
5204
  open();
@@ -4539,7 +5269,7 @@ function WalletContent2({
4539
5269
  }
4540
5270
  });
4541
5271
  }, []);
4542
- useEffect19(() => {
5272
+ useEffect20(() => {
4543
5273
  if (wallet) {
4544
5274
  setConnected(true);
4545
5275
  console.log("Wallet connected:", wallet);
@@ -4550,7 +5280,7 @@ function WalletContent2({
4550
5280
  setStatus("");
4551
5281
  }
4552
5282
  }, [wallet]);
4553
- useEffect19(() => {
5283
+ useEffect20(() => {
4554
5284
  console.log({
4555
5285
  state,
4556
5286
  wallet
@@ -4579,7 +5309,7 @@ function WalletContent2({
4579
5309
  }
4580
5310
  }
4581
5311
  }, [state]);
4582
- return /* @__PURE__ */ jsx23(
5312
+ return /* @__PURE__ */ jsx25(
4583
5313
  WalletModalContent,
4584
5314
  {
4585
5315
  connected,
@@ -4589,7 +5319,7 @@ function WalletContent2({
4589
5319
  setVisible: async (v) => {
4590
5320
  console.log("setVisible", v);
4591
5321
  if (v) {
4592
- if (wallet) {
5322
+ if (tonConnectUI.connected) {
4593
5323
  await tonConnectUI.disconnect();
4594
5324
  }
4595
5325
  setStatus("");
@@ -4610,28 +5340,28 @@ function TONConnectModal({
4610
5340
  onSuccess,
4611
5341
  ...props
4612
5342
  }) {
4613
- const intl = useIntl11();
5343
+ const intl = useIntl13();
4614
5344
  const { endpoints, appid } = useLocalStore_default();
4615
5345
  const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
4616
- return /* @__PURE__ */ jsx23(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5346
+ return /* @__PURE__ */ jsx25(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4617
5347
  id: type == "bind" ? "bindWith" : "loginWith"
4618
5348
  }, {
4619
5349
  name: "TON"
4620
- }), children: /* @__PURE__ */ jsx23(
5350
+ }), children: /* @__PURE__ */ jsx25(
4621
5351
  TonConnectUIProvider,
4622
5352
  {
4623
5353
  manifestUrl,
4624
- children: /* @__PURE__ */ jsx23(WalletContent2, { onSuccess, type })
5354
+ children: /* @__PURE__ */ jsx25(WalletContent2, { onSuccess, type })
4625
5355
  }
4626
5356
  ) });
4627
5357
  }
4628
5358
  function TONModal(props) {
4629
- return props.isOpen && /* @__PURE__ */ jsx23(TONConnectModal, { ...props });
5359
+ return props.isOpen && /* @__PURE__ */ jsx25(TONConnectModal, { ...props });
4630
5360
  }
4631
5361
 
4632
5362
  // src/components/BTCModal/index.tsx
4633
- import React10, { useEffect as useEffect21, useMemo as useMemo12, useState as useState23 } from "react";
4634
- import { useIntl as useIntl12 } from "react-intl";
5363
+ import React10, { useEffect as useEffect22, useMemo as useMemo13, useState as useState24 } from "react";
5364
+ import { useIntl as useIntl14 } from "react-intl";
4635
5365
 
4636
5366
  // src/lib/btc/UnisatAdapter.ts
4637
5367
  var UnisatAdapter = class {
@@ -4722,7 +5452,7 @@ var XverseAdapter = class {
4722
5452
  matchlog_default.log("getAccounts ~ response:", response);
4723
5453
  if (response.status === "success") {
4724
5454
  const ordinalsAddressItem = response.result.find(
4725
- (address2) => address2.purpose === AddressPurpose.Ordinals
5455
+ (address) => address.purpose === AddressPurpose.Ordinals
4726
5456
  );
4727
5457
  this.address = ordinalsAddressItem?.address || "";
4728
5458
  return ordinalsAddressItem?.address || "";
@@ -4785,12 +5515,12 @@ var LeatherAdapter = class {
4785
5515
  };
4786
5516
 
4787
5517
  // src/hooks/useBTCWallet.ts
4788
- import { useEffect as useEffect20, useState as useState22 } from "react";
5518
+ import { useEffect as useEffect21, useState as useState23 } from "react";
4789
5519
  var useBTCWallet = () => {
4790
5520
  const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
4791
- const [installedWallets, setInstalledWallets] = useState22([]);
4792
- const [address2, setAddress] = useState22(null);
4793
- useEffect20(() => {
5521
+ const [installedWallets, setInstalledWallets] = useState23([]);
5522
+ const [address, setAddress] = useState23(null);
5523
+ useEffect21(() => {
4794
5524
  const getInstalled = async () => {
4795
5525
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
4796
5526
  wallet: wallet2,
@@ -4800,11 +5530,11 @@ var useBTCWallet = () => {
4800
5530
  };
4801
5531
  getInstalled();
4802
5532
  }, []);
4803
- const [wallet, chooseWallet] = useState22(null);
5533
+ const [wallet, chooseWallet] = useState23(null);
4804
5534
  const onConnect = async () => {
4805
5535
  setAddress(await wallet.connect());
4806
5536
  };
4807
- useEffect20(() => {
5537
+ useEffect21(() => {
4808
5538
  if (!wallet) {
4809
5539
  setAddress(null);
4810
5540
  }
@@ -4814,33 +5544,33 @@ var useBTCWallet = () => {
4814
5544
  wallets: wallets2,
4815
5545
  chooseWallet,
4816
5546
  wallet,
4817
- address: address2,
5547
+ address,
4818
5548
  onConnect
4819
5549
  };
4820
5550
  };
4821
5551
 
4822
5552
  // src/components/BTCModal/index.tsx
4823
- import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
5553
+ import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
4824
5554
  function BTCConnectModal({
4825
5555
  type = "login",
4826
5556
  onSuccess,
4827
5557
  ...props
4828
5558
  }) {
4829
5559
  const isDownMd = useDownMd();
4830
- const intl = useIntl12();
4831
- const { wallets: wallets2, installedWallets, chooseWallet, wallet, address: address2, onConnect } = useBTCWallet();
5560
+ const intl = useIntl14();
5561
+ const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
4832
5562
  const iconMaps = {
4833
- leather: /* @__PURE__ */ jsx24(LeatherIcon, { size: isDownMd ? 36 : 40 }),
4834
- unisat: /* @__PURE__ */ jsx24(UnisatIcon, { size: isDownMd ? 36 : 40 }),
4835
- xverse: /* @__PURE__ */ jsx24(XverseIcon, { size: isDownMd ? 36 : 40 })
5563
+ leather: /* @__PURE__ */ jsx26(LeatherIcon, { size: isDownMd ? 36 : 40 }),
5564
+ unisat: /* @__PURE__ */ jsx26(UnisatIcon, { size: isDownMd ? 36 : 40 }),
5565
+ xverse: /* @__PURE__ */ jsx26(XverseIcon, { size: isDownMd ? 36 : 40 })
4836
5566
  };
4837
5567
  const { events, login } = useMatch();
4838
- const [status, setStatus] = useState23("");
5568
+ const [status, setStatus] = useState24("");
4839
5569
  const statusRef = React10.useRef(status);
4840
- const [error, setError] = useState23("");
4841
- const connected = useMemo12(() => {
4842
- return !!address2;
4843
- }, [address2]);
5570
+ const [error, setError] = useState24("");
5571
+ const connected = useMemo13(() => {
5572
+ return !!address;
5573
+ }, [address]);
4844
5574
  const disconnect = async () => {
4845
5575
  wallet && wallet.disconnet && wallet.disconnet();
4846
5576
  setStatus("");
@@ -4849,11 +5579,11 @@ function BTCConnectModal({
4849
5579
  setError("");
4850
5580
  };
4851
5581
  const toLoginInWallet = async () => {
4852
- if (statusRef.current || !address2 || !wallet) return;
5582
+ if (statusRef.current || !address || !wallet) return;
4853
5583
  try {
4854
5584
  setStatus("nonce");
4855
5585
  statusRef.current = "nonce";
4856
- const res = type == "bind" ? await getWalletInitApi({ address: address2, type: "BTC" }) : await getWalletNonceApi({ address: address2, type: "BTC" });
5586
+ const res = type == "bind" ? await getWalletInitApi({ address, type: "BTC" }) : await getWalletNonceApi({ address, type: "BTC" });
4857
5587
  if (!isSuccess(res)) {
4858
5588
  throw new Error(res.message);
4859
5589
  }
@@ -4865,7 +5595,7 @@ function BTCConnectModal({
4865
5595
  const signedMessage = await wallet.signMessage(message);
4866
5596
  let obj = {
4867
5597
  type: "BTC",
4868
- address: address2,
5598
+ address,
4869
5599
  signature: signedMessage,
4870
5600
  message,
4871
5601
  connector_type: "BTC",
@@ -4902,7 +5632,7 @@ function BTCConnectModal({
4902
5632
  statusRef.current = "";
4903
5633
  }
4904
5634
  };
4905
- useEffect21(() => {
5635
+ useEffect22(() => {
4906
5636
  if (wallet) {
4907
5637
  console.log("onConnect");
4908
5638
  try {
@@ -4915,12 +5645,12 @@ function BTCConnectModal({
4915
5645
  setStatus("");
4916
5646
  }
4917
5647
  }, [wallet]);
4918
- useEffect21(() => {
4919
- if (address2) {
5648
+ useEffect22(() => {
5649
+ if (address) {
4920
5650
  toLoginInWallet();
4921
5651
  }
4922
- }, [address2]);
4923
- useEffect21(() => {
5652
+ }, [address]);
5653
+ useEffect22(() => {
4924
5654
  if (!props.isOpen) {
4925
5655
  disconnect();
4926
5656
  }
@@ -4932,26 +5662,26 @@ function BTCConnectModal({
4932
5662
  statusRef.current = "";
4933
5663
  setError("");
4934
5664
  };
4935
- return /* @__PURE__ */ jsx24(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5665
+ return /* @__PURE__ */ jsx26(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
4936
5666
  id: type == "bind" ? "bindWith" : "loginWith"
4937
5667
  }, {
4938
5668
  name: "BTC"
4939
- }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx24(
5669
+ }), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ jsx26(
4940
5670
  WalletModalContent,
4941
5671
  {
4942
5672
  error,
4943
5673
  setError,
4944
5674
  status,
4945
5675
  disconnect,
4946
- address: address2 || "",
5676
+ address: address || "",
4947
5677
  connected,
4948
5678
  visible: true,
4949
5679
  setVisible: () => {
4950
5680
  }
4951
5681
  }
4952
- ) : /* @__PURE__ */ jsx24("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
5682
+ ) : /* @__PURE__ */ jsx26("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
4953
5683
  installedWallets.map((wallet2) => {
4954
- return /* @__PURE__ */ jsx24(
5684
+ return /* @__PURE__ */ jsx26(
4955
5685
  RecommendItem,
4956
5686
  {
4957
5687
  icon: iconMaps[wallet2.walletKey],
@@ -4964,14 +5694,14 @@ function BTCConnectModal({
4964
5694
  );
4965
5695
  }),
4966
5696
  wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
4967
- return /* @__PURE__ */ jsx24(
5697
+ return /* @__PURE__ */ jsx26(
4968
5698
  RecommendItem,
4969
5699
  {
4970
5700
  icon: iconMaps[wallet2.walletKey],
4971
5701
  name: wallet2.name,
4972
5702
  onClick: () => {
4973
5703
  },
4974
- footer: /* @__PURE__ */ jsx24(Button, { size: "sm", onClick: () => {
5704
+ footer: /* @__PURE__ */ jsx26(Button, { size: "sm", onClick: () => {
4975
5705
  window.open(wallet2.website);
4976
5706
  }, children: "Install" })
4977
5707
  },
@@ -4981,23 +5711,23 @@ function BTCConnectModal({
4981
5711
  ] }) }) });
4982
5712
  }
4983
5713
  function BTCModal(props) {
4984
- return props.isOpen && /* @__PURE__ */ jsx24(BTCConnectModal, { ...props });
5714
+ return props.isOpen && /* @__PURE__ */ jsx26(BTCConnectModal, { ...props });
4985
5715
  }
4986
5716
 
4987
5717
  // src/components/WalletModal/index.tsx
4988
- import { useMemo as useMemo13 } from "react";
4989
- import { useIntl as useIntl13 } from "react-intl";
4990
- import { jsx as jsx25 } from "react/jsx-runtime";
5718
+ import { useMemo as useMemo14 } from "react";
5719
+ import { useIntl as useIntl15 } from "react-intl";
5720
+ import { jsx as jsx27 } from "react/jsx-runtime";
4991
5721
  function WalletConnectModal({
4992
5722
  type,
4993
5723
  methods: _methods,
4994
5724
  ...props
4995
5725
  }) {
4996
- const intl = useIntl13();
5726
+ const intl = useIntl15();
4997
5727
  const { walletMap } = useWalletConfig();
4998
5728
  const { bind, login } = useUserInfo();
4999
5729
  const config = useAppConfig();
5000
- const methods = useMemo13(() => {
5730
+ const methods = useMemo14(() => {
5001
5731
  if (_methods) return _methods;
5002
5732
  if (!config.platform) {
5003
5733
  return [];
@@ -5005,13 +5735,13 @@ function WalletConnectModal({
5005
5735
  const platform = config.platform.map((p) => p.toLowerCase());
5006
5736
  return WALLET_METHODS.filter((m) => platform.includes(m));
5007
5737
  }, [config.platform, _methods]);
5008
- return /* @__PURE__ */ jsx25(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5738
+ return /* @__PURE__ */ jsx27(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
5009
5739
  id: type == "bind" ? "bindWith" : "loginWith"
5010
5740
  }, {
5011
5741
  name: ""
5012
- }), children: /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsx25("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
5742
+ }), children: /* @__PURE__ */ jsx27("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsx27("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
5013
5743
  const m = walletMap[method];
5014
- return /* @__PURE__ */ jsx25(
5744
+ return /* @__PURE__ */ jsx27(
5015
5745
  RecommendItem,
5016
5746
  {
5017
5747
  icon: m?.icon,
@@ -5025,7 +5755,586 @@ function WalletConnectModal({
5025
5755
  }) }) }) });
5026
5756
  }
5027
5757
  function WalletModal(props) {
5028
- return props.isOpen && /* @__PURE__ */ jsx25(WalletConnectModal, { ...props });
5758
+ return props.isOpen && /* @__PURE__ */ jsx27(WalletConnectModal, { ...props });
5759
+ }
5760
+
5761
+ // src/components/AlphaAvatar/index.tsx
5762
+ import { useEffect as useEffect23, useState as useState25 } from "react";
5763
+ import { jsx as jsx28 } from "react/jsx-runtime";
5764
+ function AlphaAvatar2({ name, size = 40, className = "" }) {
5765
+ const [avatar, setAvatar] = useState25(void 0);
5766
+ useEffect23(() => {
5767
+ if (name) {
5768
+ const char = name[0].toUpperCase();
5769
+ setAvatar(char);
5770
+ }
5771
+ }, [name]);
5772
+ return /* @__PURE__ */ jsx28("div", { className: `matchid-alpha-avatar ${className}`, style: {
5773
+ width: size,
5774
+ height: size,
5775
+ fontSize: Math.ceil(size / 2)
5776
+ }, children: avatar });
5777
+ }
5778
+
5779
+ // src/components/WalletAsset/index.tsx
5780
+ import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
5781
+ function WalletAsset({
5782
+ onAssetClick,
5783
+ matchWalletAssetsOptions
5784
+ }) {
5785
+ const walletAssets = useMatchWalletAssets(matchWalletAssetsOptions);
5786
+ const matchWalletAssetList = useMatchWalletAssetList({
5787
+ list: walletAssets.mergedAssets
5788
+ });
5789
+ const { list } = useMatchChain();
5790
+ return /* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-list", children: matchWalletAssetList.list.map((n, index) => {
5791
+ const clickFunc = onAssetClick && onAssetClick(n);
5792
+ const chain = list?.find((m) => m.id.toString() === n.chain_id);
5793
+ const getFooterColor = () => {
5794
+ if (!n.price_change_24h) {
5795
+ return "";
5796
+ }
5797
+ if (n.price_change_24h > 0) {
5798
+ return "matchid-wallet-asset-up";
5799
+ }
5800
+ if (n.price_change_24h < 0) {
5801
+ return "matchid-wallet-asset-down";
5802
+ }
5803
+ return "";
5804
+ };
5805
+ return /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-item`, onClick: clickFunc, style: {
5806
+ cursor: clickFunc ? "pointer" : "default"
5807
+ }, children: [
5808
+ /* @__PURE__ */ jsxs19("div", { className: "matchid-wallet-asset-logo", title: n.symbol || n.name || "", children: [
5809
+ n.icon ? /* @__PURE__ */ jsx29("img", { src: n.icon, alt: n.symbol, className: `matchid-wallet-asset-icon` }) : /* @__PURE__ */ jsx29(
5810
+ AlphaAvatar2,
5811
+ {
5812
+ className: `matchid-wallet-asset-icon`,
5813
+ size: 40,
5814
+ name: n.symbol || n.name || ""
5815
+ }
5816
+ ),
5817
+ chain?.iconUrl && /* @__PURE__ */ jsx29("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-wallet-asset-chain` })
5818
+ ] }),
5819
+ /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-info`, children: [
5820
+ /* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-name`, children: n.symbol }),
5821
+ "price" in n && /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-content`, children: [
5822
+ /* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-price", children: /* @__PURE__ */ jsx29(
5823
+ NumberFormatter,
5824
+ {
5825
+ value: n.price,
5826
+ prefix: "$ ",
5827
+ tFixNum: 2
5828
+ }
5829
+ ) }),
5830
+ /* @__PURE__ */ jsx29("div", { className: "matchid-wallet-asset-value", children: /* @__PURE__ */ jsx29(
5831
+ NumberFormatter,
5832
+ {
5833
+ value: n.value,
5834
+ prefix: "$ ",
5835
+ tFixNum: 2
5836
+ }
5837
+ ) })
5838
+ ] }),
5839
+ /* @__PURE__ */ jsxs19("div", { className: `matchid-wallet-asset-footer`, children: [
5840
+ /* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-balance`, children: /* @__PURE__ */ jsx29(
5841
+ NumberFormatter,
5842
+ {
5843
+ value: n.balance,
5844
+ tFixNum: 3
5845
+ }
5846
+ ) }),
5847
+ "price_change_24h" in n && /* @__PURE__ */ jsx29("div", { className: `matchid-wallet-asset-change ${getFooterColor()}`, children: /* @__PURE__ */ jsx29(
5848
+ NumberFormatter,
5849
+ {
5850
+ prefix: `${(n?.price_change_24h || 0) < 0 ? "-" : "+"} `,
5851
+ value: Math.abs(n.price_change_24h || 0),
5852
+ suffix: "%",
5853
+ tFixNum: 3
5854
+ }
5855
+ ) })
5856
+ ] })
5857
+ ] })
5858
+ ] }, index);
5859
+ }) });
5860
+ }
5861
+
5862
+ // src/components/TokenSend/index.tsx
5863
+ import { useEffect as useEffect24, useMemo as useMemo15, useState as useState26 } from "react";
5864
+ import { defineChain as defineChain4, encodeFunctionData as encodeFunctionData2, erc20Abi as erc20Abi3, http as http6, parseUnits as parseUnits2 } from "viem";
5865
+ import { FormattedMessage as FormattedMessage11, useIntl as useIntl16 } from "react-intl";
5866
+ import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
5867
+ function Input2({
5868
+ onChange,
5869
+ placeholder,
5870
+ value,
5871
+ maxLength,
5872
+ type,
5873
+ error,
5874
+ size = "df"
5875
+ }) {
5876
+ return /* @__PURE__ */ jsxs20("div", { className: `matchid-token-input-box ${"matchid-token-input-" + size}`, children: [
5877
+ /* @__PURE__ */ jsx30(
5878
+ "input",
5879
+ {
5880
+ placeholder,
5881
+ onChange,
5882
+ maxLength,
5883
+ type,
5884
+ value,
5885
+ className: `matchid-token-input ${error ? "matchid-token-input-error" : ""}`
5886
+ }
5887
+ ),
5888
+ error && /* @__PURE__ */ jsx30("div", { className: "matchid-token-input-error-text", children: error })
5889
+ ] });
5890
+ }
5891
+ function TokenSend({
5892
+ onClose,
5893
+ zIndex,
5894
+ token,
5895
+ onBack
5896
+ }) {
5897
+ const { list: chainList } = useMatchChain();
5898
+ const intl = useIntl16();
5899
+ const { createWalletClient: createWalletClient2 } = useWallet();
5900
+ const isNative = token.address.toLowerCase() == NATIVE_TOKEN_ADDRESS;
5901
+ const chain = useMemo15(() => {
5902
+ return chainList?.find((m) => m.id.toString() === token.chain_id);
5903
+ }, [chainList, token.chain_id]);
5904
+ const walletClient = useMemo15(() => {
5905
+ return createWalletClient2({
5906
+ // @ts-ignore
5907
+ chain: defineChain4(chain),
5908
+ transport: http6()
5909
+ });
5910
+ }, [chain]);
5911
+ const [amount, setAmount] = useState26("");
5912
+ const [address, setAddress] = useState26("");
5913
+ const [loading, setLoading] = useState26(false);
5914
+ const [sending, setSending] = useState26(false);
5915
+ const [txError, setTxError] = useState26("");
5916
+ const transaction = useMemo15(() => {
5917
+ const reg = /^0x[a-fA-F0-9]{40}$/;
5918
+ if (!amount || !address || !reg.test(address)) {
5919
+ return;
5920
+ }
5921
+ const viemChain = defineChain4(chain);
5922
+ const to = isNative ? address : token.address;
5923
+ const value = isNative ? parseUnits2(amount, parseInt(token?.decimals || "18")) : BigInt(0);
5924
+ const data = isNative ? "0x" : encodeFunctionData2({
5925
+ abi: erc20Abi3,
5926
+ functionName: "transfer",
5927
+ args: [address, parseUnits2(amount, parseInt(token?.decimals || "18"))]
5928
+ });
5929
+ return {
5930
+ to,
5931
+ value,
5932
+ data,
5933
+ chain: viemChain
5934
+ };
5935
+ }, [amount, address]);
5936
+ const onCal = async () => {
5937
+ try {
5938
+ setLoading(true);
5939
+ await walletClient?.prepareTransactionRequest(transaction);
5940
+ } catch (error2) {
5941
+ console.error(error2);
5942
+ setTxError(error2.details || error2.message);
5943
+ } finally {
5944
+ setLoading(false);
5945
+ }
5946
+ };
5947
+ const error = useMemo15(() => {
5948
+ setTxError("");
5949
+ let amountError = "";
5950
+ let addressError = "";
5951
+ if (amount) {
5952
+ if (parseFloat(amount) <= 0) {
5953
+ amountError = intl.formatMessage({
5954
+ id: "tokenAmountMin"
5955
+ });
5956
+ } else if ("balance" in token && parseFloat(amount) > (token.balance || 0)) {
5957
+ amountError = intl.formatMessage({
5958
+ id: "tokenAmountMax"
5959
+ });
5960
+ }
5961
+ }
5962
+ if (address) {
5963
+ if (address.length < 42) {
5964
+ addressError = intl.formatMessage({
5965
+ id: "tokenAddressError"
5966
+ });
5967
+ } else {
5968
+ const reg = /^0x[a-fA-F0-9]{40}$/;
5969
+ if (!reg.test(address)) {
5970
+ addressError = intl.formatMessage({
5971
+ id: "tokenAddressError"
5972
+ });
5973
+ }
5974
+ }
5975
+ }
5976
+ if (amount && address && !amountError && !addressError && walletClient) {
5977
+ onCal();
5978
+ }
5979
+ return {
5980
+ amount: amountError,
5981
+ address: addressError
5982
+ };
5983
+ }, [amount, token, chain, address, walletClient]);
5984
+ const onChangeAmount = (e) => {
5985
+ const value = e.target.value;
5986
+ if (value.match(/^\d*\.?\d*$/)) {
5987
+ setAmount(value);
5988
+ }
5989
+ };
5990
+ const canSend = useMemo15(() => {
5991
+ return !error.amount && !error.address && amount && address;
5992
+ }, [error]);
5993
+ const onNext = async () => {
5994
+ setSending(true);
5995
+ if (transaction) {
5996
+ await walletClient?.sendTransaction(transaction);
5997
+ }
5998
+ onClose();
5999
+ };
6000
+ useEffect24(() => {
6001
+ const receiveMessage = (event) => {
6002
+ if (event.data) {
6003
+ if (event.data.source == "match-wallet") {
6004
+ if (event.data.method == "sendTransaction" && event.data.messageId == "openIframe") {
6005
+ onBack();
6006
+ setSending(false);
6007
+ }
6008
+ }
6009
+ }
6010
+ };
6011
+ window.addEventListener("message", receiveMessage);
6012
+ return () => {
6013
+ window.removeEventListener("message", receiveMessage);
6014
+ };
6015
+ }, []);
6016
+ return /* @__PURE__ */ jsx30(ModalDrawer, { isOpen: true, onClose, zIndex, title: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "send" }), onBack, children: /* @__PURE__ */ jsxs20("div", { className: `matchid-token-send-box`, children: [
6017
+ /* @__PURE__ */ jsxs20("div", { className: "matchid-token-send-content", children: [
6018
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-content`, children: [
6019
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-header`, children: [
6020
+ /* @__PURE__ */ jsx30("div", { className: `matchid-token-amount-title`, children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "amount" }) }),
6021
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-chain`, children: [
6022
+ token.icon ? /* @__PURE__ */ jsx30(
6023
+ "img",
6024
+ {
6025
+ src: token?.icon,
6026
+ alt: token?.symbol,
6027
+ className: `matchid-token-amount-chain-icon`
6028
+ }
6029
+ ) : /* @__PURE__ */ jsx30(AlphaAvatar, { name: token.symbol || token.name || "", size: 16 }),
6030
+ /* @__PURE__ */ jsx30("span", { children: token?.symbol })
6031
+ ] })
6032
+ ] }),
6033
+ /* @__PURE__ */ jsx30(
6034
+ Input2,
6035
+ {
6036
+ type: "text",
6037
+ onChange: onChangeAmount,
6038
+ placeholder: intl.formatMessage({
6039
+ id: "amountPlaceholder"
6040
+ }),
6041
+ value: amount,
6042
+ maxLength: 40,
6043
+ error: error.amount || txError
6044
+ }
6045
+ ),
6046
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-footer`, children: [
6047
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-amount-title`, children: [
6048
+ /* @__PURE__ */ jsx30(FormattedMessage11, { id: "balance" }),
6049
+ ":"
6050
+ ] }),
6051
+ /* @__PURE__ */ jsx30("div", { className: `matchid-token-amount-value`, children: /* @__PURE__ */ jsx30(NumberFormatter, { value: token.balance, tFixNum: 10, suffix: " " + token.symbol }) })
6052
+ ] }),
6053
+ /* @__PURE__ */ jsx30(TransferIcon, { className: "matchid-token-amount-transfer" })
6054
+ ] }),
6055
+ /* @__PURE__ */ jsxs20("div", { className: `matchid-token-address-content`, children: [
6056
+ /* @__PURE__ */ jsx30("div", { className: `matchid-token-address-header`, children: /* @__PURE__ */ jsx30("div", { className: `matchid-token-address-title`, children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "receiveTitle" }) }) }),
6057
+ /* @__PURE__ */ jsx30(
6058
+ Input2,
6059
+ {
6060
+ type: "text",
6061
+ size: "sm",
6062
+ onChange: (e) => setAddress(e.target.value),
6063
+ placeholder: intl.formatMessage({
6064
+ id: "receivePlaceholder"
6065
+ }),
6066
+ value: address,
6067
+ maxLength: 42,
6068
+ error: error.address
6069
+ }
6070
+ )
6071
+ ] })
6072
+ ] }),
6073
+ /* @__PURE__ */ jsx30(
6074
+ Button,
6075
+ {
6076
+ size: "lg",
6077
+ block: true,
6078
+ highlight: true,
6079
+ disabled: !canSend || !!txError,
6080
+ onClick: onNext,
6081
+ loading: loading || sending,
6082
+ children: /* @__PURE__ */ jsx30(FormattedMessage11, { id: "next" })
6083
+ }
6084
+ )
6085
+ ] }) });
6086
+ }
6087
+
6088
+ // src/components/TokenDetail/index.tsx
6089
+ import { FormattedMessage as FormattedMessage12, useIntl as useIntl17 } from "react-intl";
6090
+ import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
6091
+ function TokenDetail({
6092
+ onClose,
6093
+ token
6094
+ }) {
6095
+ const { list: chainList } = useMatchChain();
6096
+ const modal = useModal();
6097
+ const chain = chainList?.find((m) => m.id.toString() === token.chain_id);
6098
+ const onSend = () => {
6099
+ modal.show((props) => {
6100
+ return /* @__PURE__ */ jsx31(TokenSend, { onClose: () => {
6101
+ props.close();
6102
+ onClose();
6103
+ }, onBack: props.close, zIndex: props.zIndex, token });
6104
+ });
6105
+ };
6106
+ const intl = useIntl17();
6107
+ return /* @__PURE__ */ jsx31(ModalDrawer, { isOpen: true, title: intl.formatMessage({
6108
+ id: "tokenDetails"
6109
+ }), onClose, children: /* @__PURE__ */ jsxs21("div", { className: `matchid-token-detail`, children: [
6110
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-main`, children: [
6111
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-info`, children: [
6112
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-logo`, children: [
6113
+ token.icon ? /* @__PURE__ */ jsx31("img", { src: token.icon, alt: token.symbol, className: `matchid-token-icon` }) : /* @__PURE__ */ jsx31(AlphaAvatar, { className: `matchid-token-icon`, size: 48, name: token.symbol || token.name || "" }),
6114
+ chain?.iconUrl && /* @__PURE__ */ jsx31("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-token-chain` })
6115
+ ] }),
6116
+ /* @__PURE__ */ jsxs21("div", { className: `matchid-token-name`, children: [
6117
+ /* @__PURE__ */ jsx31(NumberFormatter, { value: token.balance, tFixNum: 10 }),
6118
+ " ",
6119
+ token.symbol
6120
+ ] })
6121
+ ] }),
6122
+ token.address.toLowerCase() != NATIVE_TOKEN_ADDRESS && /* @__PURE__ */ jsxs21("div", { className: `matchid-token-contract`, children: [
6123
+ /* @__PURE__ */ jsx31("div", { className: "matchid-token-contract-title", children: "Contract address" }),
6124
+ /* @__PURE__ */ jsx31("div", { className: "matchid-token-contract-address", children: token.address })
6125
+ ] })
6126
+ ] }),
6127
+ /* @__PURE__ */ jsx31(Button, { size: "lg", block: true, highlight: true, onClick: onSend, children: /* @__PURE__ */ jsx31(FormattedMessage12, { id: "send" }) })
6128
+ ] }) });
6129
+ }
6130
+
6131
+ // src/components/TokenSendList/index.tsx
6132
+ import { useState as useState27 } from "react";
6133
+ import { FormattedMessage as FormattedMessage13 } from "react-intl";
6134
+ import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
6135
+ function TokenSendList({ close }) {
6136
+ const walletAssets = useMatchWalletAssets();
6137
+ const matchWalletAssetList = useMatchWalletAssetList({
6138
+ list: walletAssets.mergedAssets
6139
+ });
6140
+ const { list } = useMatchChain();
6141
+ const [checked, setChecked] = useState27();
6142
+ const modal = useModal();
6143
+ const onNext = () => {
6144
+ checked && modal.show((props) => {
6145
+ return /* @__PURE__ */ jsx32(TokenSend, { onClose: () => {
6146
+ props.close();
6147
+ close();
6148
+ }, onBack: props.close, zIndex: props.zIndex, token: checked });
6149
+ });
6150
+ };
6151
+ return /* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-list-box", children: [
6152
+ /* @__PURE__ */ jsx32("div", { className: "matchid-token-send-list", children: matchWalletAssetList.list.map((n, index) => {
6153
+ const chain = list?.find((m) => m.id.toString() === n.chain_id);
6154
+ return /* @__PURE__ */ jsxs22(
6155
+ "div",
6156
+ {
6157
+ className: `matchid-token-send-item ${checked?.address == n.address ? "matchid-token-send-chekced" : ""}`,
6158
+ onClick: () => {
6159
+ setChecked(n);
6160
+ },
6161
+ children: [
6162
+ /* @__PURE__ */ jsx32(Radio, { checked: checked?.address == n.address }),
6163
+ /* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-content", children: [
6164
+ /* @__PURE__ */ jsxs22("div", { className: "matchid-token-send-logo", children: [
6165
+ n.icon ? /* @__PURE__ */ jsx32("img", { src: n.icon, alt: n.symbol, className: `matchid-token-send-icon` }) : /* @__PURE__ */ jsx32(
6166
+ AlphaAvatar2,
6167
+ {
6168
+ className: `matchid-token-send-icon`,
6169
+ size: 40,
6170
+ name: n.symbol || n.name || ""
6171
+ }
6172
+ ),
6173
+ chain?.iconUrl && /* @__PURE__ */ jsx32(
6174
+ "img",
6175
+ {
6176
+ src: chain.iconUrl,
6177
+ alt: chain.name,
6178
+ className: `matchid-token-send-chain`
6179
+ }
6180
+ )
6181
+ ] }),
6182
+ /* @__PURE__ */ jsxs22("div", { className: `matchid-token-send-info`, children: [
6183
+ /* @__PURE__ */ jsx32("div", { className: `matchid-token-send-name`, children: n.symbol }),
6184
+ /* @__PURE__ */ jsx32("div", { className: `matchid-token-send-balance`, children: /* @__PURE__ */ jsx32(NumberFormatter, { value: n.balance, tFixNum: 3 }) })
6185
+ ] })
6186
+ ] })
6187
+ ]
6188
+ },
6189
+ index
6190
+ );
6191
+ }) }),
6192
+ /* @__PURE__ */ jsx32(Button, { size: "lg", highlight: true, block: true, disabled: !checked, onClick: onNext, children: /* @__PURE__ */ jsx32(FormattedMessage13, { id: "next" }) })
6193
+ ] });
6194
+ }
6195
+
6196
+ // src/components/TransactionList/index.tsx
6197
+ import InfiniteScroll from "react-infinite-scroll-component";
6198
+ import { useEffect as useEffect25, useMemo as useMemo16, useState as useState28 } from "react";
6199
+ import { decodeFunctionData, defineChain as defineChain5, formatUnits as formatUnits3 } from "viem";
6200
+ import { erc20Abi as erc20Abi4 } from "viem";
6201
+ import { FormattedMessage as FormattedMessage14 } from "react-intl";
6202
+ import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
6203
+ var Item = ({ data }) => {
6204
+ const { address } = useWallet();
6205
+ const isOut = data.from.toLowerCase() == address.toLowerCase();
6206
+ const { chain, chainId, explorerLink, formatUnits: chainFormatUnits } = useMatchChain();
6207
+ const { contracts } = useContractStore_default();
6208
+ const [shouldRefetch, setShouldRefetch] = useState28(true);
6209
+ const transferType = useMemo16(() => {
6210
+ const methodId = data.input.substring(2, 10);
6211
+ if (methodId == "095ea7b3") {
6212
+ return "erc20_approve";
6213
+ }
6214
+ if (methodId == "a9059cbb") {
6215
+ return "erc20_transfer";
6216
+ }
6217
+ return "unknown";
6218
+ }, [data.input]);
6219
+ const to = useMemo16(() => {
6220
+ if (!isOut) {
6221
+ return data.from;
6222
+ }
6223
+ if (transferType == "erc20_transfer") {
6224
+ const decodeData = decodeFunctionData({
6225
+ abi: erc20Abi4,
6226
+ data: data.input
6227
+ });
6228
+ return decodeData.args[0];
6229
+ }
6230
+ return data.to;
6231
+ }, [data.input, transferType, data.to, isOut]);
6232
+ const amount = useMemo16(() => {
6233
+ if (transferType == "erc20_transfer") {
6234
+ const decodeData = decodeFunctionData({
6235
+ abi: erc20Abi4,
6236
+ data: data.input
6237
+ });
6238
+ const value = decodeData.args[1];
6239
+ return formatUnits3(value, contracts[`${chainId}-${data.to.toLowerCase()}`]?.decimals || 18);
6240
+ }
6241
+ return chainFormatUnits(BigInt(data.value));
6242
+ }, [data.input, transferType, data.value, contracts, chainId, data.to]);
6243
+ const hashQuery = useHash({
6244
+ hash: data.hash,
6245
+ //@ts-ignore
6246
+ chain: defineChain5(chain),
6247
+ refetchInterval: shouldRefetch ? 3e3 : false,
6248
+ enabled: shouldRefetch && data.source == "local"
6249
+ });
6250
+ const status = useMemo16(() => {
6251
+ if (data.source == "matchain") {
6252
+ switch (data.extra.status) {
6253
+ case "ok":
6254
+ return "success";
6255
+ case "error":
6256
+ return "error";
6257
+ }
6258
+ } else if (data.source == "auto") {
6259
+ if (data.extra.receipt_status == 1) {
6260
+ return "success";
6261
+ } else {
6262
+ return "error";
6263
+ }
6264
+ } else {
6265
+ if (hashQuery.data == 1) {
6266
+ return "success";
6267
+ }
6268
+ if (hashQuery.data == -1) {
6269
+ return "error";
6270
+ }
6271
+ if (Date.now() / 1e3 - parseInt(data.timestamp) > 3600) {
6272
+ return "error";
6273
+ }
6274
+ }
6275
+ return "loading";
6276
+ }, [data.extra?.status, data.source, hashQuery.data]);
6277
+ useEffect25(() => {
6278
+ if (data.hash) {
6279
+ setShouldRefetch(status == "loading");
6280
+ }
6281
+ }, [status, data.hash]);
6282
+ const symbol = useMemo16(() => {
6283
+ if (transferType == "erc20_transfer") {
6284
+ const contract = contracts[`${chainId}-${data.to.toLowerCase()}`];
6285
+ return contract?.symbol || contract?.name || "unknown";
6286
+ }
6287
+ return chain?.nativeCurrency.symbol || chain?.nativeCurrency.name;
6288
+ }, [transferType, chain, contracts, chainId, data.to]);
6289
+ return /* @__PURE__ */ jsxs23(
6290
+ "a",
6291
+ {
6292
+ href: explorerLink(`tx/${data.hash}`),
6293
+ target: "_blank",
6294
+ className: `matchid-transaction-item`,
6295
+ children: [
6296
+ /* @__PURE__ */ jsxs23("div", { className: `matchid-transacton-item-container`, children: [
6297
+ /* @__PURE__ */ jsx33("div", { className: "matchid-transaction-item-icon", children: /* @__PURE__ */ jsx33(ArrowSendIcon, { className: !isOut ? "rotate-180" : "" }) }),
6298
+ /* @__PURE__ */ jsxs23("div", { className: `matchid-transaction-item-details`, children: [
6299
+ /* @__PURE__ */ jsx33("div", { className: `matchid-transaction-item-address`, children: formatAddress(to, 6, 4) }),
6300
+ /* @__PURE__ */ jsx33(
6301
+ "div",
6302
+ {
6303
+ className: `matchid-transaction-item-timestamp`,
6304
+ children: formatDate(data.timestamp, "MM/DD HH:mm:ss")
6305
+ }
6306
+ )
6307
+ ] })
6308
+ ] }),
6309
+ /* @__PURE__ */ jsxs23("div", { className: `matchid-transaction-item-amount ${"matchid-transaction-item-" + status}`, children: [
6310
+ /* @__PURE__ */ jsx33(NumberFormatter, { value: amount, tFixNum: 6, prefix: isOut ? "-" : "+", suffix: " " + symbol }),
6311
+ status == "loading" && /* @__PURE__ */ jsx33(LoadingIcon_default, { color: "#000000", size: 16, rotate: true }),
6312
+ status == "success" && /* @__PURE__ */ jsx33(CheckRoundIcon, { size: 16 }),
6313
+ status == "error" && /* @__PURE__ */ jsx33(InfoRoundIcon, { size: 16 })
6314
+ ] })
6315
+ ]
6316
+ }
6317
+ );
6318
+ };
6319
+ function TransactionList({
6320
+ scrollableTarget
6321
+ }) {
6322
+ const { fetchMoreData, hasMore, items } = useMatchWalletRecords();
6323
+ return /* @__PURE__ */ jsx33(
6324
+ InfiniteScroll,
6325
+ {
6326
+ scrollableTarget,
6327
+ dataLength: items.length,
6328
+ next: fetchMoreData,
6329
+ hasMore,
6330
+ loader: /* @__PURE__ */ jsxs23("div", { className: "matchid-list-nomore", children: [
6331
+ /* @__PURE__ */ jsx33(LoadingIcon_default, { rotate: true, size: 16, color: "black" }),
6332
+ "Loading..."
6333
+ ] }),
6334
+ endMessage: items.length > 0 ? /* @__PURE__ */ jsx33("div", { className: `matchid-list-nomore`, children: /* @__PURE__ */ jsx33(FormattedMessage14, { id: "noMoreRecords" }) }) : /* @__PURE__ */ jsx33("div", { className: `matchid-list-nomore`, children: /* @__PURE__ */ jsx33(FormattedMessage14, { id: "noRecords" }) }),
6335
+ children: items.length == 0 && !hasMore ? /* @__PURE__ */ jsx33("div", { className: "mt-[150px]" }) : /* @__PURE__ */ jsx33("div", { className: `matchid-transaction-list`, children: items.map((item, index) => /* @__PURE__ */ jsx33(Item, { data: item }, index)) })
6336
+ }
6337
+ );
5029
6338
  }
5030
6339
 
5031
6340
  export {
@@ -5041,9 +6350,9 @@ export {
5041
6350
  mintPassportNftApi,
5042
6351
  useUserInfo,
5043
6352
  useMatchEvents,
6353
+ useModal,
5044
6354
  useWallet,
5045
6355
  useCopyClipboard,
5046
- useModal,
5047
6356
  useToast,
5048
6357
  wallet_exports,
5049
6358
  useMatchChain,
@@ -5058,13 +6367,20 @@ export {
5058
6367
  TONModal,
5059
6368
  BTCModal,
5060
6369
  WalletModal,
6370
+ WalletAsset,
6371
+ TokenSend,
6372
+ TokenDetail,
6373
+ TokenSendList,
6374
+ TransactionList,
5061
6375
  components_exports,
5062
6376
  useMatchWallet,
5063
6377
  useMatchWalletRecords,
6378
+ useMatchWalletAssets,
6379
+ useMatchWalletAssetList,
5064
6380
  useReceipt,
5065
6381
  useTransaction,
5066
6382
  hooks_exports,
5067
6383
  MatchProvider,
5068
6384
  useMatch
5069
6385
  };
5070
- //# sourceMappingURL=chunk-CI63DTB6.mjs.map
6386
+ //# sourceMappingURL=chunk-YSASIFLY.mjs.map