@cfxjs/sirius-next-common 0.1.29 → 0.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-3A4LE5OK.js +49 -0
- package/dist/chunk-3A4LE5OK.js.map +1 -0
- package/dist/chunk-3D63CPYB.js +2324 -0
- package/dist/chunk-3D63CPYB.js.map +1 -0
- package/dist/chunk-477HNUQM.js +63 -0
- package/dist/chunk-477HNUQM.js.map +1 -0
- package/dist/chunk-47CQDRI6.js +63 -0
- package/dist/chunk-47CQDRI6.js.map +1 -0
- package/dist/chunk-4QV2QZUP.js +212 -0
- package/dist/chunk-4QV2QZUP.js.map +1 -0
- package/dist/chunk-562J5LFF.js +246 -0
- package/dist/chunk-562J5LFF.js.map +1 -0
- package/dist/chunk-5ET2WT43.js +108 -0
- package/dist/chunk-5ET2WT43.js.map +1 -0
- package/dist/chunk-5FMESSK6.js +745 -0
- package/dist/chunk-5FMESSK6.js.map +1 -0
- package/dist/chunk-5IJQNIWM.js +2324 -0
- package/dist/chunk-5IJQNIWM.js.map +1 -0
- package/dist/chunk-5KR5M3LI.js +212 -0
- package/dist/chunk-5KR5M3LI.js.map +1 -0
- package/dist/chunk-5PC6ZUSP.js +49 -0
- package/dist/chunk-5PC6ZUSP.js.map +1 -0
- package/dist/chunk-5TBPQWGO.js +63 -0
- package/dist/chunk-5TBPQWGO.js.map +1 -0
- package/dist/chunk-62QRMHTS.js +244 -0
- package/dist/chunk-62QRMHTS.js.map +1 -0
- package/dist/chunk-7BBDDNFI.js +3629 -0
- package/dist/chunk-7BBDDNFI.js.map +1 -0
- package/dist/chunk-7WYVSPSJ.js +745 -0
- package/dist/chunk-7WYVSPSJ.js.map +1 -0
- package/dist/chunk-AS7RCHEU.js +212 -0
- package/dist/chunk-AS7RCHEU.js.map +1 -0
- package/dist/chunk-AYFDTOKM.js +127 -0
- package/dist/chunk-AYFDTOKM.js.map +1 -0
- package/dist/chunk-B2BIAMGC.js +2324 -0
- package/dist/chunk-B2BIAMGC.js.map +1 -0
- package/dist/chunk-BAXJ65FV.js +141 -0
- package/dist/chunk-BAXJ65FV.js.map +1 -0
- package/dist/chunk-BIXKB2BM.js +127 -0
- package/dist/chunk-BIXKB2BM.js.map +1 -0
- package/dist/chunk-BMC7K6XL.js +108 -0
- package/dist/chunk-BMC7K6XL.js.map +1 -0
- package/dist/chunk-BTGKYV55.js +244 -0
- package/dist/chunk-BTGKYV55.js.map +1 -0
- package/dist/chunk-CAZ6T2TX.js +745 -0
- package/dist/chunk-CAZ6T2TX.js.map +1 -0
- package/dist/chunk-D2WT6AUU.js +2324 -0
- package/dist/chunk-D2WT6AUU.js.map +1 -0
- package/dist/chunk-DDAGQ2JK.js +150 -0
- package/dist/chunk-DDAGQ2JK.js.map +1 -0
- package/dist/chunk-DSMBYGOR.js +141 -0
- package/dist/chunk-DSMBYGOR.js.map +1 -0
- package/dist/chunk-DVJSOTHM.js +141 -0
- package/dist/chunk-DVJSOTHM.js.map +1 -0
- package/dist/chunk-FJE2PVRA.js +745 -0
- package/dist/chunk-FJE2PVRA.js.map +1 -0
- package/dist/chunk-GG35SV7M.js +2324 -0
- package/dist/chunk-GG35SV7M.js.map +1 -0
- package/dist/chunk-GJCF27KI.js +105 -0
- package/dist/chunk-GJCF27KI.js.map +1 -0
- package/dist/chunk-GSS7YAQU.js +3629 -0
- package/dist/chunk-GSS7YAQU.js.map +1 -0
- package/dist/chunk-GTOQ3FIN.js +49 -0
- package/dist/chunk-GTOQ3FIN.js.map +1 -0
- package/dist/chunk-HFSZYAU2.js +141 -0
- package/dist/chunk-HFSZYAU2.js.map +1 -0
- package/dist/chunk-HZ4M5LY2.js +3629 -0
- package/dist/chunk-HZ4M5LY2.js.map +1 -0
- package/dist/chunk-INIJGBG4.js +212 -0
- package/dist/chunk-INIJGBG4.js.map +1 -0
- package/dist/chunk-ISMLXDGF.js +150 -0
- package/dist/chunk-ISMLXDGF.js.map +1 -0
- package/dist/chunk-JEDBRDNZ.js +150 -0
- package/dist/chunk-JEDBRDNZ.js.map +1 -0
- package/dist/chunk-JVUY3R5I.js +244 -0
- package/dist/chunk-JVUY3R5I.js.map +1 -0
- package/dist/chunk-L65TAZGA.js +2324 -0
- package/dist/chunk-L65TAZGA.js.map +1 -0
- package/dist/chunk-LEGITSAD.js +105 -0
- package/dist/chunk-LEGITSAD.js.map +1 -0
- package/dist/chunk-LLTRCE44.js +127 -0
- package/dist/chunk-LLTRCE44.js.map +1 -0
- package/dist/chunk-MDJJ2N7B.js +49 -0
- package/dist/chunk-MDJJ2N7B.js.map +1 -0
- package/dist/chunk-MO6EWADQ.js +63 -0
- package/dist/chunk-MO6EWADQ.js.map +1 -0
- package/dist/chunk-MT5ZPVBD.js +212 -0
- package/dist/chunk-MT5ZPVBD.js.map +1 -0
- package/dist/chunk-NCKPYRTE.js +105 -0
- package/dist/chunk-NCKPYRTE.js.map +1 -0
- package/dist/chunk-NHXG5FKK.js +108 -0
- package/dist/chunk-NHXG5FKK.js.map +1 -0
- package/dist/chunk-NQ5QNBNM.js +105 -0
- package/dist/chunk-NQ5QNBNM.js.map +1 -0
- package/dist/chunk-NVSEXPAT.js +3629 -0
- package/dist/chunk-NVSEXPAT.js.map +1 -0
- package/dist/chunk-NXGS5QEO.js +141 -0
- package/dist/chunk-NXGS5QEO.js.map +1 -0
- package/dist/chunk-NXXSUIXY.js +150 -0
- package/dist/chunk-NXXSUIXY.js.map +1 -0
- package/dist/chunk-PXXEFNOE.js +3629 -0
- package/dist/chunk-PXXEFNOE.js.map +1 -0
- package/dist/chunk-Q3MMY6EU.js +244 -0
- package/dist/chunk-Q3MMY6EU.js.map +1 -0
- package/dist/chunk-Q5D5FHO7.js +212 -0
- package/dist/chunk-Q5D5FHO7.js.map +1 -0
- package/dist/chunk-QCVM6HOF.js +3629 -0
- package/dist/chunk-QCVM6HOF.js.map +1 -0
- package/dist/chunk-QFAWAODA.js +150 -0
- package/dist/chunk-QFAWAODA.js.map +1 -0
- package/dist/chunk-QUOMAXP4.js +2324 -0
- package/dist/chunk-QUOMAXP4.js.map +1 -0
- package/dist/chunk-QY5G7QYB.js +150 -0
- package/dist/chunk-QY5G7QYB.js.map +1 -0
- package/dist/chunk-RLQ7WP5W.js +127 -0
- package/dist/chunk-RLQ7WP5W.js.map +1 -0
- package/dist/chunk-RP27EARH.js +49 -0
- package/dist/chunk-RP27EARH.js.map +1 -0
- package/dist/chunk-RVL3W5DP.js +105 -0
- package/dist/chunk-RVL3W5DP.js.map +1 -0
- package/dist/chunk-S335KQ5D.js +49 -0
- package/dist/chunk-S335KQ5D.js.map +1 -0
- package/dist/chunk-SN6AMUVZ.js +108 -0
- package/dist/chunk-SN6AMUVZ.js.map +1 -0
- package/dist/chunk-SOL2SFT2.js +246 -0
- package/dist/chunk-SOL2SFT2.js.map +1 -0
- package/dist/chunk-T54ODLMI.js +49 -0
- package/dist/chunk-T54ODLMI.js.map +1 -0
- package/dist/chunk-T7FNENEU.js +150 -0
- package/dist/chunk-T7FNENEU.js.map +1 -0
- package/dist/chunk-TGW2NDL5.js +108 -0
- package/dist/chunk-TGW2NDL5.js.map +1 -0
- package/dist/chunk-TIAC33MC.js +745 -0
- package/dist/chunk-TIAC33MC.js.map +1 -0
- package/dist/chunk-TLIOHXCZ.js +63 -0
- package/dist/chunk-TLIOHXCZ.js.map +1 -0
- package/dist/chunk-UCDEIGII.js +141 -0
- package/dist/chunk-UCDEIGII.js.map +1 -0
- package/dist/chunk-UGV7LSWR.js +745 -0
- package/dist/chunk-UGV7LSWR.js.map +1 -0
- package/dist/chunk-UVTOU2ZP.js +127 -0
- package/dist/chunk-UVTOU2ZP.js.map +1 -0
- package/dist/chunk-V7FEY5O4.js +127 -0
- package/dist/chunk-V7FEY5O4.js.map +1 -0
- package/dist/chunk-VMQBNQNS.js +141 -0
- package/dist/chunk-VMQBNQNS.js.map +1 -0
- package/dist/chunk-W5TV463S.js +127 -0
- package/dist/chunk-W5TV463S.js.map +1 -0
- package/dist/chunk-WEOKDVJD.js +108 -0
- package/dist/chunk-WEOKDVJD.js.map +1 -0
- package/dist/chunk-XC53X56K.js +108 -0
- package/dist/chunk-XC53X56K.js.map +1 -0
- package/dist/chunk-XCPB27SN.js +745 -0
- package/dist/chunk-XCPB27SN.js.map +1 -0
- package/dist/chunk-XYR4GKBH.js +63 -0
- package/dist/chunk-XYR4GKBH.js.map +1 -0
- package/dist/chunk-Y7TGANWP.js +212 -0
- package/dist/chunk-Y7TGANWP.js.map +1 -0
- package/dist/chunk-YKN5WWYP.js +63 -0
- package/dist/chunk-YKN5WWYP.js.map +1 -0
- package/dist/chunk-YVVEURB7.js +3629 -0
- package/dist/chunk-YVVEURB7.js.map +1 -0
- package/dist/chunk-YXISQECP.js +244 -0
- package/dist/chunk-YXISQECP.js.map +1 -0
- package/dist/chunk-Z2WEOQ72.js +105 -0
- package/dist/chunk-Z2WEOQ72.js.map +1 -0
- package/dist/chunk-ZKPSSERO.js +105 -0
- package/dist/chunk-ZKPSSERO.js.map +1 -0
- package/dist/components/AddressContainer/CoreAddressContainer.js +9 -9
- package/dist/components/AddressContainer/EVMAddressContainer.js +8 -8
- package/dist/components/AddressContainer/addressSwitcher.js +6 -6
- package/dist/components/AddressContainer/addressView.js +5 -5
- package/dist/components/AddressContainer/label.js +4 -4
- package/dist/components/Age/index.js +4 -4
- package/dist/components/Charts/PreviewChartTemplate.js +1 -1
- package/dist/components/Charts/StockChartTemplate.js +1 -1
- package/dist/components/CopyButton/index.js +3 -3
- package/dist/components/DownloadCSV/index.js +5 -9
- package/dist/components/DownloadCSV/index.js.map +1 -1
- package/dist/components/Dropdown/index.js +7 -13
- package/dist/components/Dropdown/index.js.map +1 -1
- package/dist/components/GasPriceDropdown/index.js +2 -2
- package/dist/components/IncreasePercent/index.js +2 -2
- package/dist/components/InfoIconWithTooltip/index.js +3 -3
- package/dist/components/Modal/index.js +3 -3
- package/dist/components/PhishingAddressContainer/index.js +3 -3
- package/dist/components/Price/index.js +3 -3
- package/dist/components/Radio/index.js +2 -2
- package/dist/components/Select/index.js +3 -3
- package/dist/components/Select/select.js +3 -3
- package/dist/components/Text/index.js +4 -4
- package/dist/components/Tooltip/index.js +3 -3
- package/dist/components/TransactionAction/coreTransactionAction.js +9 -9
- package/dist/components/TransactionAction/evmTransactionAction.js +8 -8
- package/dist/utils/hooks/useENS.js +2 -2
- package/dist/utils/index.js +2 -2
- package/dist/utils/request.d.ts +2 -2
- package/dist/utils/request.js +3 -3
- package/package.json +4 -4
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isCoreMainOrTestAddress
|
|
3
|
+
} from "./chunk-BVWWK2EL.js";
|
|
4
|
+
import {
|
|
5
|
+
apiPrefix
|
|
6
|
+
} from "./chunk-7RH7LJYB.js";
|
|
7
|
+
import {
|
|
8
|
+
sendRequestENSInfo
|
|
9
|
+
} from "./chunk-562J5LFF.js";
|
|
10
|
+
import {
|
|
11
|
+
useENSStore
|
|
12
|
+
} from "./chunk-DQGLZCIG.js";
|
|
13
|
+
|
|
14
|
+
// src/utils/hooks/useENS.ts
|
|
15
|
+
import { useEffect } from "react";
|
|
16
|
+
import useSWR from "swr";
|
|
17
|
+
var ensUrl = (ens, value) => {
|
|
18
|
+
if (!value)
|
|
19
|
+
return null;
|
|
20
|
+
if (typeof value === "string" && ens[value])
|
|
21
|
+
return null;
|
|
22
|
+
let url = null;
|
|
23
|
+
if (typeof value === "string" && isCoreMainOrTestAddress(value)) {
|
|
24
|
+
url = `${apiPrefix}/ens/reverse/match?address=${value}`;
|
|
25
|
+
} else if (Array.isArray(value) && value.length) {
|
|
26
|
+
const validAddresses = value.filter(
|
|
27
|
+
(v) => typeof v === "string" && isCoreMainOrTestAddress(v) && !ens[v]
|
|
28
|
+
);
|
|
29
|
+
if (validAddresses.length === 0)
|
|
30
|
+
return null;
|
|
31
|
+
const baseUrl = `${apiPrefix}/ens/reverse/match?`;
|
|
32
|
+
const maxQueryLength = 1800 - baseUrl.length;
|
|
33
|
+
const query = validAddresses.reduce((acc, curr, index) => {
|
|
34
|
+
const newPart = `${index === 0 ? "" : "&"}address=${curr}`;
|
|
35
|
+
if (acc.length + newPart.length > maxQueryLength) {
|
|
36
|
+
return acc;
|
|
37
|
+
}
|
|
38
|
+
return acc + newPart;
|
|
39
|
+
}, "");
|
|
40
|
+
if (query) {
|
|
41
|
+
url = baseUrl + query;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return url;
|
|
45
|
+
};
|
|
46
|
+
var useENS = (address) => {
|
|
47
|
+
const { ens, setENS } = useENSStore();
|
|
48
|
+
const url = ensUrl(ens, address);
|
|
49
|
+
const { data } = useSWR(url, () => sendRequestENSInfo(url), {
|
|
50
|
+
revalidateOnFocus: false
|
|
51
|
+
});
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (data) {
|
|
54
|
+
setENS(data);
|
|
55
|
+
}
|
|
56
|
+
}, [data]);
|
|
57
|
+
return { ens };
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export {
|
|
61
|
+
useENS
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=chunk-47CQDRI6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/hooks/useENS.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport useSWR from 'swr';\nimport { sendRequestENSInfo } from 'src/utils/request';\nimport { useENSStore } from '../../store';\nimport { ENSType } from '../../store/types';\nimport { isCoreMainOrTestAddress } from '../address';\nimport { apiPrefix } from '../constants';\n\nconst ensUrl = (ens: ENSType, value: string | null | string[]) => {\n if (!value) return null;\n if (typeof value === 'string' && ens[value]) return null;\n\n let url = null;\n\n if (typeof value === 'string' && isCoreMainOrTestAddress(value)) {\n url = `${apiPrefix}/ens/reverse/match?address=${value}`;\n } else if (Array.isArray(value) && value.length) {\n const validAddresses = value.filter(\n v => typeof v === 'string' && isCoreMainOrTestAddress(v) && !ens[v],\n );\n if (validAddresses.length === 0) return null;\n\n const baseUrl = `${apiPrefix}/ens/reverse/match?`;\n const maxQueryLength = 1800 - baseUrl.length;\n\n const query = validAddresses.reduce((acc, curr, index) => {\n const newPart = `${index === 0 ? '' : '&'}address=${curr}`;\n if (acc.length + newPart.length > maxQueryLength) {\n return acc;\n }\n return acc + newPart;\n }, '');\n\n if (query) {\n url = baseUrl + query;\n }\n }\n\n return url;\n};\n\nexport const useENS = (address: string | null | string[]) => {\n const { ens, setENS } = useENSStore();\n\n const url = ensUrl(ens, address);\n\n const { data } = useSWR(url, () => sendRequestENSInfo(url), {\n revalidateOnFocus: false,\n });\n\n useEffect(() => {\n if (data) {\n setENS(data);\n }\n }, [data]);\n\n return { ens };\n};\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,iBAAiB;AAC1B,OAAO,YAAY;AAOnB,IAAM,SAAS,CAAC,KAAc,UAAoC;AAChE,MAAI,CAAC;AAAO,WAAO;AACnB,MAAI,OAAO,UAAU,YAAY,IAAI,KAAK;AAAG,WAAO;AAEpD,MAAI,MAAM;AAEV,MAAI,OAAO,UAAU,YAAY,wBAAwB,KAAK,GAAG;AAC/D,UAAM,GAAG,uCAAuC;AAAA,EAClD,WAAW,MAAM,QAAQ,KAAK,KAAK,MAAM,QAAQ;AAC/C,UAAM,iBAAiB,MAAM;AAAA,MAC3B,OAAK,OAAO,MAAM,YAAY,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC;AAAA,IACpE;AACA,QAAI,eAAe,WAAW;AAAG,aAAO;AAExC,UAAM,UAAU,GAAG;AACnB,UAAM,iBAAiB,OAAO,QAAQ;AAEtC,UAAM,QAAQ,eAAe,OAAO,CAAC,KAAK,MAAM,UAAU;AACxD,YAAM,UAAU,GAAG,UAAU,IAAI,KAAK,cAAc;AACpD,UAAI,IAAI,SAAS,QAAQ,SAAS,gBAAgB;AAChD,eAAO;AAAA,MACT;AACA,aAAO,MAAM;AAAA,IACf,GAAG,EAAE;AAEL,QAAI,OAAO;AACT,YAAM,UAAU;AAAA,IAClB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,SAAS,CAAC,YAAsC;AAC3D,QAAM,EAAE,KAAK,OAAO,IAAI,YAAY;AAEpC,QAAM,MAAM,OAAO,KAAK,OAAO;AAE/B,QAAM,EAAE,KAAK,IAAI,OAAO,KAAK,MAAM,mBAAmB,GAAG,GAAG;AAAA,IAC1D,mBAAmB;AAAA,EACrB,CAAC;AAED,YAAU,MAAM;AACd,QAAI,MAAM;AACR,aAAO,IAAI;AAAA,IACb;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,SAAO,EAAE,IAAI;AACf;","names":[]}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RenderAddress
|
|
3
|
+
} from "./chunk-V7FEY5O4.js";
|
|
4
|
+
import {
|
|
5
|
+
formatAddress,
|
|
6
|
+
isInnerContractAddress
|
|
7
|
+
} from "./chunk-BVWWK2EL.js";
|
|
8
|
+
import {
|
|
9
|
+
Tooltip
|
|
10
|
+
} from "./chunk-3D63CPYB.js";
|
|
11
|
+
import {
|
|
12
|
+
coreCorrespondsToEspace,
|
|
13
|
+
formatString,
|
|
14
|
+
getNetwork
|
|
15
|
+
} from "./chunk-TIAC33MC.js";
|
|
16
|
+
import {
|
|
17
|
+
getEnvConfig,
|
|
18
|
+
getTranslations,
|
|
19
|
+
useGlobalData
|
|
20
|
+
} from "./chunk-DQGLZCIG.js";
|
|
21
|
+
|
|
22
|
+
// src/components/AddressContainer/addressSwitcher.tsx
|
|
23
|
+
import { AlertTriangle, File } from "@zeit-ui/react-icons";
|
|
24
|
+
import InternalContractIcon from "./internal-contract-icon-ZH2RG3CU.png";
|
|
25
|
+
import ContractIcon from "./contract-icon-P3W2HUAA.png";
|
|
26
|
+
import VerifiedIcon from "./verified-VJRHZNN7.png";
|
|
27
|
+
import isMeIcon from "./me-SIV36SR7.png";
|
|
28
|
+
import { isPosAddress } from "@cfx-kit/dapp-utils/dist/address";
|
|
29
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
30
|
+
var ContractCreatedAddress = (props) => {
|
|
31
|
+
const { contractCreated = "", outputType, t, isFull } = props;
|
|
32
|
+
const translations = getTranslations();
|
|
33
|
+
const contractAddress = formatAddress(contractCreated, outputType);
|
|
34
|
+
const customProps = {
|
|
35
|
+
content: t(translations.transaction.contractCreation),
|
|
36
|
+
alias: t(translations.transaction.contractCreation),
|
|
37
|
+
hrefAddress: contractAddress,
|
|
38
|
+
cfxAddress: contractAddress,
|
|
39
|
+
maxWidth: 160
|
|
40
|
+
};
|
|
41
|
+
const mergedProps = { ...props, ...customProps };
|
|
42
|
+
return RenderAddress({
|
|
43
|
+
...mergedProps,
|
|
44
|
+
prefix: /* @__PURE__ */ jsx("div", { className: `mr-[2px] flex-shrink-0 ${isFull ? "icon" : ""}`, children: /* @__PURE__ */ jsx(Tooltip, { title: mergedProps.content, children: /* @__PURE__ */ jsx("div", { className: "relative w-[16px] h-[16px]", children: /* @__PURE__ */ jsx(
|
|
45
|
+
"img",
|
|
46
|
+
{
|
|
47
|
+
className: "w-[16px] h-[16px] align-bottom mb-[3px]",
|
|
48
|
+
src: ContractIcon,
|
|
49
|
+
alt: mergedProps.content
|
|
50
|
+
}
|
|
51
|
+
) }) }) })
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
var CoreHexAddress = (props) => {
|
|
55
|
+
const { value, t, isFull, maxWidth } = props;
|
|
56
|
+
const { globalData } = useGlobalData();
|
|
57
|
+
const ENV_CONFIG = getEnvConfig();
|
|
58
|
+
const translations = getTranslations();
|
|
59
|
+
const hexAddress = formatAddress(value, "hex");
|
|
60
|
+
const network = getNetwork(
|
|
61
|
+
globalData?.networks,
|
|
62
|
+
coreCorrespondsToEspace(ENV_CONFIG.ENV_NETWORK_ID)
|
|
63
|
+
);
|
|
64
|
+
const url = `${window.location.protocol}${network.url}/address/${hexAddress}`;
|
|
65
|
+
return RenderAddress({
|
|
66
|
+
cfxAddress: hexAddress,
|
|
67
|
+
hoverValue: hexAddress,
|
|
68
|
+
link: url,
|
|
69
|
+
isFull,
|
|
70
|
+
maxWidth,
|
|
71
|
+
suffixSize: 0,
|
|
72
|
+
prefix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(Tooltip, { title: t(translations.general.eSpaceAddress), children: /* @__PURE__ */ jsx(File, { size: 16, color: "#17B38A" }) }) })
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
var InvalidAddress = (props) => {
|
|
76
|
+
const {
|
|
77
|
+
value,
|
|
78
|
+
alias,
|
|
79
|
+
t,
|
|
80
|
+
isFull,
|
|
81
|
+
maxWidth,
|
|
82
|
+
isFullNameTag,
|
|
83
|
+
hideAliasPrefixInHover
|
|
84
|
+
} = props;
|
|
85
|
+
const translations = getTranslations();
|
|
86
|
+
const tip = t(translations.general.invalidAddress);
|
|
87
|
+
return RenderAddress({
|
|
88
|
+
cfxAddress: value,
|
|
89
|
+
alias,
|
|
90
|
+
hoverValue: `${tip}: ${value}`,
|
|
91
|
+
content: alias ? formatString(alias, "tag") : value,
|
|
92
|
+
link: false,
|
|
93
|
+
isFull,
|
|
94
|
+
isFullNameTag,
|
|
95
|
+
maxWidth,
|
|
96
|
+
style: { color: "#e00909" },
|
|
97
|
+
prefix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(Tooltip, { title: tip, children: /* @__PURE__ */ jsx(AlertTriangle, { size: 16, color: "#e00909" }) }) }),
|
|
98
|
+
hideAliasPrefixInHover
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
var ContractAddress = (props) => {
|
|
102
|
+
const { showIcon, verify, t, cfxAddress, isFull } = props;
|
|
103
|
+
const translations = getTranslations();
|
|
104
|
+
const isInnerContract = cfxAddress && isInnerContractAddress(cfxAddress);
|
|
105
|
+
const typeText = t(
|
|
106
|
+
isInnerContract ? translations.general.internalContract : verify ? translations.general.verifiedContract : translations.general.unverifiedContract
|
|
107
|
+
);
|
|
108
|
+
return RenderAddress({
|
|
109
|
+
...props,
|
|
110
|
+
prefix: showIcon ? /* @__PURE__ */ jsx("div", { className: `mr-[2px] flex-shrink-0 ${isFull ? "icon" : ""}`, children: /* @__PURE__ */ jsx(Tooltip, { title: typeText, children: /* @__PURE__ */ jsx("div", { className: "relative w-[16px] h-[16px]", children: isInnerContract ? /* @__PURE__ */ jsx(
|
|
111
|
+
"img",
|
|
112
|
+
{
|
|
113
|
+
className: "w-[16px] h-[16px] align-bottom mb-[5px]",
|
|
114
|
+
src: InternalContractIcon,
|
|
115
|
+
alt: typeText
|
|
116
|
+
}
|
|
117
|
+
) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
118
|
+
/* @__PURE__ */ jsx(
|
|
119
|
+
"img",
|
|
120
|
+
{
|
|
121
|
+
className: "w-[16px] h-[16px] align-bottom mb-[5px]",
|
|
122
|
+
src: ContractIcon,
|
|
123
|
+
alt: typeText
|
|
124
|
+
}
|
|
125
|
+
),
|
|
126
|
+
verify ? /* @__PURE__ */ jsx(
|
|
127
|
+
"img",
|
|
128
|
+
{
|
|
129
|
+
className: "w-[8px] h-[8px] absolute bottom-[-1px] right-[1px]",
|
|
130
|
+
src: VerifiedIcon,
|
|
131
|
+
alt: ""
|
|
132
|
+
}
|
|
133
|
+
) : /* @__PURE__ */ jsx(Fragment, {})
|
|
134
|
+
] }) }) }) }) : /* @__PURE__ */ jsx(Fragment, {})
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
var MyAddress = (props) => {
|
|
138
|
+
const { isFull } = props;
|
|
139
|
+
return RenderAddress({
|
|
140
|
+
...props,
|
|
141
|
+
suffix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(
|
|
142
|
+
"img",
|
|
143
|
+
{
|
|
144
|
+
className: "w-[38.5px] h-[16px] ml-[3px] align-bottom",
|
|
145
|
+
src: isMeIcon,
|
|
146
|
+
alt: "is me",
|
|
147
|
+
style: {
|
|
148
|
+
marginBottom: isFull ? "6px" : "4px"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
) })
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
var PosAddress = (props) => {
|
|
155
|
+
const {
|
|
156
|
+
alias,
|
|
157
|
+
isFull,
|
|
158
|
+
isFullNameTag,
|
|
159
|
+
maxWidth,
|
|
160
|
+
t,
|
|
161
|
+
link,
|
|
162
|
+
isMe,
|
|
163
|
+
hideAliasPrefixInHover
|
|
164
|
+
} = props;
|
|
165
|
+
const value = props.value;
|
|
166
|
+
if (!value) {
|
|
167
|
+
return /* @__PURE__ */ jsx(Fragment, { children: "--" });
|
|
168
|
+
}
|
|
169
|
+
if (isMe) {
|
|
170
|
+
return MyAddress(props);
|
|
171
|
+
}
|
|
172
|
+
const translations = getTranslations();
|
|
173
|
+
const content = alias ? formatString(alias, "tag") : formatString(value, "posAddress");
|
|
174
|
+
if (!isPosAddress(value)) {
|
|
175
|
+
const tip = t(translations.general.invalidPosAddress);
|
|
176
|
+
return RenderAddress({
|
|
177
|
+
cfxAddress: value,
|
|
178
|
+
alias,
|
|
179
|
+
hoverValue: `${tip}: ${value}`,
|
|
180
|
+
content,
|
|
181
|
+
link: false,
|
|
182
|
+
isFull,
|
|
183
|
+
isFullNameTag,
|
|
184
|
+
maxWidth,
|
|
185
|
+
style: { color: "#e00909" },
|
|
186
|
+
prefix: /* @__PURE__ */ jsx("div", { className: "mr-[2px] flex-shrink-0", children: /* @__PURE__ */ jsx(Tooltip, { title: tip, children: /* @__PURE__ */ jsx(AlertTriangle, { size: 16, color: "#e00909" }) }) }),
|
|
187
|
+
type: "pos",
|
|
188
|
+
hideAliasPrefixInHover
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return RenderAddress({
|
|
192
|
+
cfxAddress: value,
|
|
193
|
+
alias,
|
|
194
|
+
link,
|
|
195
|
+
isFull,
|
|
196
|
+
isFullNameTag,
|
|
197
|
+
maxWidth,
|
|
198
|
+
type: "pos",
|
|
199
|
+
content,
|
|
200
|
+
hideAliasPrefixInHover
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
export {
|
|
205
|
+
ContractCreatedAddress,
|
|
206
|
+
CoreHexAddress,
|
|
207
|
+
InvalidAddress,
|
|
208
|
+
ContractAddress,
|
|
209
|
+
MyAddress,
|
|
210
|
+
PosAddress
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=chunk-4QV2QZUP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AddressContainer/addressSwitcher.tsx"],"sourcesContent":["import { WithTranslation } from 'react-i18next';\nimport { AlertTriangle, File } from '@zeit-ui/react-icons';\nimport InternalContractIcon from '../../images/internal-contract-icon.png';\nimport ContractIcon from '../../images/contract-icon.png';\nimport VerifiedIcon from '../../images/verified.png';\nimport isMeIcon from '../../images/me.png';\nimport { Tooltip } from '../Tooltip';\nimport { isPosAddress } from '@cfx-kit/dapp-utils/dist/address';\nimport { formatAddress, isInnerContractAddress } from '../../utils/address';\nimport { getTranslations, getEnvConfig, useGlobalData } from '../../store';\nimport { getNetwork, formatString, coreCorrespondsToEspace } from 'src/utils';\nimport { Props } from './types';\nimport { RenderAddress } from './addressView';\n\n// common\nexport const ContractCreatedAddress = (\n props: Props & WithTranslation & { outputType: 'hex' | 'base32' },\n) => {\n const { contractCreated = '', outputType, t, isFull } = props;\n\n const translations = getTranslations();\n\n const contractAddress = formatAddress(contractCreated, outputType);\n\n const customProps = {\n content: t(translations.transaction.contractCreation),\n alias: t(translations.transaction.contractCreation),\n hrefAddress: contractAddress,\n cfxAddress: contractAddress,\n maxWidth: 160,\n };\n\n const mergedProps = { ...props, ...customProps };\n return RenderAddress({\n ...mergedProps,\n prefix: (\n <div className={`mr-[2px] flex-shrink-0 ${isFull ? 'icon' : ''}`}>\n <Tooltip title={mergedProps.content}>\n <div className=\"relative w-[16px] h-[16px]\">\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[3px]\"\n src={ContractIcon}\n alt={mergedProps.content}\n />\n </div>\n </Tooltip>\n </div>\n ),\n });\n};\n\n// core\nexport const CoreHexAddress = (props: Props & WithTranslation) => {\n const { value, t, isFull, maxWidth } = props;\n const { globalData } = useGlobalData();\n\n const ENV_CONFIG = getEnvConfig();\n const translations = getTranslations();\n const hexAddress = formatAddress(value, 'hex');\n const network = getNetwork(\n globalData?.networks,\n coreCorrespondsToEspace(ENV_CONFIG.ENV_NETWORK_ID),\n );\n const url = `${window.location.protocol}${network.url}/address/${hexAddress}`;\n\n return RenderAddress({\n cfxAddress: hexAddress,\n hoverValue: hexAddress,\n link: url,\n isFull,\n maxWidth,\n suffixSize: 0,\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={t((translations as any).general.eSpaceAddress)}>\n <File size={16} color=\"#17B38A\" />\n </Tooltip>\n </div>\n ),\n });\n};\n\n// common\nexport const InvalidAddress = (props: Props & WithTranslation) => {\n const {\n value,\n alias,\n t,\n isFull,\n maxWidth,\n isFullNameTag,\n hideAliasPrefixInHover,\n } = props;\n\n const translations = getTranslations();\n\n const tip = t(translations.general.invalidAddress);\n\n return RenderAddress({\n cfxAddress: value,\n alias,\n hoverValue: `${tip}: ${value}`,\n content: alias ? formatString(alias, 'tag') : value,\n link: false,\n isFull,\n isFullNameTag,\n maxWidth,\n style: { color: '#e00909' },\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={tip}>\n <AlertTriangle size={16} color=\"#e00909\" />\n </Tooltip>\n </div>\n ),\n hideAliasPrefixInHover,\n });\n};\n\n// common\nexport const ContractAddress = (props: Props & WithTranslation) => {\n const { showIcon, verify, t, cfxAddress, isFull } = props;\n\n const translations = getTranslations();\n\n const isInnerContract = cfxAddress && isInnerContractAddress(cfxAddress);\n\n const typeText = t(\n isInnerContract\n ? translations.general.internalContract\n : verify\n ? translations.general.verifiedContract\n : translations.general.unverifiedContract,\n );\n\n return RenderAddress({\n ...props,\n prefix: showIcon ? (\n <div className={`mr-[2px] flex-shrink-0 ${isFull ? 'icon' : ''}`}>\n <Tooltip title={typeText}>\n <div className=\"relative w-[16px] h-[16px]\">\n {isInnerContract ? (\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[5px]\"\n src={InternalContractIcon}\n alt={typeText}\n />\n ) : (\n <>\n <img\n className=\"w-[16px] h-[16px] align-bottom mb-[5px]\"\n src={ContractIcon}\n alt={typeText}\n />\n {verify ? (\n <img\n className=\"w-[8px] h-[8px] absolute bottom-[-1px] right-[1px]\"\n src={VerifiedIcon}\n alt={''}\n />\n ) : (\n <></>\n )}\n </>\n )}\n </div>\n </Tooltip>\n </div>\n ) : (\n <></>\n ),\n });\n};\n\n// common\nexport const MyAddress = (props: Props & WithTranslation) => {\n const { isFull } = props;\n return RenderAddress({\n ...props,\n suffix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <img\n className=\"w-[38.5px] h-[16px] ml-[3px] align-bottom\"\n src={isMeIcon}\n alt=\"is me\"\n style={{\n marginBottom: isFull ? '6px' : '4px',\n }}\n />\n </div>\n ),\n });\n};\n\n// core\nexport const PosAddress = (props: Props & WithTranslation) => {\n const {\n alias,\n isFull,\n isFullNameTag,\n maxWidth,\n t,\n link,\n isMe,\n hideAliasPrefixInHover,\n } = props;\n const value = props.value;\n if (!value) {\n return <>--</>;\n }\n if (isMe) {\n return MyAddress(props);\n }\n const translations = getTranslations();\n const content = alias\n ? formatString(alias, 'tag')\n : formatString(value, 'posAddress');\n if (!isPosAddress(value)) {\n const tip = t(translations.general.invalidPosAddress);\n return RenderAddress({\n cfxAddress: value,\n alias,\n hoverValue: `${tip}: ${value}`,\n content,\n link: false,\n isFull,\n isFullNameTag,\n maxWidth,\n style: { color: '#e00909' },\n prefix: (\n <div className=\"mr-[2px] flex-shrink-0\">\n <Tooltip title={tip}>\n <AlertTriangle size={16} color=\"#e00909\" />\n </Tooltip>\n </div>\n ),\n type: 'pos',\n hideAliasPrefixInHover,\n });\n }\n\n return RenderAddress({\n cfxAddress: value,\n alias,\n link,\n isFull,\n isFullNameTag,\n maxWidth,\n type: 'pos',\n content,\n hideAliasPrefixInHover,\n });\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import {
|
|
2
|
+
publishRequestError
|
|
3
|
+
} from "./chunk-J2I22Q2M.js";
|
|
4
|
+
|
|
5
|
+
// src/utils/request.ts
|
|
6
|
+
import qs from "qs";
|
|
7
|
+
import useSWR from "swr";
|
|
8
|
+
var TIMEOUT_TIMESTAMP = 6e4;
|
|
9
|
+
var checkStatus = (response) => {
|
|
10
|
+
if (response.status >= 200 && response.status < 300 || response.status === 600) {
|
|
11
|
+
return response;
|
|
12
|
+
} else {
|
|
13
|
+
const error = new Error(response.statusText);
|
|
14
|
+
error.name = "HttpError";
|
|
15
|
+
error.status = response.status;
|
|
16
|
+
error.response = response;
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var parseJSON = async (response) => {
|
|
21
|
+
const contentType = response.headers.get("content-type");
|
|
22
|
+
try {
|
|
23
|
+
if (contentType?.includes("application/json")) {
|
|
24
|
+
return { data: await response.json(), response };
|
|
25
|
+
} else if (contentType?.includes("text/html")) {
|
|
26
|
+
return { data: await response.text(), response };
|
|
27
|
+
} else {
|
|
28
|
+
return { data: response, response };
|
|
29
|
+
}
|
|
30
|
+
} catch (error) {
|
|
31
|
+
if (error.name === "AbortError") {
|
|
32
|
+
return { data: response, response };
|
|
33
|
+
}
|
|
34
|
+
publishRequestError({ url: response.url, code: 20001 }, "http");
|
|
35
|
+
error.response = response;
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var checkResponse = function(url, {
|
|
40
|
+
data,
|
|
41
|
+
response
|
|
42
|
+
}, opts) {
|
|
43
|
+
if (response.status === 200 && (data.status === "1" || data.code === 0)) {
|
|
44
|
+
return data.result || data.data;
|
|
45
|
+
} else if (/HEAD/i.test(opts?.method || "")) {
|
|
46
|
+
return response;
|
|
47
|
+
} else {
|
|
48
|
+
const code = Number(data.status ?? data.code);
|
|
49
|
+
publishRequestError({ url, code, message: data.message }, "http");
|
|
50
|
+
const error = new Error(data.message);
|
|
51
|
+
error.response = data;
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var fetchWithAbort = (url, options = {}) => {
|
|
56
|
+
const controller = new AbortController();
|
|
57
|
+
const opts = { ...options, signal: controller.signal };
|
|
58
|
+
const timeout = options.timeout || TIMEOUT_TIMESTAMP;
|
|
59
|
+
let timeoutId;
|
|
60
|
+
const promise = new Promise((resolve, reject) => {
|
|
61
|
+
timeoutId = setTimeout(() => {
|
|
62
|
+
controller.abort();
|
|
63
|
+
publishRequestError(
|
|
64
|
+
{ url, code: 20002, message: "Request timeout" },
|
|
65
|
+
"http"
|
|
66
|
+
);
|
|
67
|
+
reject(new Error("Request timeout"));
|
|
68
|
+
}, timeout);
|
|
69
|
+
window.fetch(url, opts).then(checkStatus).then(parseJSON).then((...args) => checkResponse(url, ...args, opts)).then((data) => resolve(data)).catch((error) => {
|
|
70
|
+
if (/HEAD/i.test(opts?.method || "")) {
|
|
71
|
+
return {};
|
|
72
|
+
}
|
|
73
|
+
if (error.name === "TypeError") {
|
|
74
|
+
publishRequestError({ url, code: 20004 }, "http");
|
|
75
|
+
reject(new Error("Network error"));
|
|
76
|
+
} else if (error.name === "AbortError") {
|
|
77
|
+
publishRequestError(
|
|
78
|
+
{ url, code: 20003, message: "Fetch aborted" },
|
|
79
|
+
"http"
|
|
80
|
+
);
|
|
81
|
+
reject(new Error("Fetch aborted"));
|
|
82
|
+
} else {
|
|
83
|
+
publishRequestError(
|
|
84
|
+
{ url, code: error.status, message: error.message },
|
|
85
|
+
"http"
|
|
86
|
+
);
|
|
87
|
+
reject(error);
|
|
88
|
+
}
|
|
89
|
+
}).finally(() => clearTimeout(timeoutId));
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
promise,
|
|
93
|
+
abort: () => {
|
|
94
|
+
clearTimeout(timeoutId);
|
|
95
|
+
controller.abort();
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
var fetch = (url, options = {}) => {
|
|
100
|
+
const { promise } = fetchWithAbort(url, options);
|
|
101
|
+
return promise;
|
|
102
|
+
};
|
|
103
|
+
var appendApiPrefix = (url) => {
|
|
104
|
+
if (url.startsWith("/stat/")) {
|
|
105
|
+
return url;
|
|
106
|
+
}
|
|
107
|
+
if (url.startsWith("http")) {
|
|
108
|
+
return url;
|
|
109
|
+
}
|
|
110
|
+
return `/v1${url.startsWith("/") ? url : "/" + url}`;
|
|
111
|
+
};
|
|
112
|
+
var fetchWithPrefix = (url, opts) => {
|
|
113
|
+
return fetch(appendApiPrefix(url), opts);
|
|
114
|
+
};
|
|
115
|
+
var simpleGetFetcher = async (...args) => {
|
|
116
|
+
let [url, query] = args;
|
|
117
|
+
console.log("url, query", url, query);
|
|
118
|
+
if (query) {
|
|
119
|
+
url = `${url}?${qs.stringify(query)}`;
|
|
120
|
+
}
|
|
121
|
+
console.log("url", url);
|
|
122
|
+
return await fetchWithPrefix(url, {
|
|
123
|
+
method: "get"
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
var useSWRWithGetFecher = (key, swrOpts = {}) => {
|
|
127
|
+
const isTransferReq = typeof key === "string" && key.startsWith("/transfer") || Array.isArray(key) && typeof key[0] === "string" && key[0].startsWith("/transfer");
|
|
128
|
+
const { data, error, mutate } = useSWR(key, simpleGetFetcher, {
|
|
129
|
+
...swrOpts
|
|
130
|
+
});
|
|
131
|
+
let tokenAddress = "";
|
|
132
|
+
if (isTransferReq && data && data.list) {
|
|
133
|
+
tokenAddress = data.list.reduce(
|
|
134
|
+
(acc, trans) => {
|
|
135
|
+
if (trans.address && !acc.includes(trans.address))
|
|
136
|
+
acc.push(trans.address);
|
|
137
|
+
return acc;
|
|
138
|
+
},
|
|
139
|
+
[]
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
const { data: tokenData } = useSWR(
|
|
143
|
+
qs.stringify({
|
|
144
|
+
url: "/token",
|
|
145
|
+
query: { addressArray: tokenAddress, fields: "iconUrl" }
|
|
146
|
+
}),
|
|
147
|
+
simpleGetFetcher
|
|
148
|
+
);
|
|
149
|
+
if (tokenData && tokenData.list) {
|
|
150
|
+
const newTransferList = data.list.map((trans) => {
|
|
151
|
+
if (tokenAddress.includes(trans.address)) {
|
|
152
|
+
const tokenInfo = tokenData.list.find(
|
|
153
|
+
(t) => t.address === trans.address
|
|
154
|
+
);
|
|
155
|
+
if (tokenInfo)
|
|
156
|
+
return { ...trans, token: { ...tokenInfo } };
|
|
157
|
+
}
|
|
158
|
+
return trans;
|
|
159
|
+
});
|
|
160
|
+
return {
|
|
161
|
+
data: {
|
|
162
|
+
...data,
|
|
163
|
+
list: newTransferList
|
|
164
|
+
},
|
|
165
|
+
error,
|
|
166
|
+
mutate
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
return { data, error, mutate };
|
|
170
|
+
};
|
|
171
|
+
var queryAddress = (address) => {
|
|
172
|
+
return address.reduce((prev, curr, index) => {
|
|
173
|
+
return !index ? `address=${curr}` : `${prev}&address=${curr}`;
|
|
174
|
+
}, "");
|
|
175
|
+
};
|
|
176
|
+
var sendRequestChart = async (config) => {
|
|
177
|
+
try {
|
|
178
|
+
const res = await fetch(
|
|
179
|
+
`${config.url}?${qs.stringify(config.query)}`,
|
|
180
|
+
{
|
|
181
|
+
method: config.type || "GET",
|
|
182
|
+
body: config.body,
|
|
183
|
+
headers: config.headers,
|
|
184
|
+
signal: config.signal
|
|
185
|
+
}
|
|
186
|
+
);
|
|
187
|
+
const data = res;
|
|
188
|
+
data.list = [...data.list || []].reverse();
|
|
189
|
+
return data;
|
|
190
|
+
} catch (error) {
|
|
191
|
+
console.error("Request failed", error);
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
var sendRequestENSInfo = async (url) => {
|
|
196
|
+
if (!url)
|
|
197
|
+
return {};
|
|
198
|
+
try {
|
|
199
|
+
const res = await fetch(url, {
|
|
200
|
+
method: "GET"
|
|
201
|
+
});
|
|
202
|
+
return res?.map;
|
|
203
|
+
} catch (error) {
|
|
204
|
+
console.error("Request failed", error);
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
var sendRequestGasPrice = async () => {
|
|
209
|
+
try {
|
|
210
|
+
const res = await fetch(`/stat/gasprice/tracker`, {
|
|
211
|
+
method: "GET"
|
|
212
|
+
});
|
|
213
|
+
return res;
|
|
214
|
+
} catch (error) {
|
|
215
|
+
console.error("Request failed", error);
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
var reqNametag = async (address) => {
|
|
220
|
+
const query = queryAddress(address);
|
|
221
|
+
const res = await fetch(`/v1/nametag?${query}`, {
|
|
222
|
+
method: "GET"
|
|
223
|
+
});
|
|
224
|
+
return res?.map;
|
|
225
|
+
};
|
|
226
|
+
var reqContractAndToken = async (address) => {
|
|
227
|
+
const query = queryAddress(address);
|
|
228
|
+
const res = await fetch(`/v1/contract-and-token?${query}`, {
|
|
229
|
+
method: "GET"
|
|
230
|
+
});
|
|
231
|
+
return res?.map;
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
export {
|
|
235
|
+
fetch,
|
|
236
|
+
appendApiPrefix,
|
|
237
|
+
fetchWithPrefix,
|
|
238
|
+
simpleGetFetcher,
|
|
239
|
+
useSWRWithGetFecher,
|
|
240
|
+
sendRequestChart,
|
|
241
|
+
sendRequestENSInfo,
|
|
242
|
+
sendRequestGasPrice,
|
|
243
|
+
reqNametag,
|
|
244
|
+
reqContractAndToken
|
|
245
|
+
};
|
|
246
|
+
//# sourceMappingURL=chunk-562J5LFF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/request.ts"],"sourcesContent":["import qs from 'qs';\nimport { publishRequestError } from './pubsub';\nimport useSWR from 'swr';\n\ninterface FetchWithAbortType<T> {\n promise: Promise<T>;\n abort: () => void;\n}\n\ninterface FetchOptions extends RequestInit {\n timeout?: number;\n}\n\nconst TIMEOUT_TIMESTAMP = 60000;\n\nconst checkStatus = (response: Response) => {\n if (\n (response.status >= 200 && response.status < 300) ||\n response.status === 600\n ) {\n return response;\n } else {\n const error = new Error(response.statusText);\n error.name = 'HttpError';\n (error as any).status = response.status;\n (error as any).response = response;\n throw error;\n }\n};\n\n// 格式化 response data\nconst parseJSON = async (response: Response) => {\n const contentType = response.headers.get('content-type');\n try {\n if (contentType?.includes('application/json')) {\n return { data: await response.json(), response };\n } else if (contentType?.includes('text/html')) {\n return { data: await response.text(), response };\n } else {\n // contentType 还有其他类型,目前项目中用不到\n // 不能简单的报错,比如 image/x-icon 是 favicon 请求\n // 此处直接返回 response,由业务代码处理其他类型的数据\n return { data: response, response };\n }\n } catch (error) {\n if ((error as any).name === 'AbortError') {\n return { data: response, response };\n }\n publishRequestError({ url: response.url, code: 20001 }, 'http');\n (error as any).response = response;\n throw error;\n }\n};\n\n// 检查返回值中是否包含错误\nconst checkResponse = function (\n url: string,\n {\n data,\n response,\n }: {\n data: any;\n response: Response;\n },\n opts: any,\n) {\n // 兼容 data.code 和 data.data, 是关于 core space 的数据结构\n if (response.status === 200 && (data.status === '1' || data.code === 0)) {\n return data.result || data.data;\n } else if (/HEAD/i.test(opts?.method || '')) {\n // handle of HEAD method\n return response;\n } else {\n const code = Number(data.status ?? data.code);\n publishRequestError({ url, code, message: data.message }, 'http');\n const error: Partial<ErrorEvent> & {\n response?: ResponseType;\n } = new Error(data.message);\n error.response = data;\n throw error;\n }\n};\n\nconst fetchWithAbort = <T>(\n url: string,\n options: FetchOptions = {},\n): FetchWithAbortType<T> => {\n const controller = new AbortController();\n const opts: FetchOptions = { ...options, signal: controller.signal };\n const timeout = options.timeout || TIMEOUT_TIMESTAMP;\n\n let timeoutId: ReturnType<typeof setTimeout>;\n const promise: Promise<T> = new Promise((resolve, reject) => {\n timeoutId = setTimeout(() => {\n controller.abort();\n publishRequestError(\n { url, code: 20002, message: 'Request timeout' },\n 'http',\n );\n reject(new Error('Request timeout'));\n }, timeout);\n\n window\n .fetch(url, opts)\n .then(checkStatus)\n .then(parseJSON)\n .then((...args) => checkResponse(url, ...args, opts))\n .then(data => resolve(data as T))\n .catch(error => {\n if (/HEAD/i.test(opts?.method || '')) {\n return {};\n }\n\n // A fetch() promise will reject with a TypeError when a network error is encountered or CORS is misconfigured on the server-side,\n // although this usually means permission issues or similar — a 404 does not constitute a network error, for example.\n // For detail: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n if (error.name === 'TypeError') {\n publishRequestError({ url, code: 20004 }, 'http');\n reject(new Error('Network error'));\n } else if (error.name === 'AbortError') {\n publishRequestError(\n { url, code: 20003, message: 'Fetch aborted' },\n 'http',\n );\n reject(new Error('Fetch aborted'));\n } else {\n publishRequestError(\n { url, code: (error as any).status, message: error.message },\n 'http',\n );\n reject(error);\n }\n })\n .finally(() => clearTimeout(timeoutId));\n });\n\n return {\n promise,\n abort: () => {\n clearTimeout(timeoutId);\n controller.abort();\n },\n };\n};\n\nexport const fetch = <T>(\n url: string,\n options: FetchOptions = {},\n): Promise<T> => {\n const { promise } = fetchWithAbort<T>(url, options);\n return promise;\n};\n\nexport const appendApiPrefix = (url: string) => {\n // for cfx top N\n if (url.startsWith('/stat/')) {\n return url;\n }\n if (url.startsWith('http')) {\n return url;\n }\n return `/v1${url.startsWith('/') ? url : '/' + url}`;\n};\n\nexport const fetchWithPrefix = <T>(url: string, opts?: FetchOptions) => {\n return fetch<T>(appendApiPrefix(url), opts);\n};\n\nexport const simpleGetFetcher = async <T>(...args: any[]) => {\n let [url, query] = args;\n console.log('url, query', url, query)\n if (query) {\n url = `${url}?${qs.stringify(query)}`;\n }\n console.log('url', url)\n return await fetchWithPrefix<T>(url, {\n method: 'get',\n });\n};\n\nexport const useSWRWithGetFecher = (\n key: string | string[] | null,\n swrOpts = {},\n) => {\n const isTransferReq =\n (typeof key === 'string' && key.startsWith('/transfer')) ||\n (Array.isArray(key) &&\n typeof key[0] === 'string' &&\n key[0].startsWith('/transfer'));\n\n const { data, error, mutate }: any = useSWR(key, simpleGetFetcher, {\n ...swrOpts,\n });\n\n let tokenAddress: string | string[] = '';\n\n // deal with token info\n if (isTransferReq && data && data.list) {\n tokenAddress = data.list.reduce(\n (acc: string[], trans: { address: string }) => {\n if (trans.address && !acc.includes(trans.address))\n acc.push(trans.address);\n return acc;\n },\n [],\n );\n }\n\n const { data: tokenData }: any = useSWR(\n qs.stringify({\n url: '/token',\n query: { addressArray: tokenAddress, fields: 'iconUrl' },\n }),\n simpleGetFetcher,\n );\n\n if (tokenData && tokenData.list) {\n const newTransferList = data.list.map((trans: { address: string }) => {\n if (tokenAddress.includes(trans.address)) {\n const tokenInfo = tokenData.list.find(\n (t: { address: string }) => t.address === trans.address,\n );\n if (tokenInfo) return { ...trans, token: { ...tokenInfo } };\n }\n\n return trans;\n });\n\n return {\n data: {\n ...data,\n list: newTransferList,\n },\n error,\n mutate,\n };\n }\n\n return { data, error, mutate };\n};\n\ntype RequestMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD';\ninterface QueryParams {\n [key: string]: string;\n}\ninterface Config {\n url: string;\n query: QueryParams;\n type?: RequestMethod;\n body?: any;\n headers?: Headers;\n signal?: AbortSignal;\n}\n\nconst queryAddress = (address: string[]) => {\n return address.reduce((prev, curr, index) => {\n return !index ? `address=${curr}` : `${prev}&address=${curr}`;\n }, '');\n};\n\nexport const sendRequestChart = async (config: Config) => {\n try {\n const res: any = await fetch(\n `${config.url}?${qs.stringify(config.query)}`,\n {\n method: config.type || 'GET',\n body: config.body,\n headers: config.headers,\n signal: config.signal,\n },\n );\n const data = res;\n data.list = [...(data.list || [])].reverse();\n return data;\n } catch (error) {\n console.error('Request failed', error);\n throw error;\n }\n};\n\nexport const sendRequestENSInfo = async (url?: string | null) => {\n if (!url) return {};\n try {\n const res: any = await fetch(url, {\n method: 'GET',\n });\n\n return res?.map;\n } catch (error) {\n console.error('Request failed', error);\n throw error;\n }\n};\n\nexport const sendRequestGasPrice = async () => {\n try {\n const res: any = await fetch(`/stat/gasprice/tracker`, {\n method: 'GET',\n });\n return res;\n } catch (error) {\n console.error('Request failed', error);\n throw error;\n }\n};\n\nexport const reqNametag = async (address: string[]) => {\n const query = queryAddress(address);\n\n const res: any = await fetch(`/v1/nametag?${query}`, {\n method: 'GET',\n });\n return res?.map;\n};\n\nexport const reqContractAndToken = async (address: string[]) => {\n const query = queryAddress(address);\n\n const res: any = await fetch(`/v1/contract-and-token?${query}`, {\n method: 'GET',\n });\n return res?.map;\n};\n"],"mappings":"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","names":[]}
|