@cfxjs/sirius-next-common 0.2.15 → 0.2.17
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-ARQH6VQ4.js → chunk-5CDCNIBM.js} +3 -3
- package/dist/{chunk-IDGNYTHY.js → chunk-5M5ECKFB.js} +3 -3
- package/dist/{chunk-HJNIYZ62.js → chunk-7OSADJ6H.js} +1 -1
- package/dist/chunk-7OSADJ6H.js.map +1 -0
- package/dist/{chunk-A6ND7FSQ.js → chunk-CL6QEKM6.js} +2 -2
- package/dist/{chunk-WSDJ3XJ2.js → chunk-JRB53YY7.js} +2 -2
- package/dist/{chunk-VJSXGYWN.js → chunk-LBWKTQYK.js} +2 -2
- package/dist/{chunk-AYH6CLQB.js → chunk-LUCBUM2Y.js} +3 -3
- package/dist/chunk-LUCBUM2Y.js.map +1 -0
- package/dist/components/AddressContainer/CoreAddressContainer.js +3 -3
- package/dist/components/AddressContainer/EVMAddressContainer.js +3 -3
- package/dist/components/AddressContainer/addressSwitcher.js +2 -2
- package/dist/components/AddressContainer/addressView.js +1 -1
- package/dist/components/ProxyContractAddress/index.d.ts +2 -7
- package/dist/components/ProxyContractAddress/index.js +30 -8
- package/dist/components/ProxyContractAddress/index.js.map +1 -1
- package/dist/components/TransactionAction/coreTransactionAction.js +4 -4
- package/dist/components/TransactionAction/coreTransactionAction.js.map +1 -1
- package/dist/components/TransactionAction/evmTransactionAction.js +4 -4
- package/dist/components/TransactionAction/evmTransactionAction.js.map +1 -1
- package/dist/components/TransactionTrace/TraceDetail.js +2 -2
- package/dist/components/TransactionTrace/TreeTraceTable.js +3 -3
- package/dist/components/TransactionTrace/index.js +3 -3
- package/dist/utils/hooks/useDecodeFunctionData.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-AYH6CLQB.js.map +0 -1
- package/dist/chunk-HJNIYZ62.js.map +0 -1
- /package/dist/{chunk-ARQH6VQ4.js.map → chunk-5CDCNIBM.js.map} +0 -0
- /package/dist/{chunk-IDGNYTHY.js.map → chunk-5M5ECKFB.js.map} +0 -0
- /package/dist/{chunk-A6ND7FSQ.js.map → chunk-CL6QEKM6.js.map} +0 -0
- /package/dist/{chunk-WSDJ3XJ2.js.map → chunk-JRB53YY7.js.map} +0 -0
- /package/dist/{chunk-VJSXGYWN.js.map → chunk-LBWKTQYK.js.map} +0 -0
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
ContractCreatedAddress,
|
|
4
4
|
InvalidAddress,
|
|
5
5
|
MyAddress
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JRB53YY7.js";
|
|
7
7
|
import {
|
|
8
8
|
RenderAddress
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7OSADJ6H.js";
|
|
10
10
|
import {
|
|
11
11
|
convertCheckSum,
|
|
12
12
|
formatAddress,
|
|
@@ -105,4 +105,4 @@ var EVMAddressContainer = withTranslation()(
|
|
|
105
105
|
export {
|
|
106
106
|
EVMAddressContainer
|
|
107
107
|
};
|
|
108
|
-
//# sourceMappingURL=chunk-
|
|
108
|
+
//# sourceMappingURL=chunk-5CDCNIBM.js.map
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
InvalidAddress,
|
|
9
9
|
MyAddress,
|
|
10
10
|
PosAddress
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-JRB53YY7.js";
|
|
12
12
|
import {
|
|
13
13
|
RenderAddress
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-7OSADJ6H.js";
|
|
15
15
|
import {
|
|
16
16
|
formatAddress,
|
|
17
17
|
isCoreAddress,
|
|
@@ -138,4 +138,4 @@ var CoreAddressContainer = withTranslation()(
|
|
|
138
138
|
export {
|
|
139
139
|
CoreAddressContainer
|
|
140
140
|
};
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
141
|
+
//# sourceMappingURL=chunk-5M5ECKFB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AddressContainer/addressView.tsx"],"sourcesContent":["import { Translation } from 'react-i18next';\nimport { Text } from '../Text';\nimport { convertCheckSum } from '../../utils/address';\nimport { getTranslations } from '../../store';\nimport { TooltipContent, RenderAddressProps } from './types';\nimport { shortenAddress } from '@cfx-kit/dapp-utils/dist/address';\n\nconst defaultPCMaxWidth = 138;\n\n// common\nconst renderTooltipContent = (tooltipContent: TooltipContent) => {\n return Object.entries(tooltipContent)\n .map(([key, { label, value, hideLabel }]) => {\n if (value) {\n return (\n <div key={key}>\n {!hideLabel && (\n <span>\n <Translation>{t => t(label)}</Translation>\n </span>\n )}\n {value}\n </div>\n );\n }\n return null;\n })\n .filter(Boolean);\n};\n\n// common\nconst convertLink = ({\n link,\n type,\n hrefAddress,\n cfxAddress,\n}: RenderAddressProps) => {\n if (typeof link === 'string') {\n return link;\n }\n if (link === false) {\n return false;\n }\n\n const address = hrefAddress || cfxAddress;\n\n if (address && typeof address === 'string') {\n const pathname = window.location.pathname.toLowerCase();\n const addressLower = address.toLowerCase();\n if (pathname.includes('/address/' + addressLower)) {\n return false;\n }\n\n if (type === 'pow') {\n return `/address/${address}`;\n }\n\n if (type === 'pos') {\n return `/pos/accounts/${address}`;\n }\n }\n\n return false;\n};\n\n// common\nexport const RenderAddress = ({\n cfxAddress,\n alias,\n hoverValue,\n hrefAddress,\n content,\n link = '',\n isFull = false,\n isFullNameTag = false,\n style = {},\n maxWidth,\n prefix = null,\n ENSIcon = null,\n suffix = null,\n type = 'pow',\n addressLabel = '',\n ENSLabel = '',\n nametag = '',\n hideAliasPrefixInHover = false,\n}: RenderAddressProps) => {\n const translations = getTranslations();\n\n // Private name tags > Official tag/name > contract token name > contract tag > contract name > CNS/ENS\n const name = addressLabel || content || nametag || alias || ENSLabel;\n const isShowEns = !!ENSLabel && name === ENSLabel;\n\n const defaultStyle = {\n maxWidth: `${(name && isFullNameTag) || isFull ? 'auto' : (maxWidth || defaultPCMaxWidth) + 'px'}`,\n };\n\n const href = convertLink({ link, type, hrefAddress, cfxAddress });\n\n const Wrapper = href ? 'a' : 'div';\n\n const tooltipContent: TooltipContent = {\n ENSLabel: {\n label: (translations as any)?.ens?.tip,\n value: ENSLabel,\n },\n nametag: {\n label: translations?.nametag?.tip,\n value: nametag,\n },\n addressLabel: {\n label: translations?.profile.address.myNameTag,\n value: addressLabel,\n },\n alias: {\n label: translations?.profile.address.publicNameTag,\n value: alias,\n hideLabel: hideAliasPrefixInHover,\n },\n };\n\n const checksumAddress = convertCheckSum(cfxAddress);\n\n const cfxAddressLabel =\n typeof cfxAddress === 'string' && !isFull\n ? shortenAddress(checksumAddress!)\n : checksumAddress;\n\n return (\n <div className=\"inline-flex\">\n {prefix || (isShowEns ? ENSIcon : null)}\n <Text\n tag=\"span\"\n hoverValue={\n <>\n {renderTooltipContent(tooltipContent)}\n <div>{hoverValue || checksumAddress}</div>\n </>\n }\n >\n <Wrapper\n className=\"block relative align-bottom cursor-default truncate\"\n style={{ ...defaultStyle, ...style }}\n {...(href ? { href: String(href) } : {})}\n >\n {name || cfxAddressLabel}\n </Wrapper>\n </Text>\n {suffix}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;AAAA,SAAS,mBAAmB;AAK5B,SAAS,sBAAsB;AAUrB,SAsHA,UAnHM,KAHN;AARV,IAAM,oBAAoB;AAG1B,IAAM,uBAAuB,CAAC,mBAAmC;AAC/D,SAAO,OAAO,QAAQ,cAAc,EACjC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,OAAO,UAAU,CAAC,MAAM;AAC3C,QAAI,OAAO;AACT,aACE,qBAAC,SACE;AAAA,SAAC,aACA,oBAAC,UACC,8BAAC,eAAa,iBAAK,EAAE,KAAK,GAAE,GAC9B;AAAA,QAED;AAAA,WANO,GAOV;AAAA,IAEJ;AACA,WAAO;AAAA,EACT,CAAC,EACA,OAAO,OAAO;AACnB;AAGA,IAAM,cAAc,CAAC;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AACxB,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,eAAe;AAE/B,MAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,UAAM,WAAW,OAAO,SAAS,SAAS,YAAY;AACtD,UAAM,eAAe,QAAQ,YAAY;AACzC,QAAI,SAAS,SAAS,cAAc,YAAY,GAAG;AACjD,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,OAAO;AAClB,aAAO,YAAY;AAAA,IACrB;AAEA,QAAI,SAAS,OAAO;AAClB,aAAO,iBAAiB;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AACT;AAGO,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,QAAQ,CAAC;AAAA,EACT;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,eAAe;AAAA,EACf,WAAW;AAAA,EACX,UAAU;AAAA,EACV,yBAAyB;AAC3B,MAA0B;AACxB,QAAM,eAAe,gBAAgB;AAGrC,QAAM,OAAO,gBAAgB,WAAW,WAAW,SAAS;AAC5D,QAAM,YAAY,CAAC,CAAC,YAAY,SAAS;AAEzC,QAAM,eAAe;AAAA,IACnB,UAAU,GAAI,QAAQ,iBAAkB,SAAS,UAAU,YAAY,qBAAqB;AAAA,EAC9F;AAEA,QAAM,OAAO,YAAY,EAAE,MAAM,MAAM,aAAa,WAAW,CAAC;AAEhE,QAAM,UAAU,OAAO,MAAM;AAE7B,QAAM,iBAAiC;AAAA,IACrC,UAAU;AAAA,MACR,OAAQ,cAAsB,KAAK;AAAA,MACnC,OAAO;AAAA,IACT;AAAA,IACA,SAAS;AAAA,MACP,OAAO,cAAc,SAAS;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,IACA,cAAc;AAAA,MACZ,OAAO,cAAc,QAAQ,QAAQ;AAAA,MACrC,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,OAAO,cAAc,QAAQ,QAAQ;AAAA,MACrC,OAAO;AAAA,MACP,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,kBAAkB,gBAAgB,UAAU;AAElD,QAAM,kBACJ,OAAO,eAAe,YAAY,CAAC,SAC/B,eAAe,eAAgB,IAC/B;AAEN,SACE,qBAAC,SAAI,WAAU,eACZ;AAAA,eAAW,YAAY,UAAU;AAAA,IAClC;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,YACE,iCACG;AAAA,+BAAqB,cAAc;AAAA,UACpC,oBAAC,SAAK,wBAAc,iBAAgB;AAAA,WACtC;AAAA,QAGF;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAE,GAAG,cAAc,GAAG,MAAM;AAAA,YAClC,GAAI,OAAO,EAAE,MAAM,OAAO,IAAI,EAAE,IAAI,CAAC;AAAA,YAErC,kBAAQ;AAAA;AAAA,QACX;AAAA;AAAA,IACF;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useDecodeFunctionData
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LUCBUM2Y.js";
|
|
4
4
|
import {
|
|
5
5
|
useDecodedDataType
|
|
6
6
|
} from "./chunk-UM5J477V.js";
|
|
@@ -189,4 +189,4 @@ var TraceDetail = (props) => {
|
|
|
189
189
|
export {
|
|
190
190
|
TraceDetail
|
|
191
191
|
};
|
|
192
|
-
//# sourceMappingURL=chunk-
|
|
192
|
+
//# sourceMappingURL=chunk-CL6QEKM6.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-MWAD4CIG.js";
|
|
4
4
|
import {
|
|
5
5
|
RenderAddress
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7OSADJ6H.js";
|
|
7
7
|
import {
|
|
8
8
|
formatAddress,
|
|
9
9
|
isInnerContractAddress
|
|
@@ -205,4 +205,4 @@ export {
|
|
|
205
205
|
MyAddress,
|
|
206
206
|
PosAddress
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
208
|
+
//# sourceMappingURL=chunk-JRB53YY7.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TraceDetail
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CL6QEKM6.js";
|
|
4
4
|
import {
|
|
5
5
|
Table
|
|
6
6
|
} from "./chunk-XZ7IV2FF.js";
|
|
@@ -79,4 +79,4 @@ var TreeTraceTable = ({
|
|
|
79
79
|
export {
|
|
80
80
|
TreeTraceTable
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-LBWKTQYK.js.map
|
|
@@ -41,13 +41,13 @@ var decodeFunctionDataByAbi = ({
|
|
|
41
41
|
});
|
|
42
42
|
let decodedResults = success ? !isReturnDataEmpty ? decodeFunctionResult({
|
|
43
43
|
abi,
|
|
44
|
-
functionName:
|
|
44
|
+
functionName: methodID,
|
|
45
45
|
data: output,
|
|
46
46
|
space
|
|
47
47
|
}) : void 0 : output;
|
|
48
48
|
const abiItem = getAbiItem({
|
|
49
49
|
abi,
|
|
50
|
-
name:
|
|
50
|
+
name: methodID
|
|
51
51
|
});
|
|
52
52
|
const results = decodedResults === void 0 ? void 0 : abiItem.outputs.length === 1 ? [decodedResults] : decodedResults;
|
|
53
53
|
if (!withOutput) {
|
|
@@ -199,4 +199,4 @@ var useDecodeFunctionData = ({
|
|
|
199
199
|
export {
|
|
200
200
|
useDecodeFunctionData
|
|
201
201
|
};
|
|
202
|
-
//# sourceMappingURL=chunk-
|
|
202
|
+
//# sourceMappingURL=chunk-LUCBUM2Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/hooks/useDecodeFunctionData.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n decodeFunctionData,\n decodeFunctionResult,\n getAbiItem,\n AbiFunctionWithoutGas,\n} from 'src/utils/sdk';\nimport { useContractDetail } from './useContractDetail';\nimport { formatABI } from '..';\nimport { useMethodAbi } from './useMethodAbi';\n\nconst fields = ['abi' as const];\n\nexport type Hex = `0x${string}`;\n\nconst decodeFunctionDataByAbi = ({\n abi: _abi,\n input,\n output,\n space,\n success,\n withOutput = false,\n similarWarning,\n}: {\n input: Hex;\n output?: Hex;\n abi?: AbiFunctionWithoutGas[] | string;\n space: 'evm' | 'core';\n success?: boolean;\n withOutput?: boolean;\n similarWarning?: boolean;\n}) => {\n try {\n const abi = typeof _abi === 'string' ? JSON.parse(_abi) : _abi;\n const hasAbi = abi && abi.length > 0;\n if (!hasAbi) return null;\n const isReturnDataEmpty = !output || output === '0x';\n const methodID = input.slice(0, 10);\n const decodedParams = decodeFunctionData({\n abi: abi,\n data: input,\n space,\n });\n let decodedResults = success\n ? !isReturnDataEmpty\n ? decodeFunctionResult({\n abi: abi,\n functionName: methodID,\n data: output,\n space,\n })\n : undefined\n : output;\n const abiItem = getAbiItem({\n abi: abi,\n name: methodID,\n }) as AbiFunctionWithoutGas;\n // if the output has only one value, decodeFunctionResult will return the value directly, otherwise it will return an array,\n // so we need to check the length of abiItem.outputs to determine whether to wrap decodedResults in an array\n const results =\n decodedResults === undefined\n ? undefined\n : abiItem.outputs.length === 1\n ? [decodedResults]\n : (decodedResults as unknown[]);\n if (!withOutput) {\n abiItem.outputs = [];\n }\n const fullName = formatABI([abiItem])[0];\n return {\n decodedParams,\n decodedResults: results,\n abiItem,\n fullName: fullName,\n failed: false,\n similarWarning,\n };\n } catch (error) {\n console.log('decode function data and result error', error);\n return {\n failed: true,\n similarWarning,\n };\n }\n};\n\nexport interface DecodedFunctionData {\n decodedParams?: {\n args: readonly unknown[] | undefined;\n functionName: string;\n };\n decodedResults?: unknown[];\n abiItem?: AbiFunctionWithoutGas;\n fullName?: string;\n // no abi for decoded\n noAbi?: boolean;\n // decoded failed\n failed?: boolean;\n // decoded by method abi, not contract abi\n similarWarning?: boolean;\n}\n\nexport const useDecodeFunctionData = ({\n to,\n abi: outerAbi,\n implementation: _implementation,\n input,\n output,\n space,\n success,\n supportMethodAbi,\n withOutput,\n}: {\n input: Hex;\n output?: Hex;\n to?: string;\n implementation?: string;\n abi?: AbiFunctionWithoutGas[];\n space: 'evm' | 'core';\n success?: boolean;\n supportMethodAbi?: boolean;\n withOutput?: boolean;\n}): [DecodedFunctionData, boolean] => {\n const hasOuterAbi = outerAbi && outerAbi.length > 0;\n const needContractAbi = !hasOuterAbi && !!input;\n const { data: contractData, isLoading: contractLoading } = useContractDetail(\n to,\n fields,\n needContractAbi,\n );\n const implementation =\n _implementation ?? contractData?.implementation?.address;\n const { data: implementationData, isLoading: implementationLoading } =\n useContractDetail(implementation, fields, needContractAbi);\n const decodedByOuterAbi = useMemo(() => {\n return decodeFunctionDataByAbi({\n abi: outerAbi,\n input,\n output,\n space,\n success,\n withOutput,\n });\n }, [input, output, outerAbi, success, space, withOutput]);\n const decodedByContractAbi = useMemo(() => {\n if (!contractData?.abi) return null;\n return decodeFunctionDataByAbi({\n abi: contractData.abi as string,\n input,\n output,\n space,\n success,\n withOutput,\n });\n }, [input, output, contractData?.abi, success, space, withOutput]);\n const decodedByImplementationAbi = useMemo(() => {\n if (!implementationData?.abi) return null;\n return decodeFunctionDataByAbi({\n abi: implementationData.abi as string,\n input,\n output,\n space,\n success,\n withOutput,\n });\n }, [input, output, implementationData?.abi, success, space, withOutput]);\n const needMethodAbi =\n !!supportMethodAbi &&\n needContractAbi &&\n // contract abi decoded failed\n !contractLoading &&\n (!decodedByContractAbi || decodedByContractAbi.failed) &&\n // implementation contract abi decoded failed\n !implementationLoading &&\n (!decodedByImplementationAbi || decodedByImplementationAbi.failed);\n const { data: methodAbi, isLoading: methodAbiLoading } = useMethodAbi(\n input.slice(0, 10),\n needMethodAbi,\n );\n const decodedByMethodAbi = useMemo(() => {\n // decode tx data with function abi only if there is only one function\n if (!methodAbi || methodAbi.list.length !== 1) return null;\n try {\n // e.g. transfer(address,uint256)\n const fullName = methodAbi.list[0]!.fullName;\n // e.g. function transfer(address recipient, uint256 amount) returns (bool)\n const formatWithArg = methodAbi.list[0]!.formatWithArg;\n const abi = formatABI([formatWithArg || `function ${fullName}`], {\n json: true,\n });\n return decodeFunctionDataByAbi({\n abi: abi,\n input,\n output,\n space,\n success,\n withOutput,\n similarWarning: true,\n });\n } catch (error) {\n console.log('decode function data and result error', error);\n return {\n failed: true,\n };\n }\n }, [input, output, methodAbi, success, space, withOutput]);\n\n return useMemo(() => {\n if (!input) return [{}, false];\n if (decodedByOuterAbi && !decodedByOuterAbi.failed)\n return [decodedByOuterAbi, false];\n if (decodedByImplementationAbi && !decodedByImplementationAbi.failed)\n return [decodedByImplementationAbi, implementationLoading];\n if (decodedByContractAbi && !decodedByContractAbi.failed)\n return [decodedByContractAbi, contractLoading];\n if (decodedByMethodAbi && !decodedByMethodAbi.failed)\n return [decodedByMethodAbi, methodAbiLoading];\n if (implementationLoading || contractLoading || methodAbiLoading) {\n return [{}, true];\n }\n if (\n (decodedByOuterAbi && decodedByOuterAbi.failed) ||\n (decodedByImplementationAbi && decodedByImplementationAbi.failed) ||\n (decodedByContractAbi && decodedByContractAbi.failed) ||\n (decodedByMethodAbi && decodedByMethodAbi.failed)\n ) {\n return [\n {\n failed: true,\n },\n false,\n ];\n }\n return [\n {\n noAbi: true,\n },\n false,\n ];\n }, [\n input,\n decodedByOuterAbi,\n decodedByContractAbi,\n decodedByImplementationAbi,\n decodedByMethodAbi,\n contractLoading,\n implementationLoading,\n methodAbiLoading,\n ]);\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CoreAddressContainer
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-5M5ECKFB.js";
|
|
4
4
|
import "../../chunk-BUSBM33B.js";
|
|
5
|
-
import "../../chunk-
|
|
5
|
+
import "../../chunk-JRB53YY7.js";
|
|
6
6
|
import "../../chunk-MWAD4CIG.js";
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-7OSADJ6H.js";
|
|
8
8
|
import "../../chunk-CNF26YY7.js";
|
|
9
9
|
import "../../chunk-P4EE3QGM.js";
|
|
10
10
|
import "../../chunk-TOKKKTFG.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EVMAddressContainer
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-5CDCNIBM.js";
|
|
4
|
+
import "../../chunk-JRB53YY7.js";
|
|
5
5
|
import "../../chunk-MWAD4CIG.js";
|
|
6
|
-
import "../../chunk-
|
|
6
|
+
import "../../chunk-7OSADJ6H.js";
|
|
7
7
|
import "../../chunk-CNF26YY7.js";
|
|
8
8
|
import "../../chunk-P4EE3QGM.js";
|
|
9
9
|
import "../../chunk-TOKKKTFG.js";
|
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
InvalidAddress,
|
|
6
6
|
MyAddress,
|
|
7
7
|
PosAddress
|
|
8
|
-
} from "../../chunk-
|
|
8
|
+
} from "../../chunk-JRB53YY7.js";
|
|
9
9
|
import "../../chunk-MWAD4CIG.js";
|
|
10
|
-
import "../../chunk-
|
|
10
|
+
import "../../chunk-7OSADJ6H.js";
|
|
11
11
|
import "../../chunk-CNF26YY7.js";
|
|
12
12
|
import "../../chunk-P4EE3QGM.js";
|
|
13
13
|
import "../../chunk-TOKKKTFG.js";
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ProxyType } from '../../utils/hooks/useTxTrace.js';
|
|
3
|
+
import { CoreAddressContainerProps } from '../AddressContainer/types.js';
|
|
3
4
|
import 'swr';
|
|
4
5
|
import '../../utils/sdk.js';
|
|
5
6
|
import 'viem';
|
|
6
7
|
import '../../utils/request.types.js';
|
|
7
8
|
|
|
8
|
-
declare const ProxyContractAddress: (props: {
|
|
9
|
-
address: string;
|
|
10
|
-
alias?: string;
|
|
11
|
-
isFull?: boolean;
|
|
12
|
-
verify?: boolean;
|
|
13
|
-
showIcon?: boolean;
|
|
14
|
-
showAddressLabel?: boolean;
|
|
9
|
+
declare const ProxyContractAddress: (props: Pick<CoreAddressContainerProps, 'value' | 'alias' | 'isFull' | 'verify' | 'showIcon' | 'showAddressLabel' | 'showENSLabel' | 'ensInfo' | 'showNametag' | 'nametagInfo'> & {
|
|
15
10
|
proxy: {
|
|
16
11
|
type: ProxyType;
|
|
17
12
|
implAddress: string;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useAddressLabel
|
|
3
3
|
} from "../../chunk-6H5A42YS.js";
|
|
4
|
+
import {
|
|
5
|
+
Link
|
|
6
|
+
} from "../../chunk-2Y57U43P.js";
|
|
7
|
+
import "../../chunk-TGK5LP2H.js";
|
|
4
8
|
import {
|
|
5
9
|
isInnerContractAddress
|
|
6
10
|
} from "../../chunk-CNF26YY7.js";
|
|
@@ -27,24 +31,42 @@ import InternalContractIcon from "../../internal-contract-icon-ZH2RG3CU.png";
|
|
|
27
31
|
import ContractIcon from "../../contract-icon-P3W2HUAA.png";
|
|
28
32
|
import VerifiedIcon from "../../verified-VJRHZNN7.png";
|
|
29
33
|
import { shortenAddress } from "@cfx-kit/dapp-utils/dist/address";
|
|
34
|
+
import { useMemo } from "react";
|
|
30
35
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
31
36
|
var ProxyContractAddress = (props) => {
|
|
32
37
|
const {
|
|
33
38
|
showIcon = true,
|
|
34
39
|
showAddressLabel = true,
|
|
35
40
|
verify,
|
|
36
|
-
|
|
41
|
+
value,
|
|
37
42
|
alias,
|
|
38
43
|
isFull = false,
|
|
39
44
|
proxy,
|
|
40
45
|
className,
|
|
41
|
-
style
|
|
46
|
+
style,
|
|
47
|
+
showENSLabel = true,
|
|
48
|
+
ensInfo,
|
|
49
|
+
showNametag = true,
|
|
50
|
+
nametagInfo
|
|
42
51
|
} = props;
|
|
43
52
|
const { t } = useTranslation();
|
|
44
53
|
const translations = getTranslations();
|
|
45
|
-
const addressLabel = useAddressLabel(
|
|
46
|
-
const text =
|
|
47
|
-
|
|
54
|
+
const addressLabel = useAddressLabel(value, showAddressLabel);
|
|
55
|
+
const text = useMemo(() => {
|
|
56
|
+
const ENSLabel = showENSLabel ? ensInfo?.[value]?.name : void 0;
|
|
57
|
+
const nametag = showNametag ? nametagInfo?.[value]?.nametag : void 0;
|
|
58
|
+
return addressLabel || nametag || alias || ENSLabel || (isFull ? value : shortenAddress(value));
|
|
59
|
+
}, [
|
|
60
|
+
nametagInfo,
|
|
61
|
+
value,
|
|
62
|
+
showNametag,
|
|
63
|
+
addressLabel,
|
|
64
|
+
alias,
|
|
65
|
+
isFull,
|
|
66
|
+
showENSLabel,
|
|
67
|
+
ensInfo
|
|
68
|
+
]);
|
|
69
|
+
const isInnerContract = value && isInnerContractAddress(value);
|
|
48
70
|
const typeText = t(
|
|
49
71
|
isInnerContract ? translations.general.internalContract : verify ? translations.general.verifiedContract : translations.general.unverifiedContract
|
|
50
72
|
);
|
|
@@ -81,7 +103,7 @@ var ProxyContractAddress = (props) => {
|
|
|
81
103
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
82
104
|
proxy.type,
|
|
83
105
|
": ",
|
|
84
|
-
|
|
106
|
+
value
|
|
85
107
|
] }),
|
|
86
108
|
proxy.beaconAddress && /* @__PURE__ */ jsxs("div", { children: [
|
|
87
109
|
"Beacon: ",
|
|
@@ -94,13 +116,13 @@ var ProxyContractAddress = (props) => {
|
|
|
94
116
|
] }),
|
|
95
117
|
containerClassName: "max-w-unset",
|
|
96
118
|
children: /* @__PURE__ */ jsxs(
|
|
97
|
-
|
|
119
|
+
Link,
|
|
98
120
|
{
|
|
99
121
|
className: cn(
|
|
100
122
|
"block relative align-bottom cursor-pointer truncate max-w-220px",
|
|
101
123
|
className
|
|
102
124
|
),
|
|
103
|
-
href: `/address/${
|
|
125
|
+
href: `/address/${value}`,
|
|
104
126
|
style,
|
|
105
127
|
children: [
|
|
106
128
|
text,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ProxyContractAddress/index.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { getTranslations } from 'src/store';\nimport { isInnerContractAddress } from 'src/utils/address';\nimport { Tooltip } from '../Tooltip';\nimport InternalContractIcon from '../../images/internal-contract-icon.png';\nimport ContractIcon from '../../images/contract-icon.png';\nimport VerifiedIcon from '../../images/verified.png';\nimport { shortenAddress } from '@cfx-kit/dapp-utils/dist/address';\nimport { cn } from 'src/utils';\nimport { ProxyType } from 'src/utils/hooks/useTxTrace';\nimport { useAddressLabel } from 'src/utils/hooks/useAddressLabel';\n\nexport const ProxyContractAddress = (props:
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ProxyContractAddress/index.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { getTranslations } from 'src/store';\nimport { isInnerContractAddress } from 'src/utils/address';\nimport { Tooltip } from '../Tooltip';\nimport InternalContractIcon from '../../images/internal-contract-icon.png';\nimport ContractIcon from '../../images/contract-icon.png';\nimport VerifiedIcon from '../../images/verified.png';\nimport { shortenAddress } from '@cfx-kit/dapp-utils/dist/address';\nimport { cn } from 'src/utils';\nimport { ProxyType } from 'src/utils/hooks/useTxTrace';\nimport { useAddressLabel } from 'src/utils/hooks/useAddressLabel';\nimport { getLabelInfo } from '../AddressContainer/label';\nimport { useMemo } from 'react';\nimport { Link } from '../Link';\nimport { CoreAddressContainerProps } from '../AddressContainer/types';\n\nexport const ProxyContractAddress = (\n props: Pick<\n CoreAddressContainerProps,\n | 'value'\n | 'alias'\n | 'isFull'\n | 'verify'\n | 'showIcon'\n | 'showAddressLabel'\n | 'showENSLabel'\n | 'ensInfo'\n | 'showNametag'\n | 'nametagInfo'\n > & {\n proxy: {\n type: ProxyType;\n implAddress: string;\n beaconAddress?: string;\n };\n style?: React.CSSProperties;\n className?: string;\n },\n) => {\n const {\n showIcon = true,\n showAddressLabel = true,\n verify,\n value,\n alias,\n isFull = false,\n proxy,\n className,\n style,\n showENSLabel = true,\n ensInfo,\n showNametag = true,\n nametagInfo,\n } = props;\n\n const { t } = useTranslation();\n const translations = getTranslations();\n const addressLabel = useAddressLabel(value, showAddressLabel);\n\n const text = useMemo(() => {\n const ENSLabel = showENSLabel ? ensInfo?.[value]?.name : undefined;\n const nametag = showNametag ? nametagInfo?.[value]?.nametag : undefined;\n\n // Private name tags > Official tag/name > contract token name > contract tag > contract name > CNS/ENS\n return (\n addressLabel ||\n nametag ||\n alias ||\n ENSLabel ||\n (isFull ? value : shortenAddress(value))\n );\n }, [\n nametagInfo,\n value,\n showNametag,\n addressLabel,\n alias,\n isFull,\n showENSLabel,\n ensInfo,\n ]);\n\n const isInnerContract = value && isInnerContractAddress(value);\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 (\n <div className=\"inline-flex\">\n {showIcon && (\n <div className={`mr-[2px] flex-shrink-0`}>\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 <Tooltip\n title={\n <div className=\"flex flex-col gap-5px\">\n <div>\n {proxy.type}: {value}\n </div>\n {proxy.beaconAddress && <div>Beacon: {proxy.beaconAddress}</div>}\n <div>Impl: {proxy.implAddress}</div>\n </div>\n }\n containerClassName=\"max-w-unset\"\n >\n <Link\n className={cn(\n 'block relative align-bottom cursor-pointer truncate max-w-220px',\n className,\n )}\n href={`/address/${value}`}\n style={style}\n >\n {text}({proxy.type})\n </Link>\n </Tooltip>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,sBAAsB;AAI/B,OAAO,0BAA0B;AACjC,OAAO,kBAAkB;AACzB,OAAO,kBAAkB;AACzB,SAAS,sBAAsB;AAK/B,SAAS,eAAe;AAuFR,SAmBI,UAnBJ,KAMA,YANA;AAnFT,IAAM,uBAAuB,CAClC,UAqBG;AACH,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,mBAAmB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA,cAAc;AAAA,IACd;AAAA,EACF,IAAI;AAEJ,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,QAAM,eAAe,gBAAgB;AACrC,QAAM,eAAe,gBAAgB,OAAO,gBAAgB;AAE5D,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,WAAW,eAAe,UAAU,KAAK,GAAG,OAAO;AACzD,UAAM,UAAU,cAAc,cAAc,KAAK,GAAG,UAAU;AAG9D,WACE,gBACA,WACA,SACA,aACC,SAAS,QAAQ,eAAe,KAAK;AAAA,EAE1C,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,kBAAkB,SAAS,uBAAuB,KAAK;AAE7D,QAAM,WAAW;AAAA,IACf,kBACI,aAAa,QAAQ,mBACrB,SACE,aAAa,QAAQ,mBACrB,aAAa,QAAQ;AAAA,EAC7B;AAEA,SACE,qBAAC,SAAI,WAAU,eACZ;AAAA,gBACC,oBAAC,SAAI,WAAW,0BACd,8BAAC,WAAQ,OAAO,UACd,8BAAC,SAAI,WAAU,8BACZ,4BACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA;AAAA,IACP,IAEA,iCACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,KAAK;AAAA,UACL,KAAK;AAAA;AAAA,MACP;AAAA,MACC,SACC;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,KAAK;AAAA,UACL,KAAK;AAAA;AAAA,MACP,IAEA,gCAAE;AAAA,OAEN,GAEJ,GACF,GACF;AAAA,IAEF;AAAA,MAAC;AAAA;AAAA,QACC,OACE,qBAAC,SAAI,WAAU,yBACb;AAAA,+BAAC,SACE;AAAA,kBAAM;AAAA,YAAK;AAAA,YAAG;AAAA,aACjB;AAAA,UACC,MAAM,iBAAiB,qBAAC,SAAI;AAAA;AAAA,YAAS,MAAM;AAAA,aAAc;AAAA,UAC1D,qBAAC,SAAI;AAAA;AAAA,YAAO,MAAM;AAAA,aAAY;AAAA,WAChC;AAAA,QAEF,oBAAmB;AAAA,QAEnB;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA;AAAA,YACF;AAAA,YACA,MAAM,YAAY;AAAA,YAClB;AAAA,YAEC;AAAA;AAAA,cAAK;AAAA,cAAE,MAAM;AAAA,cAAK;AAAA;AAAA;AAAA,QACrB;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;","names":[]}
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
import "../../chunk-TGK5LP2H.js";
|
|
11
11
|
import {
|
|
12
12
|
CoreAddressContainer
|
|
13
|
-
} from "../../chunk-
|
|
13
|
+
} from "../../chunk-5M5ECKFB.js";
|
|
14
14
|
import "../../chunk-BUSBM33B.js";
|
|
15
|
-
import "../../chunk-
|
|
15
|
+
import "../../chunk-JRB53YY7.js";
|
|
16
16
|
import "../../chunk-MWAD4CIG.js";
|
|
17
|
-
import "../../chunk-
|
|
17
|
+
import "../../chunk-7OSADJ6H.js";
|
|
18
18
|
import "../../chunk-CNF26YY7.js";
|
|
19
19
|
import "../../chunk-P4EE3QGM.js";
|
|
20
20
|
import "../../chunk-TOKKKTFG.js";
|
|
@@ -140,7 +140,7 @@ var AddressNameTagContainer = ({
|
|
|
140
140
|
CoreAddressContainer,
|
|
141
141
|
{
|
|
142
142
|
value,
|
|
143
|
-
alias: contractCache[value]?.
|
|
143
|
+
alias: contractCache[value]?.token?.name || contractCache[value]?.contract?.name,
|
|
144
144
|
isFullNameTag: true,
|
|
145
145
|
nametagInfo
|
|
146
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/TransactionAction/coreTransactionAction.tsx"],"sourcesContent":["import React, { useEffect, useCallback } from 'react';\nimport { formatBalance } from '../../utils';\nimport { Link } from '../Link';\nimport {\n decodeData,\n filterByTokenAddress,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\nimport { CoreAddressContainer } from '../AddressContainer/CoreAddressContainer';\nimport { reqNametag, reqContractAndToken } from '../../utils/request';\nimport { useNametagCacheStore } from '../../store';\nimport {\n TransactionActionProps,\n AddressNameTagContainerProps,\n MultiAction,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\n\nimport { TokenIcon, TokenName, TokenSymbol, TokenDecimals } from './constants';\n\nconst Token = (\n address: string,\n customInfo: any,\n tokenType: string,\n tokenExhibit: string[], // icon, name, symbol\n) => {\n const customInfoToken = filterByTokenAddress(customInfo.token || {}, address);\n return customInfoToken && customInfoToken['token'] ? (\n <>\n {tokenExhibit.includes('icon') ? (\n customInfoToken['token']['iconUrl'] ? (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={customInfoToken['token']['iconUrl']}\n alt=\"icon\"\n />\n ) : (\n <>\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n </>\n )\n ) : (\n <></>\n )}\n {tokenExhibit.includes('name') ? (\n <Link href={`/address/${address}`}>\n {customInfoToken['token']['name'] ? (\n `${customInfoToken['token']['name']}`\n ) : (\n <div>{TokenName}</div>\n )}{' '}\n </Link>\n ) : (\n <></>\n )}\n {tokenExhibit.includes('symbol') ? (\n <Link href={`/address/${address}`}>\n {customInfoToken['token']['symbol']\n ? customInfoToken['token']['symbol']\n : TokenSymbol}{' '}\n </Link>\n ) : (\n <></>\n )}\n </>\n ) : (\n <>\n {tokenExhibit.includes('icon') && (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n )}\n {tokenExhibit.includes('name') && <div>{TokenName}</div>}\n {tokenExhibit.includes('symbol') && <div>({TokenSymbol})</div>}\n </>\n );\n};\n\nconst AddressNameTagContainer: React.FC<AddressNameTagContainerProps> = ({\n value,\n}) => {\n const { nametagCache, contractCache, setNametagCache, setContractCache } =\n useNametagCacheStore(state => ({\n nametagCache: state.nametagCache,\n contractCache: state.contractCache,\n setNametagCache: state.setNametagCache,\n setContractCache: state.setContractCache,\n }));\n\n const fetchContractAndToken = useCallback(\n async (address: string) => {\n try {\n const data = (await reqContractAndToken([address]))?.map;\n if (data[address]) {\n setContractCache({ [address]: data[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setContractCache],\n );\n\n const fetchNameTag = useCallback(\n async (address: string) => {\n try {\n const data = await reqNametag([address]);\n if (data[address]) {\n setNametagCache({ [address]: data[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setNametagCache],\n );\n\n useEffect(() => {\n if (value && !contractCache[value]) {\n fetchContractAndToken(value);\n }\n\n if (value && !nametagCache[value]) {\n fetchNameTag(value);\n }\n }, [value, fetchContractAndToken, fetchNameTag, nametagCache, contractCache]);\n\n const nametagInfo = {\n [value]: {\n address: value,\n nametag: nametagCache[value]?.nameTag || '',\n },\n };\n\n return (\n <CoreAddressContainer\n value={value}\n alias={\n contractCache[value]?.contract?.name ||\n contractCache[value]?.token?.name\n }\n isFullNameTag={true}\n nametagInfo={nametagInfo}\n />\n );\n};\nconst customUI: MultiAction = {\n ERC20_Transfer: ({ address, toAddress, value, customInfo }) => {\n const customInfoToken = filterByTokenAddress(\n customInfo.token || {},\n address,\n );\n const decimals = customInfoToken?.token?.decimals ?? TokenDecimals;\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer\n <div className=\"font-extrabold\">\n {formatBalance(value, decimals, true)}\n </div>{' '}\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} to{' '}\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n </div>\n );\n },\n ERC20_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC20_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeBatchTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchBurn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchMint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n};\n\nexport const TransactionAction = ({\n transaction,\n event,\n customInfo,\n}: TransactionActionProps) => {\n const res = decodeData(transaction, event, customInfo, customUI);\n\n if (res && res.content && res.content.length > 0) {\n return {\n show: true,\n content: (\n <div className=\"max-h-[119px] overflow-y-auto\">\n {res.content.map((e: any, i) => {\n return <div key={i}>{e}</div>;\n })}\n </div>\n ),\n };\n }\n return {\n show: false,\n content: undefined,\n };\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/TransactionAction/coreTransactionAction.tsx"],"sourcesContent":["import React, { useEffect, useCallback } from 'react';\nimport { formatBalance } from '../../utils';\nimport { Link } from '../Link';\nimport {\n decodeData,\n filterByTokenAddress,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\nimport { CoreAddressContainer } from '../AddressContainer/CoreAddressContainer';\nimport { reqNametag, reqContractAndToken } from '../../utils/request';\nimport { useNametagCacheStore } from '../../store';\nimport {\n TransactionActionProps,\n AddressNameTagContainerProps,\n MultiAction,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\n\nimport { TokenIcon, TokenName, TokenSymbol, TokenDecimals } from './constants';\n\nconst Token = (\n address: string,\n customInfo: any,\n tokenType: string,\n tokenExhibit: string[], // icon, name, symbol\n) => {\n const customInfoToken = filterByTokenAddress(customInfo.token || {}, address);\n return customInfoToken && customInfoToken['token'] ? (\n <>\n {tokenExhibit.includes('icon') ? (\n customInfoToken['token']['iconUrl'] ? (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={customInfoToken['token']['iconUrl']}\n alt=\"icon\"\n />\n ) : (\n <>\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n </>\n )\n ) : (\n <></>\n )}\n {tokenExhibit.includes('name') ? (\n <Link href={`/address/${address}`}>\n {customInfoToken['token']['name'] ? (\n `${customInfoToken['token']['name']}`\n ) : (\n <div>{TokenName}</div>\n )}{' '}\n </Link>\n ) : (\n <></>\n )}\n {tokenExhibit.includes('symbol') ? (\n <Link href={`/address/${address}`}>\n {customInfoToken['token']['symbol']\n ? customInfoToken['token']['symbol']\n : TokenSymbol}{' '}\n </Link>\n ) : (\n <></>\n )}\n </>\n ) : (\n <>\n {tokenExhibit.includes('icon') && (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n )}\n {tokenExhibit.includes('name') && <div>{TokenName}</div>}\n {tokenExhibit.includes('symbol') && <div>({TokenSymbol})</div>}\n </>\n );\n};\n\nconst AddressNameTagContainer: React.FC<AddressNameTagContainerProps> = ({\n value,\n}) => {\n const { nametagCache, contractCache, setNametagCache, setContractCache } =\n useNametagCacheStore(state => ({\n nametagCache: state.nametagCache,\n contractCache: state.contractCache,\n setNametagCache: state.setNametagCache,\n setContractCache: state.setContractCache,\n }));\n\n const fetchContractAndToken = useCallback(\n async (address: string) => {\n try {\n const data = (await reqContractAndToken([address]))?.map;\n if (data[address]) {\n setContractCache({ [address]: data[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setContractCache],\n );\n\n const fetchNameTag = useCallback(\n async (address: string) => {\n try {\n const data = await reqNametag([address]);\n if (data[address]) {\n setNametagCache({ [address]: data[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setNametagCache],\n );\n\n useEffect(() => {\n if (value && !contractCache[value]) {\n fetchContractAndToken(value);\n }\n\n if (value && !nametagCache[value]) {\n fetchNameTag(value);\n }\n }, [value, fetchContractAndToken, fetchNameTag, nametagCache, contractCache]);\n\n const nametagInfo = {\n [value]: {\n address: value,\n nametag: nametagCache[value]?.nameTag || '',\n },\n };\n\n return (\n <CoreAddressContainer\n value={value}\n alias={\n contractCache[value]?.token?.name ||\n contractCache[value]?.contract?.name\n }\n isFullNameTag={true}\n nametagInfo={nametagInfo}\n />\n );\n};\nconst customUI: MultiAction = {\n ERC20_Transfer: ({ address, toAddress, value, customInfo }) => {\n const customInfoToken = filterByTokenAddress(\n customInfo.token || {},\n address,\n );\n const decimals = customInfoToken?.token?.decimals ?? TokenDecimals;\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer\n <div className=\"font-extrabold\">\n {formatBalance(value, decimals, true)}\n </div>{' '}\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} to{' '}\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n </div>\n );\n },\n ERC20_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC20_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={toAddress} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeBatchTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchBurn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchMint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n};\n\nexport const TransactionAction = ({\n transaction,\n event,\n customInfo,\n}: TransactionActionProps) => {\n const res = decodeData(transaction, event, customInfo, customUI);\n\n if (res && res.content && res.content.length > 0) {\n return {\n show: true,\n content: (\n <div className=\"max-h-[119px] overflow-y-auto\">\n {res.content.map((e: any, i) => {\n return <div key={i}>{e}</div>;\n })}\n </div>\n ),\n };\n }\n return {\n show: false,\n content: undefined,\n };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
import "../../chunk-TGK5LP2H.js";
|
|
11
11
|
import {
|
|
12
12
|
EVMAddressContainer
|
|
13
|
-
} from "../../chunk-
|
|
14
|
-
import "../../chunk-
|
|
13
|
+
} from "../../chunk-5CDCNIBM.js";
|
|
14
|
+
import "../../chunk-JRB53YY7.js";
|
|
15
15
|
import "../../chunk-MWAD4CIG.js";
|
|
16
|
-
import "../../chunk-
|
|
16
|
+
import "../../chunk-7OSADJ6H.js";
|
|
17
17
|
import {
|
|
18
18
|
formatAddress
|
|
19
19
|
} from "../../chunk-CNF26YY7.js";
|
|
@@ -151,7 +151,7 @@ var AddressNameTagContainer = ({
|
|
|
151
151
|
EVMAddressContainer,
|
|
152
152
|
{
|
|
153
153
|
value,
|
|
154
|
-
alias: contractCache[value]?.
|
|
154
|
+
alias: contractCache[value]?.token?.name || contractCache[value]?.contract?.name,
|
|
155
155
|
isFullNameTag: true,
|
|
156
156
|
nametagInfo
|
|
157
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/TransactionAction/evmTransactionAction.tsx"],"sourcesContent":["import React, { useEffect, useCallback } from 'react';\nimport { formatBalance } from '../../utils';\nimport { formatAddress } from '../../utils/address';\nimport { Link } from '../Link';\nimport {\n decodeData,\n filterByTokenAddress,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\nimport { EVMAddressContainer } from '../AddressContainer/EVMAddressContainer';\nimport { reqNametag, reqContractAndToken } from '../../utils/request';\nimport { useNametagCacheStore } from '../../store';\nimport type {\n TransactionActionProps,\n AddressNameTagContainerProps,\n MultiAction,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\nimport { TokenIcon, TokenName, TokenSymbol, TokenDecimals } from './constants';\n\nconst Token = (\n address: string,\n customInfo: any,\n tokenType: string,\n tokenExhibit: string[], // icon, name, symbol\n) => {\n const customInfoToken = filterByTokenAddress(customInfo.token || {}, address);\n return customInfoToken && customInfoToken['token'] ? (\n <>\n {tokenExhibit.includes('icon') ? (\n customInfoToken['token']['iconUrl'] ? (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={customInfoToken['token']['iconUrl']}\n alt=\"icon\"\n />\n ) : (\n <>\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n </>\n )\n ) : (\n <></>\n )}\n {tokenExhibit.includes('name') ? (\n <Link href={`/address/${formatAddress(address, 'hex')}`}>\n {customInfoToken['token']['name'] ? (\n `${customInfoToken['token']['name']}`\n ) : (\n <div>{TokenName}</div>\n )}{' '}\n </Link>\n ) : (\n <></>\n )}\n {tokenExhibit.includes('symbol') ? (\n <Link href={`/address/${formatAddress(address, 'hex')}`}>\n {customInfoToken['token']['symbol']\n ? customInfoToken['token']['symbol']\n : TokenSymbol}{' '}\n </Link>\n ) : (\n <></>\n )}\n </>\n ) : (\n <>\n {tokenExhibit.includes('icon') && (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n )}\n {tokenExhibit.includes('name') && <div>{TokenName}</div>}\n {tokenExhibit.includes('symbol') && <div>({TokenSymbol})</div>}\n </>\n );\n};\n\n// TODO: When the evm api is changed to hex address, it can be deleted.\nconst convertMapKeysToHex = (\n data: Record<string, any>,\n): Record<string, any> => {\n const newMap: Record<string, any> = {};\n for (const [key, value] of Object.entries(data)) {\n const newKey = formatAddress(key, 'hex');\n newMap[newKey] = value;\n }\n return newMap;\n};\n\nconst AddressNameTagContainer: React.FC<AddressNameTagContainerProps> = ({\n value,\n}) => {\n const { nametagCache, contractCache, setNametagCache, setContractCache } =\n useNametagCacheStore(state => ({\n nametagCache: state.nametagCache,\n contractCache: state.contractCache,\n setNametagCache: state.setNametagCache,\n setContractCache: state.setContractCache,\n }));\n\n const fetchContractAndToken = useCallback(\n async (address: string) => {\n try {\n const data = (await reqContractAndToken([address]))?.map;\n const dataToHex = convertMapKeysToHex(data);\n if (dataToHex[address]) {\n setContractCache({ [address]: dataToHex[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setContractCache],\n );\n\n const fetchNameTag = useCallback(\n async (address: string) => {\n try {\n const data = await reqNametag([address]);\n const dataToHex = convertMapKeysToHex(data);\n if (dataToHex[address]) {\n setNametagCache({ [address]: dataToHex[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setNametagCache],\n );\n\n useEffect(() => {\n if (value && !contractCache[value]) {\n fetchContractAndToken(value);\n }\n\n if (value && !nametagCache[value]) {\n fetchNameTag(value);\n }\n }, [value, fetchContractAndToken, fetchNameTag, nametagCache, contractCache]);\n\n const nametagInfo = {\n [value]: {\n address: value,\n nametag: nametagCache[value]?.nameTag || '',\n },\n };\n\n return (\n <EVMAddressContainer\n value={value}\n alias={\n contractCache[value]?.contract?.name ||\n contractCache[value]?.token?.name\n }\n isFullNameTag={true}\n nametagInfo={nametagInfo}\n />\n );\n};\nconst customUI: MultiAction = {\n ERC20_Transfer: ({ address, toAddress, value, customInfo }) => {\n const customInfoToken = filterByTokenAddress(\n customInfo.token || {},\n address,\n );\n const decimals = customInfoToken?.token?.decimals ?? TokenDecimals;\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer\n <div className=\"font-extrabold\">\n {formatBalance(value, decimals, true)}\n </div>{' '}\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} to{' '}\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n </div>\n );\n },\n ERC20_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC20_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeBatchTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchBurn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchMint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n};\n\nexport const TransactionAction = ({\n transaction,\n event,\n customInfo,\n}: TransactionActionProps) => {\n const res = decodeData(transaction, event, customInfo, customUI);\n if (res && res.content && res.content.length > 0) {\n return {\n show: true,\n content: (\n <div className=\"max-h-[119px] overflow-y-auto\">\n {res.content.map((e: any, i) => {\n return <div key={i}>{e}</div>;\n })}\n </div>\n ),\n };\n }\n return {\n show: false,\n content: undefined,\n };\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/TransactionAction/evmTransactionAction.tsx"],"sourcesContent":["import React, { useEffect, useCallback } from 'react';\nimport { formatBalance } from '../../utils';\nimport { formatAddress } from '../../utils/address';\nimport { Link } from '../Link';\nimport {\n decodeData,\n filterByTokenAddress,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\nimport { EVMAddressContainer } from '../AddressContainer/EVMAddressContainer';\nimport { reqNametag, reqContractAndToken } from '../../utils/request';\nimport { useNametagCacheStore } from '../../store';\nimport type {\n TransactionActionProps,\n AddressNameTagContainerProps,\n MultiAction,\n} from '@cfx-kit/dapp-utils/dist/decode-action';\nimport { TokenIcon, TokenName, TokenSymbol, TokenDecimals } from './constants';\n\nconst Token = (\n address: string,\n customInfo: any,\n tokenType: string,\n tokenExhibit: string[], // icon, name, symbol\n) => {\n const customInfoToken = filterByTokenAddress(customInfo.token || {}, address);\n return customInfoToken && customInfoToken['token'] ? (\n <>\n {tokenExhibit.includes('icon') ? (\n customInfoToken['token']['iconUrl'] ? (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={customInfoToken['token']['iconUrl']}\n alt=\"icon\"\n />\n ) : (\n <>\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n </>\n )\n ) : (\n <></>\n )}\n {tokenExhibit.includes('name') ? (\n <Link href={`/address/${formatAddress(address, 'hex')}`}>\n {customInfoToken['token']['name'] ? (\n `${customInfoToken['token']['name']}`\n ) : (\n <div>{TokenName}</div>\n )}{' '}\n </Link>\n ) : (\n <></>\n )}\n {tokenExhibit.includes('symbol') ? (\n <Link href={`/address/${formatAddress(address, 'hex')}`}>\n {customInfoToken['token']['symbol']\n ? customInfoToken['token']['symbol']\n : TokenSymbol}{' '}\n </Link>\n ) : (\n <></>\n )}\n </>\n ) : (\n <>\n {tokenExhibit.includes('icon') && (\n <img\n className=\"w-[16px] h-[16px] mt-[2px]\"\n src={TokenIcon}\n alt=\"icon\"\n />\n )}\n {tokenExhibit.includes('name') && <div>{TokenName}</div>}\n {tokenExhibit.includes('symbol') && <div>({TokenSymbol})</div>}\n </>\n );\n};\n\n// TODO: When the evm api is changed to hex address, it can be deleted.\nconst convertMapKeysToHex = (\n data: Record<string, any>,\n): Record<string, any> => {\n const newMap: Record<string, any> = {};\n for (const [key, value] of Object.entries(data)) {\n const newKey = formatAddress(key, 'hex');\n newMap[newKey] = value;\n }\n return newMap;\n};\n\nconst AddressNameTagContainer: React.FC<AddressNameTagContainerProps> = ({\n value,\n}) => {\n const { nametagCache, contractCache, setNametagCache, setContractCache } =\n useNametagCacheStore(state => ({\n nametagCache: state.nametagCache,\n contractCache: state.contractCache,\n setNametagCache: state.setNametagCache,\n setContractCache: state.setContractCache,\n }));\n\n const fetchContractAndToken = useCallback(\n async (address: string) => {\n try {\n const data = (await reqContractAndToken([address]))?.map;\n const dataToHex = convertMapKeysToHex(data);\n if (dataToHex[address]) {\n setContractCache({ [address]: dataToHex[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setContractCache],\n );\n\n const fetchNameTag = useCallback(\n async (address: string) => {\n try {\n const data = await reqNametag([address]);\n const dataToHex = convertMapKeysToHex(data);\n if (dataToHex[address]) {\n setNametagCache({ [address]: dataToHex[address] });\n }\n } catch (error) {\n console.error(error);\n }\n },\n [setNametagCache],\n );\n\n useEffect(() => {\n if (value && !contractCache[value]) {\n fetchContractAndToken(value);\n }\n\n if (value && !nametagCache[value]) {\n fetchNameTag(value);\n }\n }, [value, fetchContractAndToken, fetchNameTag, nametagCache, contractCache]);\n\n const nametagInfo = {\n [value]: {\n address: value,\n nametag: nametagCache[value]?.nameTag || '',\n },\n };\n\n return (\n <EVMAddressContainer\n value={value}\n alias={\n contractCache[value]?.token?.name ||\n contractCache[value]?.contract?.name\n }\n isFullNameTag={true}\n nametagInfo={nametagInfo}\n />\n );\n};\nconst customUI: MultiAction = {\n ERC20_Transfer: ({ address, toAddress, value, customInfo }) => {\n const customInfoToken = filterByTokenAddress(\n customInfo.token || {},\n address,\n );\n const decimals = customInfoToken?.token?.decimals ?? TokenDecimals;\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer\n <div className=\"font-extrabold\">\n {formatBalance(value, decimals, true)}\n </div>{' '}\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} to{' '}\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n </div>\n );\n },\n ERC20_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC20_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked\n {Token(address, customInfo, 'ERC20', ['icon', 'symbol'])} from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC721', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC721_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC721_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC721', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Approved: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Approved {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n for\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Revoked: ({ address, toAddress, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Revoked {Token(address, customInfo, 'ERC1155', ['icon', 'symbol'])}\n from\n {toAddress && (\n <Link href={`/address/${toAddress}`}>\n <AddressNameTagContainer value={formatAddress(toAddress, 'hex')} />\n </Link>\n )}\n </div>\n );\n },\n ERC1155_Mint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Burn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_Transfer: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_SafeBatchTransferFrom: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Transfer <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchBurn: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Burn <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n ERC1155_BatchMint: ({ value, address, customInfo }) => {\n return (\n <div className=\"flex flex-wrap content-center gap-[5px]\">\n Mint <div className=\"font-extrabold\">{value}</div> of{' '}\n {Token(address, customInfo, 'ERC1155', ['icon', 'name', 'symbol'])}\n </div>\n );\n },\n};\n\nexport const TransactionAction = ({\n transaction,\n event,\n customInfo,\n}: TransactionActionProps) => {\n const res = decodeData(transaction, event, customInfo, customUI);\n if (res && res.content && res.content.length > 0) {\n return {\n show: true,\n content: (\n <div className=\"max-h-[119px] overflow-y-auto\">\n {res.content.map((e: any, i) => {\n return <div key={i}>{e}</div>;\n })}\n </div>\n ),\n };\n }\n return {\n show: false,\n content: undefined,\n };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TraceDetail
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-CL6QEKM6.js";
|
|
4
|
+
import "../../chunk-LUCBUM2Y.js";
|
|
5
5
|
import "../../chunk-UM5J477V.js";
|
|
6
6
|
import "../../chunk-E3ZD2GGG.js";
|
|
7
7
|
import "../../chunk-YIZCD4WG.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeTraceTable
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-LBWKTQYK.js";
|
|
4
|
+
import "../../chunk-CL6QEKM6.js";
|
|
5
|
+
import "../../chunk-LUCBUM2Y.js";
|
|
6
6
|
import "../../chunk-UM5J477V.js";
|
|
7
7
|
import "../../chunk-E3ZD2GGG.js";
|
|
8
8
|
import "../../chunk-XZ7IV2FF.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TreeTraceTable
|
|
3
|
-
} from "../../chunk-
|
|
3
|
+
} from "../../chunk-LBWKTQYK.js";
|
|
4
4
|
import {
|
|
5
5
|
TraceDetail
|
|
6
|
-
} from "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
6
|
+
} from "../../chunk-CL6QEKM6.js";
|
|
7
|
+
import "../../chunk-LUCBUM2Y.js";
|
|
8
8
|
import "../../chunk-UM5J477V.js";
|
|
9
9
|
import "../../chunk-E3ZD2GGG.js";
|
|
10
10
|
import "../../chunk-XZ7IV2FF.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cfxjs/sirius-next-common",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.17",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist/**"
|
|
@@ -78,9 +78,9 @@
|
|
|
78
78
|
"typescript": "^5.4.2",
|
|
79
79
|
"unocss": "0.58.6",
|
|
80
80
|
"vitest": "3.2.3",
|
|
81
|
+
"@cfxjs/sirius-next-typescript-config": "0.0.0",
|
|
81
82
|
"@cfxjs/sirius-next-eslint-config": "0.0.0",
|
|
82
|
-
"@cfxjs/sirius-next-i18n": "0.2.9"
|
|
83
|
-
"@cfxjs/sirius-next-typescript-config": "0.0.0"
|
|
83
|
+
"@cfxjs/sirius-next-i18n": "0.2.9"
|
|
84
84
|
},
|
|
85
85
|
"publishConfig": {
|
|
86
86
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/hooks/useDecodeFunctionData.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport {\n decodeFunctionData,\n decodeFunctionResult,\n getAbiItem,\n AbiFunctionWithoutGas,\n} from 'src/utils/sdk';\nimport { useContractDetail } from './useContractDetail';\nimport { formatABI } from '..';\nimport { useMethodAbi } from './useMethodAbi';\n\nconst fields = ['abi' as const];\n\nexport type Hex = `0x${string}`;\n\nconst decodeFunctionDataByAbi = ({\n abi: _abi,\n input,\n output,\n space,\n success,\n withOutput = false,\n similarWarning,\n}: {\n input: Hex;\n output?: Hex;\n abi?: AbiFunctionWithoutGas[] | string;\n space: 'evm' | 'core';\n success?: boolean;\n withOutput?: boolean;\n similarWarning?: boolean;\n}) => {\n try {\n const abi = typeof _abi === 'string' ? JSON.parse(_abi) : _abi;\n const hasAbi = abi && abi.length > 0;\n if (!hasAbi) return null;\n const isReturnDataEmpty = !output || output === '0x';\n const methodID = input.slice(0, 10);\n const decodedParams = decodeFunctionData({\n abi: abi,\n data: input,\n space,\n });\n let decodedResults = success\n ? !isReturnDataEmpty\n ? decodeFunctionResult({\n abi: abi,\n functionName: decodedParams.functionName,\n data: output,\n space,\n })\n : undefined\n : output;\n const abiItem = getAbiItem({\n abi: abi,\n name: decodedParams.functionName ?? methodID,\n }) as AbiFunctionWithoutGas;\n // if the output has only one value, decodeFunctionResult will return the value directly, otherwise it will return an array,\n // so we need to check the length of abiItem.outputs to determine whether to wrap decodedResults in an array\n const results =\n decodedResults === undefined\n ? undefined\n : abiItem.outputs.length === 1\n ? [decodedResults]\n : (decodedResults as unknown[]);\n if (!withOutput) {\n abiItem.outputs = [];\n }\n const fullName = formatABI([abiItem])[0];\n return {\n decodedParams,\n decodedResults: results,\n abiItem,\n fullName: fullName,\n failed: false,\n similarWarning,\n };\n } catch (error) {\n console.log('decode function data and result error', error);\n return {\n failed: true,\n similarWarning,\n };\n }\n};\n\nexport interface DecodedFunctionData {\n decodedParams?: {\n args: readonly unknown[] | undefined;\n functionName: string;\n };\n decodedResults?: unknown[];\n abiItem?: AbiFunctionWithoutGas;\n fullName?: string;\n // no abi for decoded\n noAbi?: boolean;\n // decoded failed\n failed?: boolean;\n // decoded by method abi, not contract abi\n similarWarning?: boolean;\n}\n\nexport const useDecodeFunctionData = ({\n to,\n abi: outerAbi,\n implementation: _implementation,\n input,\n output,\n space,\n success,\n supportMethodAbi,\n withOutput,\n}: {\n input: Hex;\n output?: Hex;\n to?: string;\n implementation?: string;\n abi?: AbiFunctionWithoutGas[];\n space: 'evm' | 'core';\n success?: boolean;\n supportMethodAbi?: boolean;\n withOutput?: boolean;\n}): [DecodedFunctionData, boolean] => {\n const hasOuterAbi = outerAbi && outerAbi.length > 0;\n const needContractAbi = !hasOuterAbi && !!input;\n const { data: contractData, isLoading: contractLoading } = useContractDetail(\n to,\n fields,\n needContractAbi,\n );\n const implementation =\n _implementation ?? contractData?.implementation?.address;\n const { data: implementationData, isLoading: implementationLoading } =\n useContractDetail(implementation, fields, needContractAbi);\n const decodedByOuterAbi = useMemo(() => {\n return decodeFunctionDataByAbi({\n abi: outerAbi,\n input,\n output,\n space,\n success,\n withOutput,\n });\n }, [input, output, outerAbi, success, space, withOutput]);\n const decodedByContractAbi = useMemo(() => {\n if (!contractData?.abi) return null;\n return decodeFunctionDataByAbi({\n abi: contractData.abi as string,\n input,\n output,\n space,\n success,\n withOutput,\n });\n }, [input, output, contractData?.abi, success, space, withOutput]);\n const decodedByImplementationAbi = useMemo(() => {\n if (!implementationData?.abi) return null;\n return decodeFunctionDataByAbi({\n abi: implementationData.abi as string,\n input,\n output,\n space,\n success,\n withOutput,\n });\n }, [input, output, implementationData?.abi, success, space, withOutput]);\n const needMethodAbi =\n !!supportMethodAbi &&\n needContractAbi &&\n // contract abi decoded failed\n !contractLoading &&\n (!decodedByContractAbi || decodedByContractAbi.failed) &&\n // implementation contract abi decoded failed\n !implementationLoading &&\n (!decodedByImplementationAbi || decodedByImplementationAbi.failed);\n const { data: methodAbi, isLoading: methodAbiLoading } = useMethodAbi(\n input.slice(0, 10),\n needMethodAbi,\n );\n const decodedByMethodAbi = useMemo(() => {\n // decode tx data with function abi only if there is only one function\n if (!methodAbi || methodAbi.list.length !== 1) return null;\n try {\n // e.g. transfer(address,uint256)\n const fullName = methodAbi.list[0]!.fullName;\n // e.g. function transfer(address recipient, uint256 amount) returns (bool)\n const formatWithArg = methodAbi.list[0]!.formatWithArg;\n const abi = formatABI([formatWithArg || `function ${fullName}`], {\n json: true,\n });\n return decodeFunctionDataByAbi({\n abi: abi,\n input,\n output,\n space,\n success,\n withOutput,\n similarWarning: true,\n });\n } catch (error) {\n console.log('decode function data and result error', error);\n return {\n failed: true,\n };\n }\n }, [input, output, methodAbi, success, space, withOutput]);\n\n return useMemo(() => {\n if (!input) return [{}, false];\n if (decodedByOuterAbi && !decodedByOuterAbi.failed)\n return [decodedByOuterAbi, false];\n if (decodedByImplementationAbi && !decodedByImplementationAbi.failed)\n return [decodedByImplementationAbi, implementationLoading];\n if (decodedByContractAbi && !decodedByContractAbi.failed)\n return [decodedByContractAbi, contractLoading];\n if (decodedByMethodAbi && !decodedByMethodAbi.failed)\n return [decodedByMethodAbi, methodAbiLoading];\n if (implementationLoading || contractLoading || methodAbiLoading) {\n return [{}, true];\n }\n if (\n (decodedByOuterAbi && decodedByOuterAbi.failed) ||\n (decodedByImplementationAbi && decodedByImplementationAbi.failed) ||\n (decodedByContractAbi && decodedByContractAbi.failed) ||\n (decodedByMethodAbi && decodedByMethodAbi.failed)\n ) {\n return [\n {\n failed: true,\n },\n false,\n ];\n }\n return [\n {\n noAbi: true,\n },\n false,\n ];\n }, [\n input,\n decodedByOuterAbi,\n decodedByContractAbi,\n decodedByImplementationAbi,\n decodedByMethodAbi,\n contractLoading,\n implementationLoading,\n methodAbiLoading,\n ]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAe;AAWxB,IAAM,SAAS,CAAC,KAAc;AAI9B,IAAM,0BAA0B,CAAC;AAAA,EAC/B,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AACF,MAQM;AACJ,MAAI;AACF,UAAM,MAAM,OAAO,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI;AAC1D,UAAM,SAAS,OAAO,IAAI,SAAS;AACnC,QAAI,CAAC;AAAQ,aAAO;AACpB,UAAM,oBAAoB,CAAC,UAAU,WAAW;AAChD,UAAM,WAAW,MAAM,MAAM,GAAG,EAAE;AAClC,UAAM,gBAAgB,mBAAmB;AAAA,MACvC;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACF,CAAC;AACD,QAAI,iBAAiB,UACjB,CAAC,oBACC,qBAAqB;AAAA,MACnB;AAAA,MACA,cAAc,cAAc;AAAA,MAC5B,MAAM;AAAA,MACN;AAAA,IACF,CAAC,IACD,SACF;AACJ,UAAM,UAAU,WAAW;AAAA,MACzB;AAAA,MACA,MAAM,cAAc,gBAAgB;AAAA,IACtC,CAAC;AAGD,UAAM,UACJ,mBAAmB,SACf,SACA,QAAQ,QAAQ,WAAW,IACzB,CAAC,cAAc,IACd;AACT,QAAI,CAAC,YAAY;AACf,cAAQ,UAAU,CAAC;AAAA,IACrB;AACA,UAAM,WAAW,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;AACvC,WAAO;AAAA,MACL;AAAA,MACA,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF,SAAS,OAAP;AACA,YAAQ,IAAI,yCAAyC,KAAK;AAC1D,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAkBO,IAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA,KAAK;AAAA,EACL,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAUsC;AACpC,QAAM,cAAc,YAAY,SAAS,SAAS;AAClD,QAAM,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC1C,QAAM,EAAE,MAAM,cAAc,WAAW,gBAAgB,IAAI;AAAA,IACzD;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,iBACJ,mBAAmB,cAAc,gBAAgB;AACnD,QAAM,EAAE,MAAM,oBAAoB,WAAW,sBAAsB,IACjE,kBAAkB,gBAAgB,QAAQ,eAAe;AAC3D,QAAM,oBAAoB,QAAQ,MAAM;AACtC,WAAO,wBAAwB;AAAA,MAC7B,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,QAAQ,UAAU,SAAS,OAAO,UAAU,CAAC;AACxD,QAAM,uBAAuB,QAAQ,MAAM;AACzC,QAAI,CAAC,cAAc;AAAK,aAAO;AAC/B,WAAO,wBAAwB;AAAA,MAC7B,KAAK,aAAa;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,QAAQ,cAAc,KAAK,SAAS,OAAO,UAAU,CAAC;AACjE,QAAM,6BAA6B,QAAQ,MAAM;AAC/C,QAAI,CAAC,oBAAoB;AAAK,aAAO;AACrC,WAAO,wBAAwB;AAAA,MAC7B,KAAK,mBAAmB;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,QAAQ,oBAAoB,KAAK,SAAS,OAAO,UAAU,CAAC;AACvE,QAAM,gBACJ,CAAC,CAAC,oBACF;AAAA,EAEA,CAAC,oBACA,CAAC,wBAAwB,qBAAqB;AAAA,EAE/C,CAAC,0BACA,CAAC,8BAA8B,2BAA2B;AAC7D,QAAM,EAAE,MAAM,WAAW,WAAW,iBAAiB,IAAI;AAAA,IACvD,MAAM,MAAM,GAAG,EAAE;AAAA,IACjB;AAAA,EACF;AACA,QAAM,qBAAqB,QAAQ,MAAM;AAEvC,QAAI,CAAC,aAAa,UAAU,KAAK,WAAW;AAAG,aAAO;AACtD,QAAI;AAEF,YAAM,WAAW,UAAU,KAAK,CAAC,EAAG;AAEpC,YAAM,gBAAgB,UAAU,KAAK,CAAC,EAAG;AACzC,YAAM,MAAM,UAAU,CAAC,iBAAiB,YAAY,UAAU,GAAG;AAAA,QAC/D,MAAM;AAAA,MACR,CAAC;AACD,aAAO,wBAAwB;AAAA,QAC7B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,MAClB,CAAC;AAAA,IACH,SAAS,OAAP;AACA,cAAQ,IAAI,yCAAyC,KAAK;AAC1D,aAAO;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,QAAQ,WAAW,SAAS,OAAO,UAAU,CAAC;AAEzD,SAAO,QAAQ,MAAM;AACnB,QAAI,CAAC;AAAO,aAAO,CAAC,CAAC,GAAG,KAAK;AAC7B,QAAI,qBAAqB,CAAC,kBAAkB;AAC1C,aAAO,CAAC,mBAAmB,KAAK;AAClC,QAAI,8BAA8B,CAAC,2BAA2B;AAC5D,aAAO,CAAC,4BAA4B,qBAAqB;AAC3D,QAAI,wBAAwB,CAAC,qBAAqB;AAChD,aAAO,CAAC,sBAAsB,eAAe;AAC/C,QAAI,sBAAsB,CAAC,mBAAmB;AAC5C,aAAO,CAAC,oBAAoB,gBAAgB;AAC9C,QAAI,yBAAyB,mBAAmB,kBAAkB;AAChE,aAAO,CAAC,CAAC,GAAG,IAAI;AAAA,IAClB;AACA,QACG,qBAAqB,kBAAkB,UACvC,8BAA8B,2BAA2B,UACzD,wBAAwB,qBAAqB,UAC7C,sBAAsB,mBAAmB,QAC1C;AACA,aAAO;AAAA,QACL;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,QACE,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AddressContainer/addressView.tsx"],"sourcesContent":["import { Translation } from 'react-i18next';\nimport { Text } from '../Text';\nimport { convertCheckSum } from '../../utils/address';\nimport { getTranslations } from '../../store';\nimport { TooltipContent, RenderAddressProps } from './types';\nimport { shortenAddress } from '@cfx-kit/dapp-utils/dist/address';\n\nconst defaultPCMaxWidth = 138;\n\n// common\nconst renderTooltipContent = (tooltipContent: TooltipContent) => {\n return Object.entries(tooltipContent)\n .map(([key, { label, value, hideLabel }]) => {\n if (value) {\n return (\n <div key={key}>\n {!hideLabel && (\n <span>\n <Translation>{t => t(label)}</Translation>\n </span>\n )}\n {value}\n </div>\n );\n }\n return null;\n })\n .filter(Boolean);\n};\n\n// common\nconst convertLink = ({\n link,\n type,\n hrefAddress,\n cfxAddress,\n}: RenderAddressProps) => {\n if (typeof link === 'string') {\n return link;\n }\n if (link === false) {\n return false;\n }\n\n const address = hrefAddress || cfxAddress;\n\n if (address && typeof address === 'string') {\n const pathname = window.location.pathname.toLowerCase();\n const addressLower = address.toLowerCase();\n if (pathname.includes('/address/' + addressLower)) {\n return false;\n }\n\n if (type === 'pow') {\n return `/address/${address}`;\n }\n\n if (type === 'pos') {\n return `/pos/accounts/${address}`;\n }\n }\n\n return false;\n};\n\n// common\nexport const RenderAddress = ({\n cfxAddress,\n alias,\n hoverValue,\n hrefAddress,\n content,\n link = '',\n isFull = false,\n isFullNameTag = false,\n style = {},\n maxWidth,\n prefix = null,\n ENSIcon = null,\n suffix = null,\n type = 'pow',\n addressLabel = '',\n ENSLabel = '',\n nametag = '',\n hideAliasPrefixInHover = false,\n}: RenderAddressProps) => {\n const translations = getTranslations();\n\n // Private name tags >Official tag/name>contract token name > contract tag > contract name>CNS/ENS\n const name = addressLabel || content || nametag || alias || ENSLabel;\n const isShowEns = !!ENSLabel && name === ENSLabel;\n\n const defaultStyle = {\n maxWidth: `${(name && isFullNameTag) || isFull ? 'auto' : (maxWidth || defaultPCMaxWidth) + 'px'}`,\n };\n\n const href = convertLink({ link, type, hrefAddress, cfxAddress });\n\n const Wrapper = href ? 'a' : 'div';\n\n const tooltipContent: TooltipContent = {\n ENSLabel: {\n label: (translations as any)?.ens?.tip,\n value: ENSLabel,\n },\n nametag: {\n label: translations?.nametag?.tip,\n value: nametag,\n },\n addressLabel: {\n label: translations?.profile.address.myNameTag,\n value: addressLabel,\n },\n alias: {\n label: translations?.profile.address.publicNameTag,\n value: alias,\n hideLabel: hideAliasPrefixInHover,\n },\n };\n\n const checksumAddress = convertCheckSum(cfxAddress);\n\n const cfxAddressLabel =\n typeof cfxAddress === 'string' && !isFull\n ? shortenAddress(checksumAddress!)\n : checksumAddress;\n\n return (\n <div className=\"inline-flex\">\n {prefix || (isShowEns ? ENSIcon : null)}\n <Text\n tag=\"span\"\n hoverValue={\n <>\n {renderTooltipContent(tooltipContent)}\n <div>{hoverValue || checksumAddress}</div>\n </>\n }\n >\n <Wrapper\n className=\"block relative align-bottom cursor-default truncate\"\n style={{ ...defaultStyle, ...style }}\n {...(href ? { href: String(href) } : {})}\n >\n {name || cfxAddressLabel}\n </Wrapper>\n </Text>\n {suffix}\n </div>\n );\n};\n"],"mappings":"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","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|