@cfxjs/sirius-next-common 0.1.38 → 0.1.39
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-3RVRAMNW.js +69 -0
- package/dist/chunk-3RVRAMNW.js.map +1 -0
- package/dist/chunk-4HTI24KG.js +3629 -0
- package/dist/chunk-4HTI24KG.js.map +1 -0
- package/dist/chunk-6AGMKWAW.js +286 -0
- package/dist/chunk-6AGMKWAW.js.map +1 -0
- package/dist/chunk-6GBDCZIP.js +414 -0
- package/dist/chunk-6GBDCZIP.js.map +1 -0
- package/dist/chunk-73IFRWHE.js +130 -0
- package/dist/chunk-73IFRWHE.js.map +1 -0
- package/dist/chunk-AAQD5VX5.js +212 -0
- package/dist/chunk-AAQD5VX5.js.map +1 -0
- package/dist/chunk-AD46ITJC.js +416 -0
- package/dist/chunk-AD46ITJC.js.map +1 -0
- package/dist/chunk-AV2OU3PU.js +108 -0
- package/dist/chunk-AV2OU3PU.js.map +1 -0
- package/dist/chunk-B5XWZ3ZE.js +150 -0
- package/dist/chunk-B5XWZ3ZE.js.map +1 -0
- package/dist/chunk-CDYRVFSO.js +150 -0
- package/dist/chunk-CDYRVFSO.js.map +1 -0
- package/dist/chunk-EP4RVV4C.js +3629 -0
- package/dist/chunk-EP4RVV4C.js.map +1 -0
- package/dist/chunk-EVMUOMAM.js +412 -0
- package/dist/chunk-EVMUOMAM.js.map +1 -0
- package/dist/chunk-EYT54RGS.js +63 -0
- package/dist/chunk-EYT54RGS.js.map +1 -0
- package/dist/chunk-FMHO65DC.js +105 -0
- package/dist/chunk-FMHO65DC.js.map +1 -0
- package/dist/chunk-H6W3LPDS.js +2324 -0
- package/dist/chunk-H6W3LPDS.js.map +1 -0
- package/dist/chunk-HC2D4STF.js +69 -0
- package/dist/chunk-HC2D4STF.js.map +1 -0
- package/dist/chunk-IV4QQOMI.js +416 -0
- package/dist/chunk-IV4QQOMI.js.map +1 -0
- package/dist/chunk-IWECTQOD.js +212 -0
- package/dist/chunk-IWECTQOD.js.map +1 -0
- package/dist/chunk-JQUV4NMR.js +416 -0
- package/dist/chunk-JQUV4NMR.js.map +1 -0
- package/dist/chunk-KAGEJPGK.js +416 -0
- package/dist/chunk-KAGEJPGK.js.map +1 -0
- package/dist/chunk-KCPSCEXG.js +69 -0
- package/dist/chunk-KCPSCEXG.js.map +1 -0
- package/dist/chunk-KKR2JERD.js +284 -0
- package/dist/chunk-KKR2JERD.js.map +1 -0
- package/dist/chunk-LQXAMTBE.js +69 -0
- package/dist/chunk-LQXAMTBE.js.map +1 -0
- package/dist/chunk-M43SICPO.js +63 -0
- package/dist/chunk-M43SICPO.js.map +1 -0
- package/dist/chunk-M6MXSMYM.js +284 -0
- package/dist/chunk-M6MXSMYM.js.map +1 -0
- package/dist/chunk-MIAX5LP5.js +141 -0
- package/dist/chunk-MIAX5LP5.js.map +1 -0
- package/dist/chunk-N5TMLKGL.js +141 -0
- package/dist/chunk-N5TMLKGL.js.map +1 -0
- package/dist/chunk-NIYCXPXR.js +108 -0
- package/dist/chunk-NIYCXPXR.js.map +1 -0
- package/dist/chunk-O474QMUU.js +105 -0
- package/dist/chunk-O474QMUU.js.map +1 -0
- package/dist/chunk-OF33MONA.js +69 -0
- package/dist/chunk-OF33MONA.js.map +1 -0
- package/dist/chunk-PLU4IMEZ.js +130 -0
- package/dist/chunk-PLU4IMEZ.js.map +1 -0
- package/dist/chunk-RB2U3Y7F.js +49 -0
- package/dist/chunk-RB2U3Y7F.js.map +1 -0
- package/dist/chunk-RVVVAX7C.js +796 -0
- package/dist/chunk-RVVVAX7C.js.map +1 -0
- package/dist/chunk-TAJNIINB.js +69 -0
- package/dist/chunk-TAJNIINB.js.map +1 -0
- package/dist/chunk-VLDX5EPR.js +69 -0
- package/dist/chunk-VLDX5EPR.js.map +1 -0
- package/dist/chunk-VUULJBTQ.js +796 -0
- package/dist/chunk-VUULJBTQ.js.map +1 -0
- package/dist/chunk-VY6BUAPS.js +49 -0
- package/dist/chunk-VY6BUAPS.js.map +1 -0
- package/dist/chunk-XGOIDR7R.js +416 -0
- package/dist/chunk-XGOIDR7R.js.map +1 -0
- package/dist/chunk-XMBEB34D.js +69 -0
- package/dist/chunk-XMBEB34D.js.map +1 -0
- package/dist/chunk-XMWQQ4A6.js +414 -0
- package/dist/chunk-XMWQQ4A6.js.map +1 -0
- package/dist/chunk-Z6EYKGBH.js +286 -0
- package/dist/chunk-Z6EYKGBH.js.map +1 -0
- package/dist/chunk-ZKNMJZ5R.js +2324 -0
- package/dist/chunk-ZKNMJZ5R.js.map +1 -0
- package/dist/components/AddressContainer/CoreAddressContainer.js +10 -10
- package/dist/components/AddressContainer/EVMAddressContainer.js +9 -9
- package/dist/components/AddressContainer/addressSwitcher.js +7 -7
- package/dist/components/AddressContainer/addressView.js +6 -6
- package/dist/components/AddressContainer/label.js +4 -4
- package/dist/components/Age/index.js +4 -4
- package/dist/components/Charts/ChartOptions.js +2 -2
- package/dist/components/Charts/PreviewChartTemplate.js +6 -4
- package/dist/components/Charts/PreviewChartTemplate.js.map +1 -1
- package/dist/components/Charts/StockChartTemplate.js +7 -5
- package/dist/components/Charts/StockChartTemplate.js.map +1 -1
- package/dist/components/Charts/config.d.ts +5 -4
- package/dist/components/Charts/config.js +3 -1
- package/dist/components/CopyButton/index.js +3 -3
- package/dist/components/DownloadCSV/index.js +4 -4
- 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/NetworkIcon/index.js +2 -2
- package/dist/components/PhishingAddressContainer/index.js +4 -4
- 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 +10 -10
- package/dist/components/TransactionAction/evmTransactionAction.js +9 -9
- package/dist/utils/address.d.ts +1 -1
- package/dist/utils/address.js +2 -2
- package/dist/utils/contractManagerTool.js +2 -2
- package/dist/utils/hooks/useChartQueryParams.d.ts +18 -0
- package/dist/utils/hooks/useChartQueryParams.js +31 -0
- package/dist/utils/hooks/useChartQueryParams.js.map +1 -0
- package/dist/utils/hooks/useENS.js +3 -3
- package/dist/utils/index.js +2 -2
- package/dist/utils/request.d.ts +1 -1
- package/dist/utils/request.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NETWORK_ID
|
|
3
|
+
} from "./chunk-7RH7LJYB.js";
|
|
4
|
+
import {
|
|
5
|
+
detectAccountType
|
|
6
|
+
} from "./chunk-6AGMKWAW.js";
|
|
7
|
+
|
|
8
|
+
// src/utils/address.ts
|
|
9
|
+
import SDK from "js-conflux-sdk";
|
|
10
|
+
import {
|
|
11
|
+
checksumHexAddress,
|
|
12
|
+
convertHexToBase32,
|
|
13
|
+
isBase32Address as _isBase32Address,
|
|
14
|
+
isSimplyBase32Address as _isSimplyBase32Address,
|
|
15
|
+
isHexAddress,
|
|
16
|
+
isCoreHexAddress,
|
|
17
|
+
decode,
|
|
18
|
+
convertBase32ToHex,
|
|
19
|
+
getCoreHexAddressType,
|
|
20
|
+
isAddressEqual as _isAddressEqual
|
|
21
|
+
} from "@cfx-kit/dapp-utils/dist/address";
|
|
22
|
+
var ADDRESS_FUNC_CACHE = {};
|
|
23
|
+
var addressHandlerWrapper = (handler, cacheKey) => {
|
|
24
|
+
return (address, ...args) => {
|
|
25
|
+
if (!address)
|
|
26
|
+
return handler(address, ...args);
|
|
27
|
+
const lowerAddress = address.toLowerCase();
|
|
28
|
+
let CACHE_KEY = "";
|
|
29
|
+
if (cacheKey) {
|
|
30
|
+
CACHE_KEY = `${cacheKey}(${lowerAddress},${args.join(",")})`;
|
|
31
|
+
if (ADDRESS_FUNC_CACHE[CACHE_KEY])
|
|
32
|
+
return ADDRESS_FUNC_CACHE[CACHE_KEY];
|
|
33
|
+
}
|
|
34
|
+
const result = handler(lowerAddress, ...args);
|
|
35
|
+
if (cacheKey) {
|
|
36
|
+
ADDRESS_FUNC_CACHE[CACHE_KEY] = result;
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
var convertCheckSum = (address) => {
|
|
42
|
+
if (address && isHexAddress(address)) {
|
|
43
|
+
return checksumHexAddress(address);
|
|
44
|
+
}
|
|
45
|
+
return address;
|
|
46
|
+
};
|
|
47
|
+
var isCoreMainOrTestAddress = addressHandlerWrapper(
|
|
48
|
+
(address) => {
|
|
49
|
+
return isCoreMainnetAddress(address) || isCoreTestnetAddress(address);
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
var isCoreMainnetAddress = addressHandlerWrapper(
|
|
53
|
+
(address) => {
|
|
54
|
+
return !!address && /^cfx:/i.test(address) && _isBase32Address(address);
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
var isCoreTestnetAddress = addressHandlerWrapper(
|
|
58
|
+
(address) => {
|
|
59
|
+
return !!address && /^cfxtest:/i.test(address) && _isBase32Address(address);
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
var isCoreOtherNetAddress = addressHandlerWrapper(
|
|
63
|
+
(address) => {
|
|
64
|
+
return !!address && /^net/i.test(address) && _isBase32Address(address);
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
var isEvmAddress = addressHandlerWrapper(
|
|
68
|
+
(address, includeBase32 = true) => {
|
|
69
|
+
if (!address)
|
|
70
|
+
return false;
|
|
71
|
+
return isHexAddress(address) || isSimplyZeroAddress(address) || includeBase32 && _isBase32Address(address);
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
var isCoreAddress = addressHandlerWrapper(
|
|
75
|
+
(address) => {
|
|
76
|
+
if (!address)
|
|
77
|
+
return false;
|
|
78
|
+
return isCoreHexAddress(address) || isSimplyZeroAddress(address) || _isBase32Address(address);
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
var isSimplyZeroAddress = addressHandlerWrapper(
|
|
82
|
+
(address) => {
|
|
83
|
+
return address === "0x0";
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
var isZeroAddress = addressHandlerWrapper(
|
|
87
|
+
(address) => {
|
|
88
|
+
if (!address)
|
|
89
|
+
return false;
|
|
90
|
+
try {
|
|
91
|
+
if (isHexAddress(address)) {
|
|
92
|
+
return address === SDK.CONST.ZERO_ADDRESS_HEX;
|
|
93
|
+
} else if (isSimplyZeroAddress(address)) {
|
|
94
|
+
return true;
|
|
95
|
+
} else if (_isBase32Address(address)) {
|
|
96
|
+
return formatAddress(address, "hex") === SDK.CONST.ZERO_ADDRESS_HEX;
|
|
97
|
+
}
|
|
98
|
+
} catch (e) {
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
var isCoreUserAddress = addressHandlerWrapper(
|
|
104
|
+
(address) => {
|
|
105
|
+
if (isZeroAddress(address))
|
|
106
|
+
return true;
|
|
107
|
+
return getCoreAddressInfo(address)?.type === "user";
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
var isEvmUserAddress = addressHandlerWrapper(
|
|
111
|
+
async (address, includeEOAWithCode = false) => {
|
|
112
|
+
try {
|
|
113
|
+
if (isZeroAddress(address))
|
|
114
|
+
return true;
|
|
115
|
+
const type = await getEvmAddressType(address);
|
|
116
|
+
return type === "user" || includeEOAWithCode && type === "eoaWithCode";
|
|
117
|
+
} catch (e) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
var isCoreContractAddress = addressHandlerWrapper(
|
|
123
|
+
(address, isIncludingInnerContract = true) => {
|
|
124
|
+
return getCoreAddressInfo(address)?.type === "contract" || isIncludingInnerContract && isInnerContractAddress(address);
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
var isEvmContractAddress = addressHandlerWrapper(
|
|
128
|
+
async (address, includeEOAWithCode = false) => {
|
|
129
|
+
try {
|
|
130
|
+
const type = await getEvmAddressType(address);
|
|
131
|
+
return type === "contract" || includeEOAWithCode && type === "eoaWithCode";
|
|
132
|
+
} catch (e) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
var isInnerContractAddress = addressHandlerWrapper(
|
|
138
|
+
(address) => {
|
|
139
|
+
if (!address)
|
|
140
|
+
return false;
|
|
141
|
+
try {
|
|
142
|
+
return SDK.address.isInternalContractAddress(
|
|
143
|
+
formatAddress(address, "hex")
|
|
144
|
+
);
|
|
145
|
+
} catch (e) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
var isSpecialAddress = addressHandlerWrapper(
|
|
151
|
+
(address) => {
|
|
152
|
+
return getCoreAddressInfo(address)?.type === "builtin" && !isInnerContractAddress(address);
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
var getEvmAddressType = addressHandlerWrapper(
|
|
156
|
+
async (address) => {
|
|
157
|
+
if (!address)
|
|
158
|
+
return null;
|
|
159
|
+
try {
|
|
160
|
+
const response = await detectAccountType(address);
|
|
161
|
+
const { isContract, delegatedTo } = response;
|
|
162
|
+
if (isContract) {
|
|
163
|
+
return "contract";
|
|
164
|
+
}
|
|
165
|
+
if (delegatedTo) {
|
|
166
|
+
return "eoaWithCode";
|
|
167
|
+
}
|
|
168
|
+
return "user";
|
|
169
|
+
} catch (e) {
|
|
170
|
+
console.log("getEvmAddressType error: ", e);
|
|
171
|
+
throw e;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
);
|
|
175
|
+
var getDelegatedAddress = addressHandlerWrapper(
|
|
176
|
+
async (address) => {
|
|
177
|
+
if (!address)
|
|
178
|
+
return null;
|
|
179
|
+
try {
|
|
180
|
+
const { delegatedTo } = await detectAccountType(address);
|
|
181
|
+
return delegatedTo || null;
|
|
182
|
+
} catch (e) {
|
|
183
|
+
console.log("getDelegatedAddress error: ", e);
|
|
184
|
+
throw e;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
);
|
|
188
|
+
var getCoreAddressInfo = addressHandlerWrapper(
|
|
189
|
+
(address) => {
|
|
190
|
+
if (!address)
|
|
191
|
+
return null;
|
|
192
|
+
try {
|
|
193
|
+
if (isCoreHexAddress(address)) {
|
|
194
|
+
return {
|
|
195
|
+
netId: NETWORK_ID,
|
|
196
|
+
type: getCoreHexAddressType(address)
|
|
197
|
+
};
|
|
198
|
+
} else if (_isBase32Address(address)) {
|
|
199
|
+
const { netId, type } = decode(address);
|
|
200
|
+
return { netId, type };
|
|
201
|
+
}
|
|
202
|
+
} catch (e) {
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
var formatAddress = (address, outputType) => {
|
|
208
|
+
if (!address)
|
|
209
|
+
return address;
|
|
210
|
+
let result = address;
|
|
211
|
+
try {
|
|
212
|
+
if (outputType === "base32") {
|
|
213
|
+
if (isCoreHexAddress(address)) {
|
|
214
|
+
result = convertHexToBase32(address, NETWORK_ID);
|
|
215
|
+
} else if (_isBase32Address(address)) {
|
|
216
|
+
const reg = /(.*):(.*):(.*)/;
|
|
217
|
+
if (reg.test(address)) {
|
|
218
|
+
result = address.replace(reg, "$1:$3").toLowerCase();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
} else if (outputType === "hex") {
|
|
222
|
+
if (_isBase32Address(address)) {
|
|
223
|
+
result = convertBase32ToHex(address);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
} catch (error) {
|
|
227
|
+
console.error("Failed to format address:", error);
|
|
228
|
+
}
|
|
229
|
+
return result;
|
|
230
|
+
};
|
|
231
|
+
var isBase32Address = (address) => {
|
|
232
|
+
if (!address)
|
|
233
|
+
return false;
|
|
234
|
+
return _isBase32Address(address);
|
|
235
|
+
};
|
|
236
|
+
var isSimplyBase32Address = (address) => {
|
|
237
|
+
if (!address)
|
|
238
|
+
return false;
|
|
239
|
+
return _isSimplyBase32Address(address);
|
|
240
|
+
};
|
|
241
|
+
var formatAddressHexToBase32 = (address) => {
|
|
242
|
+
if (typeof address === "string" && isHexAddress(address)) {
|
|
243
|
+
return convertHexToBase32(address, NETWORK_ID.toString());
|
|
244
|
+
}
|
|
245
|
+
return address;
|
|
246
|
+
};
|
|
247
|
+
var isAddressEqual = (a, b, options) => {
|
|
248
|
+
try {
|
|
249
|
+
if (!a || !b)
|
|
250
|
+
return false;
|
|
251
|
+
return _isAddressEqual(a, b, options);
|
|
252
|
+
} catch (error) {
|
|
253
|
+
console.error("Failed to check:", error);
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
export {
|
|
259
|
+
ADDRESS_FUNC_CACHE,
|
|
260
|
+
convertCheckSum,
|
|
261
|
+
isCoreMainOrTestAddress,
|
|
262
|
+
isCoreMainnetAddress,
|
|
263
|
+
isCoreTestnetAddress,
|
|
264
|
+
isCoreOtherNetAddress,
|
|
265
|
+
isEvmAddress,
|
|
266
|
+
isCoreAddress,
|
|
267
|
+
isSimplyZeroAddress,
|
|
268
|
+
isZeroAddress,
|
|
269
|
+
isCoreUserAddress,
|
|
270
|
+
isEvmUserAddress,
|
|
271
|
+
isCoreContractAddress,
|
|
272
|
+
isEvmContractAddress,
|
|
273
|
+
isInnerContractAddress,
|
|
274
|
+
isSpecialAddress,
|
|
275
|
+
getEvmAddressType,
|
|
276
|
+
getDelegatedAddress,
|
|
277
|
+
getCoreAddressInfo,
|
|
278
|
+
formatAddress,
|
|
279
|
+
isBase32Address,
|
|
280
|
+
isSimplyBase32Address,
|
|
281
|
+
formatAddressHexToBase32,
|
|
282
|
+
isAddressEqual
|
|
283
|
+
};
|
|
284
|
+
//# sourceMappingURL=chunk-M6MXSMYM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/address.ts"],"sourcesContent":["import SDK from 'js-conflux-sdk';\nimport { NETWORK_ID } from './constants';\nimport {\n checksumHexAddress,\n convertHexToBase32,\n isBase32Address as _isBase32Address,\n isSimplyBase32Address as _isSimplyBase32Address,\n isHexAddress,\n isCoreHexAddress,\n decode,\n convertBase32ToHex,\n getCoreHexAddressType,\n Base32Address,\n isAddressEqual as _isAddressEqual,\n} from '@cfx-kit/dapp-utils/dist/address';\nimport { detectAccountType } from './request';\n\ntype CoreAddressType = 'user' | 'contract' | 'builtin' | 'null' | 'unknown';\nexport type EvmAddressType = 'user' | 'contract' | 'eoaWithCode';\ntype LooseAddressType = string | undefined | null;\n\ninterface AddressCache {\n [key: string]: unknown;\n}\nexport const ADDRESS_FUNC_CACHE: AddressCache = {};\n\n// common\nconst addressHandlerWrapper = <T extends Function>(\n handler: T,\n cacheKey?: string,\n): T => {\n return ((address: LooseAddressType, ...args: unknown[]) => {\n if (!address) return handler(address, ...args);\n const lowerAddress = address.toLowerCase();\n let CACHE_KEY = '';\n if (cacheKey) {\n CACHE_KEY = `${cacheKey}(${lowerAddress},${args.join(',')})`;\n if (ADDRESS_FUNC_CACHE[CACHE_KEY]) return ADDRESS_FUNC_CACHE[CACHE_KEY];\n }\n const result = handler(lowerAddress, ...args);\n if (cacheKey) {\n ADDRESS_FUNC_CACHE[CACHE_KEY] = result;\n }\n return result;\n }) as unknown as T;\n};\n\n// evm\nexport const convertCheckSum = <T extends LooseAddressType>(address: T) => {\n if (address && isHexAddress(address)) {\n return checksumHexAddress(address);\n }\n return address;\n};\n\n// core mainnet or testnet\nexport const isCoreMainOrTestAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n return isCoreMainnetAddress(address) || isCoreTestnetAddress(address);\n },\n);\n\n// core mainnet\nexport const isCoreMainnetAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n return !!address && /^cfx:/i.test(address) && _isBase32Address(address);\n },\n);\n\n// core testnet\nexport const isCoreTestnetAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n return !!address && /^cfxtest:/i.test(address) && _isBase32Address(address);\n },\n);\n\n// core other chainId\nexport const isCoreOtherNetAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n return !!address && /^net/i.test(address) && _isBase32Address(address);\n },\n);\n\n// evm\nexport const isEvmAddress = addressHandlerWrapper(\n (address: LooseAddressType, includeBase32 = true): boolean => {\n if (!address) return false;\n return (\n isHexAddress(address) ||\n isSimplyZeroAddress(address) ||\n (includeBase32 && _isBase32Address(address))\n );\n },\n);\n\n// core\nexport const isCoreAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n if (!address) return false;\n return (\n isCoreHexAddress(address) ||\n isSimplyZeroAddress(address) ||\n _isBase32Address(address)\n );\n },\n);\n\n// common, only for 0x0\nexport const isSimplyZeroAddress = addressHandlerWrapper(\n (address: LooseAddressType) => {\n return address === '0x0';\n },\n);\n\n// common\nexport const isZeroAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n if (!address) return false;\n try {\n // hex\n if (isHexAddress(address)) {\n return address === SDK.CONST.ZERO_ADDRESS_HEX;\n } else if (isSimplyZeroAddress(address)) {\n return true;\n // base32\n } else if (_isBase32Address(address)) {\n return formatAddress(address, 'hex') === SDK.CONST.ZERO_ADDRESS_HEX;\n }\n } catch (e) {}\n return false;\n },\n);\n\n// core\nexport const isCoreUserAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n if (isZeroAddress(address)) return true;\n return getCoreAddressInfo(address)?.type === 'user';\n },\n);\n\n// evm\nexport const isEvmUserAddress = addressHandlerWrapper(\n async (\n address: LooseAddressType,\n includeEOAWithCode = false,\n ): Promise<boolean> => {\n try {\n if (isZeroAddress(address)) return true;\n const type = await getEvmAddressType(address);\n return type === 'user' || (includeEOAWithCode && type === 'eoaWithCode');\n } catch (e) {\n return false;\n }\n },\n);\n\n// core\nexport const isCoreContractAddress = addressHandlerWrapper(\n (address: LooseAddressType, isIncludingInnerContract = true): boolean => {\n return (\n getCoreAddressInfo(address)?.type === 'contract' ||\n (isIncludingInnerContract && isInnerContractAddress(address))\n );\n },\n);\n\n// evm\nexport const isEvmContractAddress = addressHandlerWrapper(\n async (\n address: LooseAddressType,\n includeEOAWithCode = false,\n ): Promise<boolean> => {\n try {\n const type = await getEvmAddressType(address);\n return (\n type === 'contract' || (includeEOAWithCode && type === 'eoaWithCode')\n );\n } catch (e) {\n return false;\n }\n },\n);\n\n//core\nexport const isInnerContractAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n if (!address) return false;\n try {\n return SDK.address.isInternalContractAddress(\n formatAddress(address, 'hex'),\n );\n } catch (e) {\n return false;\n }\n },\n);\n\n// core\n// address start with 0x0, not valid internal contract, but fullnode support\nexport const isSpecialAddress = addressHandlerWrapper(\n (address: LooseAddressType): boolean => {\n return (\n getCoreAddressInfo(address)?.type === 'builtin' &&\n !isInnerContractAddress(address)\n );\n },\n);\n\n// evm\n/**\n * Only evm address type\n */\nexport const getEvmAddressType = addressHandlerWrapper(\n async (address: LooseAddressType): Promise<EvmAddressType | null> => {\n if (!address) return null;\n try {\n const response = await detectAccountType(address);\n const { isContract, delegatedTo } = response;\n if (isContract) {\n return 'contract';\n }\n if (delegatedTo) {\n return 'eoaWithCode';\n }\n return 'user';\n } catch (e) {\n console.log('getEvmAddressType error: ', e);\n throw e;\n }\n },\n);\n\n// evm\nexport const getDelegatedAddress = addressHandlerWrapper(\n async (address: LooseAddressType): Promise<`0x${string}` | null> => {\n if (!address) return null;\n try {\n const { delegatedTo } = await detectAccountType(address);\n return delegatedTo || null;\n } catch (e) {\n console.log('getDelegatedAddress error: ', e);\n throw e;\n }\n },\n);\n\ninterface CoreAddressInfo {\n netId: number;\n type: CoreAddressType;\n}\n\n// core\n/**\n * Only core address type\n */\nexport const getCoreAddressInfo = addressHandlerWrapper(\n (address: LooseAddressType): CoreAddressInfo | null => {\n if (!address) return null;\n try {\n if (isCoreHexAddress(address)) {\n return {\n netId: NETWORK_ID,\n type: getCoreHexAddressType(address),\n };\n } else if (_isBase32Address(address)) {\n const { netId, type } = decode(address);\n return { netId, type } as CoreAddressInfo;\n }\n } catch (e) {}\n return null;\n },\n);\n\n// common\nexport const formatAddress = <T extends LooseAddressType>(\n address: T,\n outputType: 'hex' | 'base32',\n) => {\n if (!address) return address;\n let result = address as string;\n\n try {\n if (outputType === 'base32') {\n if (isCoreHexAddress(address)) {\n result = convertHexToBase32(address, NETWORK_ID);\n } else if (_isBase32Address(address)) {\n const reg = /(.*):(.*):(.*)/;\n if (reg.test(address)) {\n result = address.replace(reg, '$1:$3').toLowerCase();\n }\n }\n } else if (outputType === 'hex') {\n if (_isBase32Address(address)) {\n result = convertBase32ToHex(address);\n }\n }\n } catch (error) {\n console.error('Failed to format address:', error);\n }\n\n return result;\n};\n\n/* ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ temp make omnibus type loose ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ */\n\nexport const isBase32Address = (address: LooseAddressType) => {\n if (!address) return false;\n return _isBase32Address(address);\n};\n\nexport const isSimplyBase32Address = (address: LooseAddressType) => {\n if (!address) return false;\n return _isSimplyBase32Address(address as Base32Address);\n};\n\n/* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ temp make omnibus type loose ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ */\n\n// evm\n// Convert hex to base32 for the bridge interface.\nexport const formatAddressHexToBase32 = (address: LooseAddressType) => {\n if (typeof address === 'string' && isHexAddress(address)) {\n return convertHexToBase32(address, NETWORK_ID.toString());\n }\n return address;\n};\n\nexport const isAddressEqual = (\n a: Parameters<typeof _isAddressEqual>[0],\n b: Parameters<typeof _isAddressEqual>[1],\n options?: Parameters<typeof _isAddressEqual>[2],\n) => {\n try {\n if (!a || !b) return false;\n return _isAddressEqual(a, b, options);\n } catch (error) {\n console.error('Failed to check:', error);\n return false;\n }\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useENS
|
|
3
|
+
} from "./chunk-M43SICPO.js";
|
|
4
|
+
import {
|
|
5
|
+
ContractAddress,
|
|
6
|
+
ContractCreatedAddress,
|
|
7
|
+
CoreHexAddress,
|
|
8
|
+
InvalidAddress,
|
|
9
|
+
MyAddress,
|
|
10
|
+
PosAddress
|
|
11
|
+
} from "./chunk-IWECTQOD.js";
|
|
12
|
+
import {
|
|
13
|
+
RenderAddress
|
|
14
|
+
} from "./chunk-PLU4IMEZ.js";
|
|
15
|
+
import {
|
|
16
|
+
formatAddress,
|
|
17
|
+
isCoreAddress,
|
|
18
|
+
isCoreContractAddress,
|
|
19
|
+
isZeroAddress
|
|
20
|
+
} from "./chunk-M6MXSMYM.js";
|
|
21
|
+
import {
|
|
22
|
+
getLabelInfo
|
|
23
|
+
} from "./chunk-VY6BUAPS.js";
|
|
24
|
+
import {
|
|
25
|
+
getTranslations,
|
|
26
|
+
useGlobalData
|
|
27
|
+
} from "./chunk-DQGLZCIG.js";
|
|
28
|
+
|
|
29
|
+
// src/components/AddressContainer/CoreAddressContainer.tsx
|
|
30
|
+
import { memo } from "react";
|
|
31
|
+
import { withTranslation } from "react-i18next";
|
|
32
|
+
import _ from "lodash";
|
|
33
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
34
|
+
var parseProps = (props, globalData) => {
|
|
35
|
+
const {
|
|
36
|
+
alias,
|
|
37
|
+
ensInfo,
|
|
38
|
+
t,
|
|
39
|
+
showAddressLabel,
|
|
40
|
+
showNametag,
|
|
41
|
+
nametagInfo,
|
|
42
|
+
showENSLabel
|
|
43
|
+
} = props;
|
|
44
|
+
const value = props.value || "";
|
|
45
|
+
const cfxAddress = formatAddress(value, "base32");
|
|
46
|
+
let ENSMap = ensInfo || {};
|
|
47
|
+
const translations = getTranslations();
|
|
48
|
+
let aliasLabel = alias;
|
|
49
|
+
if (!alias && isZeroAddress(cfxAddress)) {
|
|
50
|
+
aliasLabel = t(translations.general.zeroAddress);
|
|
51
|
+
}
|
|
52
|
+
let prefixIcon = null;
|
|
53
|
+
let officalNametag = null;
|
|
54
|
+
let addressLabel = null;
|
|
55
|
+
let ENSLabel = null;
|
|
56
|
+
const gENSLabel = cfxAddress && ENSMap[cfxAddress]?.name;
|
|
57
|
+
if (cfxAddress && showAddressLabel) {
|
|
58
|
+
const addressLabels = globalData?.["CONFLUX_SCAN_ADDRESS_LABELS" /* addressLabel */];
|
|
59
|
+
const gAddressLabel = addressLabels?.[cfxAddress];
|
|
60
|
+
if (gAddressLabel) {
|
|
61
|
+
const { label } = getLabelInfo(gAddressLabel, "tag");
|
|
62
|
+
addressLabel = label;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (cfxAddress && showNametag) {
|
|
66
|
+
const nametags = nametagInfo?.[cfxAddress];
|
|
67
|
+
if (nametags) {
|
|
68
|
+
const nametag = nametags?.nametag ?? "";
|
|
69
|
+
const { label } = getLabelInfo(nametag, "nametag");
|
|
70
|
+
officalNametag = label;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (showENSLabel && gENSLabel) {
|
|
74
|
+
const { label, icon } = getLabelInfo(gENSLabel, "ens");
|
|
75
|
+
ENSLabel = label;
|
|
76
|
+
prefixIcon = icon;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
alias: aliasLabel,
|
|
80
|
+
prefix: prefixIcon,
|
|
81
|
+
nametag: officalNametag,
|
|
82
|
+
addressLabel,
|
|
83
|
+
ENSLabel,
|
|
84
|
+
cfxAddress
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
var CoreAddressContainer = withTranslation()(
|
|
88
|
+
memo((props) => {
|
|
89
|
+
const { globalData } = useGlobalData();
|
|
90
|
+
const unnecessaryEns = props.ensInfo || props.showENSLabel === false;
|
|
91
|
+
const { ens } = useENS(unnecessaryEns ? null : props.value);
|
|
92
|
+
if (!props.value && !props.contractCreated) {
|
|
93
|
+
return /* @__PURE__ */ jsx(Fragment, { children: "--" });
|
|
94
|
+
}
|
|
95
|
+
const defaultProps = {
|
|
96
|
+
isFull: false,
|
|
97
|
+
isFullNameTag: false,
|
|
98
|
+
link: true,
|
|
99
|
+
isMe: false,
|
|
100
|
+
showIcon: true,
|
|
101
|
+
verify: false,
|
|
102
|
+
showAddressLabel: true,
|
|
103
|
+
showENSLabel: true,
|
|
104
|
+
showNametag: true,
|
|
105
|
+
ensInfo: ens
|
|
106
|
+
};
|
|
107
|
+
const mergeDefaultProps = _.assign({}, defaultProps, props);
|
|
108
|
+
const mergeParseProps = _.merge(
|
|
109
|
+
{},
|
|
110
|
+
mergeDefaultProps,
|
|
111
|
+
parseProps(mergeDefaultProps, globalData)
|
|
112
|
+
);
|
|
113
|
+
if (mergeParseProps.isPosAddress) {
|
|
114
|
+
return PosAddress(mergeParseProps);
|
|
115
|
+
}
|
|
116
|
+
if (!mergeParseProps.value && mergeParseProps.contractCreated) {
|
|
117
|
+
return ContractCreatedAddress({
|
|
118
|
+
...mergeParseProps,
|
|
119
|
+
outputType: "base32"
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (mergeParseProps.isEspaceAddress) {
|
|
123
|
+
return CoreHexAddress(mergeParseProps);
|
|
124
|
+
}
|
|
125
|
+
if (!isCoreAddress(mergeParseProps.value)) {
|
|
126
|
+
return InvalidAddress(mergeParseProps);
|
|
127
|
+
}
|
|
128
|
+
if (isCoreContractAddress(mergeParseProps.cfxAddress)) {
|
|
129
|
+
return ContractAddress(mergeParseProps);
|
|
130
|
+
}
|
|
131
|
+
if (mergeParseProps.isMe) {
|
|
132
|
+
return MyAddress(mergeParseProps);
|
|
133
|
+
}
|
|
134
|
+
return RenderAddress(mergeParseProps);
|
|
135
|
+
})
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
export {
|
|
139
|
+
CoreAddressContainer
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=chunk-MIAX5LP5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AddressContainer/CoreAddressContainer.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport _ from 'lodash';\nimport {\n formatAddress,\n isCoreAddress,\n isCoreContractAddress,\n isZeroAddress,\n convertCheckSum,\n} from '../../utils/address';\nimport { useGlobalData, getTranslations } from '../../store';\nimport { LOCALSTORAGE_KEYS_MAP } from '../../utils/constants';\nimport { getLabelInfo } from './label';\nimport { useENS } from '../../utils/hooks/useENS';\n\nimport { RenderAddress } from './addressView';\nimport {\n ContractCreatedAddress,\n CoreHexAddress,\n InvalidAddress,\n ContractAddress,\n MyAddress,\n PosAddress,\n} from './addressSwitcher';\nimport { GlobalDataType } from 'src/store/types';\nimport { CoreAddressContainerProps } from './types';\n\nconst parseProps = (\n props: CoreAddressContainerProps & WithTranslation,\n globalData: GlobalDataType,\n) => {\n const {\n alias,\n ensInfo,\n t,\n showAddressLabel,\n showNametag,\n nametagInfo,\n showENSLabel,\n } = props;\n const value: string = props.value || '';\n const cfxAddress = formatAddress(value, 'base32');\n\n let ENSMap = ensInfo || {};\n\n const translations = getTranslations();\n\n let aliasLabel = alias;\n if (!alias && isZeroAddress(cfxAddress)) {\n aliasLabel = t(translations.general.zeroAddress);\n }\n\n let prefixIcon: React.ReactNode = null;\n // official name tag\n let officalNametag: React.ReactNode = null;\n // private name tag\n let addressLabel: React.ReactNode = null;\n // ens name tag\n let ENSLabel: React.ReactNode = null;\n // global ens name tag\n const gENSLabel = cfxAddress && ENSMap[cfxAddress]?.name;\n\n if (cfxAddress && showAddressLabel) {\n // global private name tag\n const addressLabels = globalData?.[LOCALSTORAGE_KEYS_MAP.addressLabel];\n const gAddressLabel = addressLabels?.[cfxAddress];\n\n if (gAddressLabel) {\n const { label } = getLabelInfo(gAddressLabel, 'tag');\n addressLabel = label;\n }\n }\n\n if (cfxAddress && showNametag) {\n const nametags = nametagInfo?.[cfxAddress];\n\n if (nametags) {\n const nametag = nametags?.nametag ?? '';\n const { label } = getLabelInfo(nametag, 'nametag');\n officalNametag = label;\n }\n }\n\n if (showENSLabel && gENSLabel) {\n const { label, icon } = getLabelInfo(gENSLabel, 'ens');\n ENSLabel = label;\n prefixIcon = icon;\n }\n\n return {\n alias: aliasLabel,\n prefix: prefixIcon,\n nametag: officalNametag,\n addressLabel,\n ENSLabel,\n cfxAddress,\n };\n};\n\nexport const CoreAddressContainer = withTranslation()(\n memo((props: CoreAddressContainerProps & WithTranslation) => {\n const { globalData } = useGlobalData();\n\n // If the interface returns Ens content, there is no need to obtain it separately, or disable the display of Ens content (in most cases on the list page).\n const unnecessaryEns = props.ensInfo || props.showENSLabel === false;\n const { ens } = useENS(unnecessaryEns ? null : props.value);\n\n // If a txn receipt has no 'to' address or 'contractCreated', show -- for temp\n if (!props.value && !props.contractCreated) {\n return <>--</>;\n }\n\n const defaultProps = {\n isFull: false,\n isFullNameTag: false,\n link: true,\n isMe: false,\n showIcon: true,\n verify: false,\n showAddressLabel: true,\n showENSLabel: true,\n showNametag: true,\n ensInfo: ens,\n };\n\n const mergeDefaultProps = _.assign({}, defaultProps, props);\n\n const mergeParseProps = _.merge(\n {},\n mergeDefaultProps,\n parseProps(mergeDefaultProps, globalData),\n );\n\n if (mergeParseProps.isPosAddress) {\n return PosAddress(mergeParseProps);\n }\n\n if (!mergeParseProps.value && mergeParseProps.contractCreated) {\n return ContractCreatedAddress({\n ...mergeParseProps,\n outputType: 'base32',\n });\n }\n\n if (mergeParseProps.isEspaceAddress) {\n return CoreHexAddress(mergeParseProps);\n }\n\n if (!isCoreAddress(mergeParseProps.value)) {\n return InvalidAddress(mergeParseProps);\n }\n\n if (isCoreContractAddress(mergeParseProps.cfxAddress)) {\n return ContractAddress(mergeParseProps);\n }\n\n if (mergeParseProps.isMe) {\n return MyAddress(mergeParseProps);\n }\n\n return RenderAddress(mergeParseProps);\n }),\n);\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useENS
|
|
3
|
+
} from "./chunk-EYT54RGS.js";
|
|
4
|
+
import {
|
|
5
|
+
ContractAddress,
|
|
6
|
+
ContractCreatedAddress,
|
|
7
|
+
CoreHexAddress,
|
|
8
|
+
InvalidAddress,
|
|
9
|
+
MyAddress,
|
|
10
|
+
PosAddress
|
|
11
|
+
} from "./chunk-AAQD5VX5.js";
|
|
12
|
+
import {
|
|
13
|
+
RenderAddress
|
|
14
|
+
} from "./chunk-73IFRWHE.js";
|
|
15
|
+
import {
|
|
16
|
+
formatAddress,
|
|
17
|
+
isCoreAddress,
|
|
18
|
+
isCoreContractAddress,
|
|
19
|
+
isZeroAddress
|
|
20
|
+
} from "./chunk-KKR2JERD.js";
|
|
21
|
+
import {
|
|
22
|
+
getLabelInfo
|
|
23
|
+
} from "./chunk-RB2U3Y7F.js";
|
|
24
|
+
import {
|
|
25
|
+
getTranslations,
|
|
26
|
+
useGlobalData
|
|
27
|
+
} from "./chunk-DQGLZCIG.js";
|
|
28
|
+
|
|
29
|
+
// src/components/AddressContainer/CoreAddressContainer.tsx
|
|
30
|
+
import { memo } from "react";
|
|
31
|
+
import { withTranslation } from "react-i18next";
|
|
32
|
+
import _ from "lodash";
|
|
33
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
34
|
+
var parseProps = (props, globalData) => {
|
|
35
|
+
const {
|
|
36
|
+
alias,
|
|
37
|
+
ensInfo,
|
|
38
|
+
t,
|
|
39
|
+
showAddressLabel,
|
|
40
|
+
showNametag,
|
|
41
|
+
nametagInfo,
|
|
42
|
+
showENSLabel
|
|
43
|
+
} = props;
|
|
44
|
+
const value = props.value || "";
|
|
45
|
+
const cfxAddress = formatAddress(value, "base32");
|
|
46
|
+
let ENSMap = ensInfo || {};
|
|
47
|
+
const translations = getTranslations();
|
|
48
|
+
let aliasLabel = alias;
|
|
49
|
+
if (!alias && isZeroAddress(cfxAddress)) {
|
|
50
|
+
aliasLabel = t(translations.general.zeroAddress);
|
|
51
|
+
}
|
|
52
|
+
let prefixIcon = null;
|
|
53
|
+
let officalNametag = null;
|
|
54
|
+
let addressLabel = null;
|
|
55
|
+
let ENSLabel = null;
|
|
56
|
+
const gENSLabel = cfxAddress && ENSMap[cfxAddress]?.name;
|
|
57
|
+
if (cfxAddress && showAddressLabel) {
|
|
58
|
+
const addressLabels = globalData?.["CONFLUX_SCAN_ADDRESS_LABELS" /* addressLabel */];
|
|
59
|
+
const gAddressLabel = addressLabels?.[cfxAddress];
|
|
60
|
+
if (gAddressLabel) {
|
|
61
|
+
const { label } = getLabelInfo(gAddressLabel, "tag");
|
|
62
|
+
addressLabel = label;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (cfxAddress && showNametag) {
|
|
66
|
+
const nametags = nametagInfo?.[cfxAddress];
|
|
67
|
+
if (nametags) {
|
|
68
|
+
const nametag = nametags?.nametag ?? "";
|
|
69
|
+
const { label } = getLabelInfo(nametag, "nametag");
|
|
70
|
+
officalNametag = label;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (showENSLabel && gENSLabel) {
|
|
74
|
+
const { label, icon } = getLabelInfo(gENSLabel, "ens");
|
|
75
|
+
ENSLabel = label;
|
|
76
|
+
prefixIcon = icon;
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
alias: aliasLabel,
|
|
80
|
+
prefix: prefixIcon,
|
|
81
|
+
nametag: officalNametag,
|
|
82
|
+
addressLabel,
|
|
83
|
+
ENSLabel,
|
|
84
|
+
cfxAddress
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
var CoreAddressContainer = withTranslation()(
|
|
88
|
+
memo((props) => {
|
|
89
|
+
const { globalData } = useGlobalData();
|
|
90
|
+
const unnecessaryEns = props.ensInfo || props.showENSLabel === false;
|
|
91
|
+
const { ens } = useENS(unnecessaryEns ? null : props.value);
|
|
92
|
+
if (!props.value && !props.contractCreated) {
|
|
93
|
+
return /* @__PURE__ */ jsx(Fragment, { children: "--" });
|
|
94
|
+
}
|
|
95
|
+
const defaultProps = {
|
|
96
|
+
isFull: false,
|
|
97
|
+
isFullNameTag: false,
|
|
98
|
+
link: true,
|
|
99
|
+
isMe: false,
|
|
100
|
+
showIcon: true,
|
|
101
|
+
verify: false,
|
|
102
|
+
showAddressLabel: true,
|
|
103
|
+
showENSLabel: true,
|
|
104
|
+
showNametag: true,
|
|
105
|
+
ensInfo: ens
|
|
106
|
+
};
|
|
107
|
+
const mergeDefaultProps = _.assign({}, defaultProps, props);
|
|
108
|
+
const mergeParseProps = _.merge(
|
|
109
|
+
{},
|
|
110
|
+
mergeDefaultProps,
|
|
111
|
+
parseProps(mergeDefaultProps, globalData)
|
|
112
|
+
);
|
|
113
|
+
if (mergeParseProps.isPosAddress) {
|
|
114
|
+
return PosAddress(mergeParseProps);
|
|
115
|
+
}
|
|
116
|
+
if (!mergeParseProps.value && mergeParseProps.contractCreated) {
|
|
117
|
+
return ContractCreatedAddress({
|
|
118
|
+
...mergeParseProps,
|
|
119
|
+
outputType: "base32"
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (mergeParseProps.isEspaceAddress) {
|
|
123
|
+
return CoreHexAddress(mergeParseProps);
|
|
124
|
+
}
|
|
125
|
+
if (!isCoreAddress(mergeParseProps.value)) {
|
|
126
|
+
return InvalidAddress(mergeParseProps);
|
|
127
|
+
}
|
|
128
|
+
if (isCoreContractAddress(mergeParseProps.cfxAddress)) {
|
|
129
|
+
return ContractAddress(mergeParseProps);
|
|
130
|
+
}
|
|
131
|
+
if (mergeParseProps.isMe) {
|
|
132
|
+
return MyAddress(mergeParseProps);
|
|
133
|
+
}
|
|
134
|
+
return RenderAddress(mergeParseProps);
|
|
135
|
+
})
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
export {
|
|
139
|
+
CoreAddressContainer
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=chunk-N5TMLKGL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AddressContainer/CoreAddressContainer.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { WithTranslation, withTranslation } from 'react-i18next';\nimport _ from 'lodash';\nimport {\n formatAddress,\n isCoreAddress,\n isCoreContractAddress,\n isZeroAddress,\n convertCheckSum,\n} from '../../utils/address';\nimport { useGlobalData, getTranslations } from '../../store';\nimport { LOCALSTORAGE_KEYS_MAP } from '../../utils/constants';\nimport { getLabelInfo } from './label';\nimport { useENS } from '../../utils/hooks/useENS';\n\nimport { RenderAddress } from './addressView';\nimport {\n ContractCreatedAddress,\n CoreHexAddress,\n InvalidAddress,\n ContractAddress,\n MyAddress,\n PosAddress,\n} from './addressSwitcher';\nimport { GlobalDataType } from 'src/store/types';\nimport { CoreAddressContainerProps } from './types';\n\nconst parseProps = (\n props: CoreAddressContainerProps & WithTranslation,\n globalData: GlobalDataType,\n) => {\n const {\n alias,\n ensInfo,\n t,\n showAddressLabel,\n showNametag,\n nametagInfo,\n showENSLabel,\n } = props;\n const value: string = props.value || '';\n const cfxAddress = formatAddress(value, 'base32');\n\n let ENSMap = ensInfo || {};\n\n const translations = getTranslations();\n\n let aliasLabel = alias;\n if (!alias && isZeroAddress(cfxAddress)) {\n aliasLabel = t(translations.general.zeroAddress);\n }\n\n let prefixIcon: React.ReactNode = null;\n // official name tag\n let officalNametag: React.ReactNode = null;\n // private name tag\n let addressLabel: React.ReactNode = null;\n // ens name tag\n let ENSLabel: React.ReactNode = null;\n // global ens name tag\n const gENSLabel = cfxAddress && ENSMap[cfxAddress]?.name;\n\n if (cfxAddress && showAddressLabel) {\n // global private name tag\n const addressLabels = globalData?.[LOCALSTORAGE_KEYS_MAP.addressLabel];\n const gAddressLabel = addressLabels?.[cfxAddress];\n\n if (gAddressLabel) {\n const { label } = getLabelInfo(gAddressLabel, 'tag');\n addressLabel = label;\n }\n }\n\n if (cfxAddress && showNametag) {\n const nametags = nametagInfo?.[cfxAddress];\n\n if (nametags) {\n const nametag = nametags?.nametag ?? '';\n const { label } = getLabelInfo(nametag, 'nametag');\n officalNametag = label;\n }\n }\n\n if (showENSLabel && gENSLabel) {\n const { label, icon } = getLabelInfo(gENSLabel, 'ens');\n ENSLabel = label;\n prefixIcon = icon;\n }\n\n return {\n alias: aliasLabel,\n prefix: prefixIcon,\n nametag: officalNametag,\n addressLabel,\n ENSLabel,\n cfxAddress,\n };\n};\n\nexport const CoreAddressContainer = withTranslation()(\n memo((props: CoreAddressContainerProps & WithTranslation) => {\n const { globalData } = useGlobalData();\n\n // If the interface returns Ens content, there is no need to obtain it separately, or disable the display of Ens content (in most cases on the list page).\n const unnecessaryEns = props.ensInfo || props.showENSLabel === false;\n const { ens } = useENS(unnecessaryEns ? null : props.value);\n\n // If a txn receipt has no 'to' address or 'contractCreated', show -- for temp\n if (!props.value && !props.contractCreated) {\n return <>--</>;\n }\n\n const defaultProps = {\n isFull: false,\n isFullNameTag: false,\n link: true,\n isMe: false,\n showIcon: true,\n verify: false,\n showAddressLabel: true,\n showENSLabel: true,\n showNametag: true,\n ensInfo: ens,\n };\n\n const mergeDefaultProps = _.assign({}, defaultProps, props);\n\n const mergeParseProps = _.merge(\n {},\n mergeDefaultProps,\n parseProps(mergeDefaultProps, globalData),\n );\n\n if (mergeParseProps.isPosAddress) {\n return PosAddress(mergeParseProps);\n }\n\n if (!mergeParseProps.value && mergeParseProps.contractCreated) {\n return ContractCreatedAddress({\n ...mergeParseProps,\n outputType: 'base32',\n });\n }\n\n if (mergeParseProps.isEspaceAddress) {\n return CoreHexAddress(mergeParseProps);\n }\n\n if (!isCoreAddress(mergeParseProps.value)) {\n return InvalidAddress(mergeParseProps);\n }\n\n if (isCoreContractAddress(mergeParseProps.cfxAddress)) {\n return ContractAddress(mergeParseProps);\n }\n\n if (mergeParseProps.isMe) {\n return MyAddress(mergeParseProps);\n }\n\n return RenderAddress(mergeParseProps);\n }),\n);\n"],"mappings":"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","names":[]}
|