Commit f086f33c authored by tom goriunov's avatar tom goriunov Committed by GitHub

Merge pull request #2430 from blockscout/tom2drum/issue-2429

Bind to full prop namings in API v2 endpoints, pt. 2
parents d297f0f0 7a33de4d
import type { InternalTransaction, InternalTransactionsResponse } from 'types/api/internalTransaction'; import type { InternalTransaction, InternalTransactionsResponse } from 'types/api/internalTransaction';
export const base: InternalTransaction = { export const base: InternalTransaction = {
block: 29611822, block_number: 29611822,
created_contract: null, created_contract: null,
error: null, error: null,
from: { from: {
......
...@@ -8,7 +8,7 @@ import * as decodedInputDataMock from 'mocks/txs/decodedInputData'; ...@@ -8,7 +8,7 @@ import * as decodedInputDataMock from 'mocks/txs/decodedInputData';
export const base: Transaction = { export const base: Transaction = {
base_fee_per_gas: '10000000000', base_fee_per_gas: '10000000000',
block: 29611750, block_number: 29611750,
confirmation_duration: [ confirmation_duration: [
0, 0,
6364, 6364,
...@@ -61,14 +61,14 @@ export const base: Transaction = { ...@@ -61,14 +61,14 @@ export const base: Transaction = {
token_transfers: [], token_transfers: [],
token_transfers_overflow: false, token_transfers_overflow: false,
tx_burnt_fee: '461030000000000', tx_burnt_fee: '461030000000000',
tx_tag: null, transaction_tag: null,
tx_types: [ transaction_types: [
'contract_call', 'contract_call',
], ],
type: 2, type: 2,
value: '42000000000000000000', value: '42000000000000000000',
actions: [], actions: [],
has_error_in_internal_txs: false, has_error_in_internal_transactions: false,
}; };
export const withWatchListNames: Transaction = { export const withWatchListNames: Transaction = {
...@@ -102,7 +102,7 @@ export const withContractCreation: Transaction = { ...@@ -102,7 +102,7 @@ export const withContractCreation: Transaction = {
watchlist_names: [], watchlist_names: [],
ens_domain_name: null, ens_domain_name: null,
}, },
tx_types: [ transaction_types: [
'contract_creation', 'contract_creation',
], ],
}; };
...@@ -132,7 +132,7 @@ export const withTokenTransfer: Transaction = { ...@@ -132,7 +132,7 @@ export const withTokenTransfer: Transaction = {
tokenTransferMock.erc404B, tokenTransferMock.erc404B,
], ],
token_transfers_overflow: true, token_transfers_overflow: true,
tx_types: [ transaction_types: [
'token_transfer', 'token_transfer',
], ],
}; };
...@@ -182,7 +182,7 @@ export const withRawRevertReason: Transaction = { ...@@ -182,7 +182,7 @@ export const withRawRevertReason: Transaction = {
export const pending: Transaction = { export const pending: Transaction = {
...base, ...base,
base_fee_per_gas: null, base_fee_per_gas: null,
block: null, block_number: null,
confirmation_duration: [], confirmation_duration: [],
confirmations: 0, confirmations: 0,
decoded_input: null, decoded_input: null,
...@@ -197,7 +197,7 @@ export const pending: Transaction = { ...@@ -197,7 +197,7 @@ export const pending: Transaction = {
status: null, status: null,
timestamp: null, timestamp: null,
tx_burnt_fee: null, tx_burnt_fee: null,
tx_tag: null, transaction_tag: null,
type: null, type: null,
value: '0', value: '0',
}; };
...@@ -400,7 +400,7 @@ export const withBlob = { ...@@ -400,7 +400,7 @@ export const withBlob = {
], ],
burnt_blob_fee: '2820464441688064', burnt_blob_fee: '2820464441688064',
max_fee_per_blob_gas: '60000000000', max_fee_per_blob_gas: '60000000000',
tx_types: [ 'blob_transaction' as const ], transaction_types: [ 'blob_transaction' as const ],
type: 3, type: 3,
}; };
......
...@@ -4,7 +4,7 @@ import { ADDRESS_PARAMS } from './addressParams'; ...@@ -4,7 +4,7 @@ import { ADDRESS_PARAMS } from './addressParams';
import { TX_HASH } from './tx'; import { TX_HASH } from './tx';
export const INTERNAL_TX: InternalTransaction = { export const INTERNAL_TX: InternalTransaction = {
block: 9006105, block_number: 9006105,
created_contract: null, created_contract: null,
error: null, error: null,
from: ADDRESS_PARAMS, from: ADDRESS_PARAMS,
......
...@@ -12,7 +12,7 @@ export const TX: Transaction = { ...@@ -12,7 +12,7 @@ export const TX: Transaction = {
value: '2100000000000000', value: '2100000000000000',
}, },
gas_limit: '21000', gas_limit: '21000',
block: 9004925, block_number: 9004925,
status: 'ok', status: 'ok',
method: 'placeholder', method: 'placeholder',
confirmations: 71, confirmations: 71,
...@@ -28,14 +28,14 @@ export const TX: Transaction = { ...@@ -28,14 +28,14 @@ export const TX: Transaction = {
base_fee_per_gas: '24', base_fee_per_gas: '24',
from: ADDRESS_PARAMS, from: ADDRESS_PARAMS,
token_transfers: null, token_transfers: null,
tx_types: [ transaction_types: [
'coin_transfer', 'coin_transfer',
], ],
gas_used: '21000', gas_used: '21000',
created_contract: null, created_contract: null,
position: 0, position: 0,
nonce: 295929, nonce: 295929,
has_error_in_internal_txs: false, has_error_in_internal_transactions: false,
actions: [], actions: [],
decoded_input: null, decoded_input: null,
token_transfers_overflow: false, token_transfers_overflow: false,
...@@ -47,7 +47,7 @@ export const TX: Transaction = { ...@@ -47,7 +47,7 @@ export const TX: Transaction = {
0, 0,
14545, 14545,
], ],
tx_tag: null, transaction_tag: null,
}; };
export const TX_ZKEVM_L2: Transaction = { export const TX_ZKEVM_L2: Transaction = {
......
...@@ -19,7 +19,7 @@ export type InternalTransaction = ( ...@@ -19,7 +19,7 @@ export type InternalTransaction = (
from: AddressParam; from: AddressParam;
value: string; value: string;
index: number; index: number;
block: number; block_number: number;
timestamp: string; timestamp: string;
gas_limit: string; gas_limit: string;
}; };
......
...@@ -30,7 +30,7 @@ export type Transaction = { ...@@ -30,7 +30,7 @@ export type Transaction = {
result: string; result: string;
confirmations: number; confirmations: number;
status: 'ok' | 'error' | null | undefined; status: 'ok' | 'error' | null | undefined;
block: number | null; block_number: number | null;
timestamp: string | null; timestamp: string | null;
confirmation_duration: Array<number> | null; confirmation_duration: Array<number> | null;
from: AddressParam; from: AddressParam;
...@@ -54,14 +54,14 @@ export type Transaction = { ...@@ -54,14 +54,14 @@ export type Transaction = {
token_transfers_overflow: boolean; token_transfers_overflow: boolean;
exchange_rate: string | null; exchange_rate: string | null;
method: string | null; method: string | null;
tx_types: Array<TransactionType>; transaction_types: Array<TransactionType>;
tx_tag: string | null; transaction_tag: string | null;
actions: Array<TxAction>; actions: Array<TxAction>;
l1_fee?: string; l1_fee?: string;
l1_fee_scalar?: string; l1_fee_scalar?: string;
l1_gas_price?: string; l1_gas_price?: string;
l1_gas_used?: string; l1_gas_used?: string;
has_error_in_internal_txs: boolean | null; has_error_in_internal_transactions: boolean | null;
// optimism fields // optimism fields
op_withdrawals?: Array<OpWithdrawal>; op_withdrawals?: Array<OpWithdrawal>;
// SUAVE fields // SUAVE fields
......
...@@ -26,7 +26,7 @@ const TxInternalsListItem = ({ ...@@ -26,7 +26,7 @@ const TxInternalsListItem = ({
error, error,
created_contract: createdContract, created_contract: createdContract,
transaction_hash: txnHash, transaction_hash: txnHash,
block, block_number: blockNumber,
timestamp, timestamp,
currentAddress, currentAddress,
isLoading, isLoading,
...@@ -59,7 +59,7 @@ const TxInternalsListItem = ({ ...@@ -59,7 +59,7 @@ const TxInternalsListItem = ({
<Skeleton isLoaded={ !isLoading } fontSize="sm" fontWeight={ 500 }>Block</Skeleton> <Skeleton isLoaded={ !isLoading } fontSize="sm" fontWeight={ 500 }>Block</Skeleton>
<BlockEntity <BlockEntity
isLoading={ isLoading } isLoading={ isLoading }
number={ block } number={ blockNumber }
noIcon noIcon
fontSize="sm" fontSize="sm"
lineHeight={ 5 } lineHeight={ 5 }
......
...@@ -24,7 +24,7 @@ const AddressIntTxsTableItem = ({ ...@@ -24,7 +24,7 @@ const AddressIntTxsTableItem = ({
error, error,
created_contract: createdContract, created_contract: createdContract,
transaction_hash: txnHash, transaction_hash: txnHash,
block, block_number: blockNumber,
timestamp, timestamp,
currentAddress, currentAddress,
isLoading, isLoading,
...@@ -66,7 +66,7 @@ const AddressIntTxsTableItem = ({ ...@@ -66,7 +66,7 @@ const AddressIntTxsTableItem = ({
<Td verticalAlign="middle"> <Td verticalAlign="middle">
<BlockEntity <BlockEntity
isLoading={ isLoading } isLoading={ isLoading }
number={ block } number={ blockNumber }
noIcon noIcon
fontSize="sm" fontSize="sm"
lineHeight={ 5 } lineHeight={ 5 }
......
...@@ -91,7 +91,7 @@ export default function useBlockTxsQuery({ heightOrHash, blockQuery, tab }: Para ...@@ -91,7 +91,7 @@ export default function useBlockTxsQuery({ heightOrHash, blockQuery, tab }: Para
timestamp: block?.timestamp ? dayjs.unix(Number(block.timestamp)).format() : null, timestamp: block?.timestamp ? dayjs.unix(Number(block.timestamp)).format() : null,
confirmation_duration: null, confirmation_duration: null,
status: undefined, status: undefined,
block: Number(block.number), block_number: Number(block.number),
value: tx.value.toString(), value: tx.value.toString(),
gas_price: tx.gasPrice?.toString() ?? null, gas_price: tx.gasPrice?.toString() ?? null,
base_fee_per_gas: block?.baseFeePerGas?.toString() ?? null, base_fee_per_gas: block?.baseFeePerGas?.toString() ?? null,
...@@ -114,13 +114,13 @@ export default function useBlockTxsQuery({ heightOrHash, blockQuery, tab }: Para ...@@ -114,13 +114,13 @@ export default function useBlockTxsQuery({ heightOrHash, blockQuery, tab }: Para
tx_burnt_fee: null, tx_burnt_fee: null,
revert_reason: null, revert_reason: null,
decoded_input: null, decoded_input: null,
has_error_in_internal_txs: null, has_error_in_internal_transactions: null,
token_transfers: null, token_transfers: null,
token_transfers_overflow: false, token_transfers_overflow: false,
exchange_rate: null, exchange_rate: null,
method: null, method: null,
tx_types: [], transaction_types: [],
tx_tag: null, transaction_tag: null,
actions: [], actions: [],
}; };
}) })
......
...@@ -50,7 +50,7 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => { ...@@ -50,7 +50,7 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
<TxAdditionalInfo tx={ tx } isLoading={ isLoading } my="3px"/> <TxAdditionalInfo tx={ tx } isLoading={ isLoading } my="3px"/>
<Box ml={ 3 } w="calc(100% - 40px)"> <Box ml={ 3 } w="calc(100% - 40px)">
<HStack flexWrap="wrap" my="3px"> <HStack flexWrap="wrap" my="3px">
<TxType types={ tx.tx_types } isLoading={ isLoading }/> <TxType types={ tx.transaction_types } isLoading={ isLoading }/>
<TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/> <TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/>
<TxWatchListTags tx={ tx } isLoading={ isLoading }/> <TxWatchListTags tx={ tx } isLoading={ isLoading }/>
</HStack> </HStack>
......
...@@ -40,7 +40,7 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => { ...@@ -40,7 +40,7 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
> >
<Flex justifyContent="space-between"> <Flex justifyContent="space-between">
<HStack flexWrap="wrap"> <HStack flexWrap="wrap">
<TxType types={ tx.tx_types } isLoading={ isLoading }/> <TxType types={ tx.transaction_types } isLoading={ isLoading }/>
<TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/> <TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/>
<TxWatchListTags tx={ tx } isLoading={ isLoading }/> <TxWatchListTags tx={ tx } isLoading={ isLoading }/>
</HStack> </HStack>
......
...@@ -77,7 +77,7 @@ const TransactionPageContent = () => { ...@@ -77,7 +77,7 @@ const TransactionPageContent = () => {
const tags = ( const tags = (
<EntityTags <EntityTags
isLoading={ isPlaceholderData } isLoading={ isPlaceholderData }
tags={ data?.tx_tag ? [ { slug: data.tx_tag, name: data.tx_tag, tagType: 'private_tag' as const } ] : [] } tags={ data?.transaction_tag ? [ { slug: data.transaction_tag, name: data.transaction_tag, tagType: 'private_tag' as const } ] : [] }
/> />
); );
...@@ -94,7 +94,7 @@ const TransactionPageContent = () => { ...@@ -94,7 +94,7 @@ const TransactionPageContent = () => {
}; };
}, [ appProps.referrer ]); }, [ appProps.referrer ]);
const titleSecondRow = <TxSubHeading hash={ hash } hasTag={ Boolean(data?.tx_tag) } txQuery={ txQuery }/>; const titleSecondRow = <TxSubHeading hash={ hash } hasTag={ Boolean(data?.transaction_tag) } txQuery={ txQuery }/>;
const content = (() => { const content = (() => {
if (isPlaceholderData && !showDegradedView) { if (isPlaceholderData && !showDegradedView) {
......
...@@ -38,7 +38,7 @@ const PrivateTagMenuItem = ({ className, hash, entityType = 'address', type }: P ...@@ -38,7 +38,7 @@ const PrivateTagMenuItem = ({ className, hash, entityType = 'address', type }: P
queryData && queryData &&
( (
('private_tags' in queryData && queryData.private_tags?.length) || ('private_tags' in queryData && queryData.private_tags?.length) ||
('tx_tag' in queryData && queryData.tx_tag) ('transaction_tag' in queryData && queryData.transaction_tag)
) )
) { ) {
return null; return null;
......
...@@ -81,7 +81,7 @@ const TxDetailsDegraded = ({ hash, txQuery }: Props) => { ...@@ -81,7 +81,7 @@ const TxDetailsDegraded = ({ hash, txQuery }: Props) => {
timestamp: block?.timestamp ? dayjs.unix(Number(block.timestamp)).format() : null, timestamp: block?.timestamp ? dayjs.unix(Number(block.timestamp)).format() : null,
confirmation_duration: null, confirmation_duration: null,
status, status,
block: tx.blockNumber ? Number(tx.blockNumber) : null, block_number: tx.blockNumber ? Number(tx.blockNumber) : null,
value: tx.value.toString(), value: tx.value.toString(),
gas_price: gasPrice?.toString() ?? null, gas_price: gasPrice?.toString() ?? null,
base_fee_per_gas: block?.baseFeePerGas?.toString() ?? null, base_fee_per_gas: block?.baseFeePerGas?.toString() ?? null,
...@@ -106,13 +106,13 @@ const TxDetailsDegraded = ({ hash, txQuery }: Props) => { ...@@ -106,13 +106,13 @@ const TxDetailsDegraded = ({ hash, txQuery }: Props) => {
tx_burnt_fee: null, tx_burnt_fee: null,
revert_reason: null, revert_reason: null,
decoded_input: null, decoded_input: null,
has_error_in_internal_txs: null, has_error_in_internal_transactions: null,
token_transfers: null, token_transfers: null,
token_transfers_overflow: false, token_transfers_overflow: false,
exchange_rate: null, exchange_rate: null,
method: null, method: null,
tx_types: [], transaction_types: [],
tx_tag: null, transaction_tag: null,
actions: [], actions: [],
}; };
}, },
......
...@@ -281,11 +281,11 @@ const TxInfo = ({ data, isLoading, socketStatus }: Props) => { ...@@ -281,11 +281,11 @@ const TxInfo = ({ data, isLoading, socketStatus }: Props) => {
Block Block
</DetailsInfoItem.Label> </DetailsInfoItem.Label>
<DetailsInfoItem.Value> <DetailsInfoItem.Value>
{ data.block === null ? { data.block_number === null ?
<Text>Pending</Text> : ( <Text>Pending</Text> : (
<BlockEntity <BlockEntity
isLoading={ isLoading } isLoading={ isLoading }
number={ data.block } number={ data.block_number }
noIcon noIcon
/> />
) } ) }
......
...@@ -39,9 +39,14 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI ...@@ -39,9 +39,14 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI
<ListItemMobile display="block" width="100%" isAnimated key={ tx.hash }> <ListItemMobile display="block" width="100%" isAnimated key={ tx.hash }>
<Flex justifyContent="space-between" mt={ 4 }> <Flex justifyContent="space-between" mt={ 4 }>
<HStack flexWrap="wrap"> <HStack flexWrap="wrap">
{ tx.translation ? { tx.translation ? (
<TxTranslationType types={ tx.tx_types } isLoading={ isLoading || tx.translation.isLoading } translatationType={ tx.translation.data?.type }/> : <TxTranslationType
<TxType types={ tx.tx_types } isLoading={ isLoading }/> types={ tx.transaction_types }
isLoading={ isLoading || tx.translation.isLoading }
translatationType={ tx.translation.data?.type }
/>
) :
<TxType types={ tx.transaction_types } isLoading={ isLoading }/>
} }
<TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/> <TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/>
<TxWatchListTags tx={ tx } isLoading={ isLoading }/> <TxWatchListTags tx={ tx } isLoading={ isLoading }/>
...@@ -55,7 +60,7 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI ...@@ -55,7 +60,7 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI
truncation="constant_long" truncation="constant_long"
fontWeight="700" fontWeight="700"
icon={{ icon={{
name: tx.tx_types.includes('blob_transaction') ? 'blob' : undefined, name: tx.transaction_types.includes('blob_transaction') ? 'blob' : undefined,
}} }}
/> />
<TimeAgoWithTooltip <TimeAgoWithTooltip
...@@ -81,12 +86,12 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI ...@@ -81,12 +86,12 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI
</Skeleton> </Skeleton>
</Flex> </Flex>
) } ) }
{ showBlockInfo && tx.block !== null && ( { showBlockInfo && tx.block_number !== null && (
<Flex mt={ 2 }> <Flex mt={ 2 }>
<Skeleton isLoaded={ !isLoading } display="inline-block" whiteSpace="pre">Block </Skeleton> <Skeleton isLoaded={ !isLoading } display="inline-block" whiteSpace="pre">Block </Skeleton>
<BlockEntity <BlockEntity
isLoading={ isLoading } isLoading={ isLoading }
number={ tx.block } number={ tx.block_number }
noIcon noIcon
/> />
</Flex> </Flex>
......
...@@ -67,9 +67,14 @@ const TxsTableItem = ({ tx, showBlockInfo, currentAddress, enableTimeIncrement, ...@@ -67,9 +67,14 @@ const TxsTableItem = ({ tx, showBlockInfo, currentAddress, enableTimeIncrement,
</Td> </Td>
<Td> <Td>
<VStack alignItems="start"> <VStack alignItems="start">
{ tx.translation ? { tx.translation ? (
<TxTranslationType types={ tx.tx_types } isLoading={ isLoading || tx.translation.isLoading } translatationType={ tx.translation.data?.type }/> : <TxTranslationType
<TxType types={ tx.tx_types } isLoading={ isLoading }/> types={ tx.transaction_types }
isLoading={ isLoading || tx.translation.isLoading }
translatationType={ tx.translation.data?.type }
/>
) :
<TxType types={ tx.transaction_types } isLoading={ isLoading }/>
} }
<TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/> <TxStatus status={ tx.status } errorText={ tx.status === 'error' ? tx.result : undefined } isLoading={ isLoading }/>
<TxWatchListTags tx={ tx } isLoading={ isLoading }/> <TxWatchListTags tx={ tx } isLoading={ isLoading }/>
...@@ -84,10 +89,10 @@ const TxsTableItem = ({ tx, showBlockInfo, currentAddress, enableTimeIncrement, ...@@ -84,10 +89,10 @@ const TxsTableItem = ({ tx, showBlockInfo, currentAddress, enableTimeIncrement,
</Td> </Td>
{ showBlockInfo && ( { showBlockInfo && (
<Td> <Td>
{ tx.block && ( { tx.block_number && (
<BlockEntity <BlockEntity
isLoading={ isLoading } isLoading={ isLoading }
number={ tx.block } number={ tx.block_number }
noIcon noIcon
fontSize="sm" fontSize="sm"
lineHeight={ 6 } lineHeight={ 6 }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment