Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
frontend
Commits
9e92c0da
Commit
9e92c0da
authored
Jan 03, 2024
by
tom
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
make use of new component
parent
a5fc1a11
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
151 additions
and
394 deletions
+151
-394
AddressIntTxsListItem.tsx
ui/address/internals/AddressIntTxsListItem.tsx
+9
-29
AddressIntTxsTable.tsx
ui/address/internals/AddressIntTxsTable.tsx
+2
-4
AddressIntTxsTableItem.tsx
ui/address/internals/AddressIntTxsTableItem.tsx
+5
-30
LatestTxsItem.tsx
ui/home/LatestTxsItem.tsx
+8
-33
LatestTxsItemMobile.tsx
ui/home/LatestTxsItemMobile.tsx
+9
-27
InOutTag.tsx
ui/shared/InOutTag.tsx
+0
-34
AddressFromTo.tsx
ui/shared/address/AddressFromTo.tsx
+54
-25
TokenTransferListItem.tsx
ui/token/TokenTransfer/TokenTransferListItem.tsx
+9
-19
TokenTransferTable.tsx
ui/token/TokenTransfer/TokenTransferTable.tsx
+5
-7
TokenTransferTableItem.tsx
ui/token/TokenTransfer/TokenTransferTableItem.tsx
+6
-20
TxDetailsTokenTransfer.tsx
ui/tx/details/TxDetailsTokenTransfer.tsx
+8
-7
TxInternalsListItem.tsx
ui/tx/internals/TxInternalsListItem.tsx
+9
-18
TxInternalsTable.tsx
ui/tx/internals/TxInternalsTable.tsx
+1
-3
TxInternalsTableItem.tsx
ui/tx/internals/TxInternalsTableItem.tsx
+4
-15
TxsListItem.tsx
ui/txs/TxsListItem.tsx
+9
-40
TxsTable.tsx
ui/txs/TxsTable.tsx
+2
-9
TxsTableItem.tsx
ui/txs/TxsTableItem.tsx
+11
-74
No files found.
ui/address/internals/AddressIntTxsListItem.tsx
View file @
9e92c0da
import
{
Flex
,
Box
,
HStack
,
Skeleton
}
from
'
@chakra-ui/react
'
;
import
{
Flex
,
HStack
,
Skeleton
}
from
'
@chakra-ui/react
'
;
import
BigNumber
from
'
bignumber.js
'
;
import
BigNumber
from
'
bignumber.js
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
...
@@ -6,12 +6,10 @@ import type { InternalTransaction } from 'types/api/internalTransaction';
...
@@ -6,12 +6,10 @@ import type { InternalTransaction } from 'types/api/internalTransaction';
import
config
from
'
configs/app
'
;
import
config
from
'
configs/app
'
;
import
dayjs
from
'
lib/date/dayjs
'
;
import
dayjs
from
'
lib/date/dayjs
'
;
import
AddressFromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
AddressEntity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
InOutTag
from
'
ui/shared/InOutTag
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
...
@@ -35,9 +33,6 @@ const TxInternalsListItem = ({
...
@@ -35,9 +33,6 @@ const TxInternalsListItem = ({
const
typeTitle
=
TX_INTERNALS_ITEMS
.
find
(({
id
})
=>
id
===
type
)?.
title
;
const
typeTitle
=
TX_INTERNALS_ITEMS
.
find
(({
id
})
=>
id
===
type
)?.
title
;
const
toData
=
to
?
to
:
createdContract
;
const
toData
=
to
?
to
:
createdContract
;
const
isOut
=
Boolean
(
currentAddress
&&
currentAddress
===
from
.
hash
);
const
isIn
=
Boolean
(
currentAddress
&&
currentAddress
===
toData
?.
hash
);
return
(
return
(
<
ListItemMobile
rowGap=
{
3
}
>
<
ListItemMobile
rowGap=
{
3
}
>
<
Flex
columnGap=
{
2
}
>
<
Flex
columnGap=
{
2
}
>
...
@@ -65,28 +60,13 @@ const TxInternalsListItem = ({
...
@@ -65,28 +60,13 @@ const TxInternalsListItem = ({
lineHeight=
{
5
}
lineHeight=
{
5
}
/>
/>
</
HStack
>
</
HStack
>
<
Box
w=
"100%"
display=
"flex"
columnGap=
{
3
}
>
<
AddressFromTo
<
AddressEntity
from=
{
from
}
address=
{
from
}
to=
{
toData
}
isLoading=
{
isLoading
}
current=
{
currentAddress
}
noLink=
{
isOut
}
isLoading=
{
isLoading
}
noCopy=
{
isOut
}
w=
"100%"
width=
"calc((100% - 48px) / 2)"
/>
/>
{
(
isIn
||
isOut
)
?
<
InOutTag
isIn=
{
isIn
}
isOut=
{
isOut
}
isLoading=
{
isLoading
}
/>
:
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
isLoading=
{
isLoading
}
/>
}
{
toData
&&
(
<
AddressEntity
address=
{
toData
}
isLoading=
{
isLoading
}
noLink=
{
isIn
}
noCopy=
{
isIn
}
width=
"calc((100% - 48px) / 2)"
/>
)
}
</
Box
>
<
HStack
spacing=
{
3
}
>
<
HStack
spacing=
{
3
}
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
fontWeight=
{
500
}
>
Value
{
config
.
chain
.
currency
.
symbol
}
</
Skeleton
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
fontWeight=
{
500
}
>
Value
{
config
.
chain
.
currency
.
symbol
}
</
Skeleton
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
color=
"text_secondary"
minW=
{
6
}
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
color=
"text_secondary"
minW=
{
6
}
>
...
...
ui/address/internals/AddressIntTxsTable.tsx
View file @
9e92c0da
...
@@ -24,11 +24,9 @@ const AddressIntTxsTable = ({ data, currentAddress, isLoading }: Props) => {
...
@@ -24,11 +24,9 @@ const AddressIntTxsTable = ({ data, currentAddress, isLoading }: Props) => {
<
Th
width=
"15%"
>
Parent txn hash
</
Th
>
<
Th
width=
"15%"
>
Parent txn hash
</
Th
>
<
Th
width=
"15%"
>
Type
</
Th
>
<
Th
width=
"15%"
>
Type
</
Th
>
<
Th
width=
"10%"
>
Block
</
Th
>
<
Th
width=
"10%"
>
Block
</
Th
>
<
Th
width=
"20%"
>
From
</
Th
>
<
Th
width=
"40%"
>
From/To
</
Th
>
<
Th
width=
"48px"
px=
{
0
}
/>
<
Th
width=
"20%"
>
To
</
Th
>
<
Th
width=
"20%"
isNumeric
>
<
Th
width=
"20%"
isNumeric
>
Value
{
config
.
chain
.
currency
.
symbol
}
Value
{
config
.
chain
.
currency
.
symbol
}
</
Th
>
</
Th
>
</
Tr
>
</
Tr
>
</
Thead
>
</
Thead
>
...
...
ui/address/internals/AddressIntTxsTableItem.tsx
View file @
9e92c0da
...
@@ -6,12 +6,10 @@ import type { InternalTransaction } from 'types/api/internalTransaction';
...
@@ -6,12 +6,10 @@ import type { InternalTransaction } from 'types/api/internalTransaction';
import
config
from
'
configs/app
'
;
import
config
from
'
configs/app
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
AddressFromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
AddressEntity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
InOutTag
from
'
ui/shared/InOutTag
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
...
@@ -34,9 +32,6 @@ const AddressIntTxsTableItem = ({
...
@@ -34,9 +32,6 @@ const AddressIntTxsTableItem = ({
const
typeTitle
=
TX_INTERNALS_ITEMS
.
find
(({
id
})
=>
id
===
type
)?.
title
;
const
typeTitle
=
TX_INTERNALS_ITEMS
.
find
(({
id
})
=>
id
===
type
)?.
title
;
const
toData
=
to
?
to
:
createdContract
;
const
toData
=
to
?
to
:
createdContract
;
const
isOut
=
Boolean
(
currentAddress
&&
currentAddress
===
from
.
hash
);
const
isIn
=
Boolean
(
currentAddress
&&
currentAddress
===
toData
?.
hash
);
const
timeAgo
=
useTimeAgoIncrement
(
timestamp
,
true
);
const
timeAgo
=
useTimeAgoIncrement
(
timestamp
,
true
);
return
(
return
(
...
@@ -77,33 +72,13 @@ const AddressIntTxsTableItem = ({
...
@@ -77,33 +72,13 @@ const AddressIntTxsTableItem = ({
/>
/>
</
Td
>
</
Td
>
<
Td
verticalAlign=
"middle"
>
<
Td
verticalAlign=
"middle"
>
<
AddressEntity
<
AddressFromTo
address=
{
from
}
from=
{
from
}
to=
{
toData
}
current=
{
currentAddress
}
isLoading=
{
isLoading
}
isLoading=
{
isLoading
}
noLink=
{
isOut
}
noCopy=
{
isOut
}
w=
"min-content"
maxW=
"100%"
/>
/>
</
Td
>
</
Td
>
<
Td
px=
{
0
}
verticalAlign=
"middle"
>
{
(
isIn
||
isOut
)
?
<
InOutTag
isIn=
{
isIn
}
isOut=
{
isOut
}
isLoading=
{
isLoading
}
w=
"100%"
/>
:
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
isLoading=
{
isLoading
}
/>
}
</
Td
>
<
Td
verticalAlign=
"middle"
>
{
toData
&&
(
<
AddressEntity
address=
{
toData
}
isLoading=
{
isLoading
}
noLink=
{
isIn
}
noCopy=
{
isIn
}
w=
"min-content"
maxW=
"100%"
/>
)
}
</
Td
>
<
Td
isNumeric
verticalAlign=
"middle"
>
<
Td
isNumeric
verticalAlign=
"middle"
>
<
Skeleton
isLoaded=
{
!
isLoading
}
display=
"inline-block"
minW=
{
6
}
>
<
Skeleton
isLoaded=
{
!
isLoading
}
display=
"inline-block"
minW=
{
6
}
>
{
BigNumber
(
value
).
div
(
BigNumber
(
10
**
config
.
chain
.
currency
.
decimals
)).
toFormat
()
}
{
BigNumber
(
value
).
div
(
BigNumber
(
10
**
config
.
chain
.
currency
.
decimals
)).
toFormat
()
}
...
...
ui/home/LatestTxsItem.tsx
View file @
9e92c0da
...
@@ -13,9 +13,8 @@ import type { Transaction } from 'types/api/transaction';
...
@@ -13,9 +13,8 @@ import type { Transaction } from 'types/api/transaction';
import
config
from
'
configs/app
'
;
import
config
from
'
configs/app
'
;
import
getValueWithUnit
from
'
lib/getValueWithUnit
'
;
import
getValueWithUnit
from
'
lib/getValueWithUnit
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
Address
Entity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
Address
FromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
import
TxWatchListTags
from
'
ui/shared/tx/TxWatchListTags
'
;
import
TxWatchListTags
from
'
ui/shared/tx/TxWatchListTags
'
;
...
@@ -35,7 +34,7 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
...
@@ -35,7 +34,7 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
return
(
return
(
<
Grid
<
Grid
gridTemplateColumns=
{
{
gridTemplateColumns=
{
{
lg
:
columnNum
===
2
?
'
3fr minmax(auto, 1
60px)
'
:
'
3fr minmax(auto, 16
0px) 150px
'
,
lg
:
columnNum
===
2
?
'
3fr minmax(auto, 1
80px)
'
:
'
3fr minmax(auto, 18
0px) 150px
'
,
xl
:
columnNum
===
2
?
'
3fr minmax(auto, 250px)
'
:
'
3fr minmax(auto, 275px) 150px
'
,
xl
:
columnNum
===
2
?
'
3fr minmax(auto, 250px)
'
:
'
3fr minmax(auto, 275px) 150px
'
,
}
}
}
}
gridGap=
{
8
}
gridGap=
{
8
}
...
@@ -80,36 +79,12 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
...
@@ -80,36 +79,12 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
</
Flex
>
</
Flex
>
</
Box
>
</
Box
>
</
Flex
>
</
Flex
>
<
Flex
alignItems=
"center"
alignSelf=
"flex-start"
>
<
AddressFromTo
<
IconSvg
from=
{
tx
.
from
}
name=
"arrows/east"
to=
{
dataTo
}
boxSize=
{
6
}
isLoading=
{
isLoading
}
color=
"gray.500"
mode=
"compact"
transform=
"rotate(90deg)"
/>
isLoading=
{
isLoading
}
flexShrink=
{
0
}
/>
<
Flex
ml=
{
1
}
maxW=
"calc(100% - 24px)"
flexDir=
"column"
rowGap=
"1px"
>
<
AddressEntity
isLoading=
{
isLoading
}
address=
{
tx
.
from
}
fontSize=
"sm"
lineHeight=
{
5
}
my=
"5px"
fontWeight=
"500"
/>
{
dataTo
&&
(
<
AddressEntity
isLoading=
{
isLoading
}
address=
{
dataTo
}
fontSize=
"sm"
lineHeight=
{
5
}
my=
"5px"
fontWeight=
"500"
/>
)
}
</
Flex
>
</
Flex
>
<
Flex
flexDir=
"column"
>
<
Flex
flexDir=
"column"
>
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
<
Skeleton
isLoaded=
{
!
isLoading
}
my=
"3px"
>
<
Skeleton
isLoaded=
{
!
isLoading
}
my=
"3px"
>
...
...
ui/home/LatestTxsItemMobile.tsx
View file @
9e92c0da
...
@@ -12,9 +12,8 @@ import type { Transaction } from 'types/api/transaction';
...
@@ -12,9 +12,8 @@ import type { Transaction } from 'types/api/transaction';
import
config
from
'
configs/app
'
;
import
config
from
'
configs/app
'
;
import
getValueWithUnit
from
'
lib/getValueWithUnit
'
;
import
getValueWithUnit
from
'
lib/getValueWithUnit
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
Address
Entity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
Address
FromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
import
TxWatchListTags
from
'
ui/shared/tx/TxWatchListTags
'
;
import
TxWatchListTags
from
'
ui/shared/tx/TxWatchListTags
'
;
...
@@ -66,31 +65,14 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
...
@@ -66,31 +65,14 @@ const LatestTxsItem = ({ tx, isLoading }: Props) => {
</
Skeleton
>
</
Skeleton
>
)
}
)
}
</
Flex
>
</
Flex
>
<
Flex
alignItems=
"center"
mb=
{
3
}
>
<
AddressFromTo
<
AddressEntity
from=
{
tx
.
from
}
isLoading=
{
isLoading
}
to=
{
dataTo
}
address=
{
tx
.
from
}
isLoading=
{
isLoading
}
truncation=
"constant"
fontSize=
"sm"
fontSize=
"sm"
fontWeight=
"500"
fontWeight=
"500"
mb=
{
3
}
mr=
{
2
}
/>
/>
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
isLoading=
{
isLoading
}
/>
{
dataTo
&&
(
<
AddressEntity
isLoading=
{
isLoading
}
address=
{
dataTo
}
truncation=
"constant"
fontSize=
"sm"
fontWeight=
"500"
/>
)
}
</
Flex
>
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
<
Skeleton
isLoaded=
{
!
isLoading
}
mb=
{
2
}
fontSize=
"sm"
w=
"fit-content"
>
<
Skeleton
isLoaded=
{
!
isLoading
}
mb=
{
2
}
fontSize=
"sm"
w=
"fit-content"
>
<
Text
as=
"span"
>
Value
{
config
.
chain
.
currency
.
symbol
}
</
Text
>
<
Text
as=
"span"
>
Value
{
config
.
chain
.
currency
.
symbol
}
</
Text
>
...
...
ui/shared/InOutTag.tsx
deleted
100644 → 0
View file @
a5fc1a11
import
{
chakra
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
interface
Props
{
isIn
:
boolean
;
isOut
:
boolean
;
className
?:
string
;
isLoading
?:
boolean
;
}
// TODO @tom2drum remove this component
const
InOutTag
=
({
isIn
,
isOut
,
className
,
isLoading
}:
Props
)
=>
{
if
(
!
isIn
&&
!
isOut
)
{
return
null
;
}
const
colorScheme
=
isOut
?
'
orange
'
:
'
green
'
;
return
(
<
Tag
className=
{
className
}
colorScheme=
{
colorScheme
}
display=
"flex"
justifyContent=
"center"
isLoading=
{
isLoading
}
>
{
isOut
?
'
OUT
'
:
'
IN
'
}
</
Tag
>
);
};
export
default
React
.
memo
(
chakra
(
InOutTag
));
ui/shared/address/AddressFromTo.tsx
View file @
9e92c0da
...
@@ -4,27 +4,37 @@ import React from 'react';
...
@@ -4,27 +4,37 @@ import React from 'react';
import
type
{
AddressParam
}
from
'
types/api/addressParams
'
;
import
type
{
AddressParam
}
from
'
types/api/addressParams
'
;
import
type
{
EntityProps
}
from
'
ui/shared/entities/address/AddressEntity
'
;
import
AddressEntity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
AddressEntity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
AddressEntityWithTokenFilter
from
'
ui/shared/entities/address/AddressEntityWithTokenFilter
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
type
Mode
=
'
compact
'
|
'
long
'
;
type
Mode
=
'
compact
'
|
'
long
'
;
interface
Props
{
interface
Props
{
from
:
AddressParam
;
from
:
AddressParam
;
to
:
AddressParam
;
to
:
AddressParam
|
null
;
current
?:
string
;
current
?:
string
;
mode
?:
Mode
|
Partial
<
Record
<
ThemeTypings
[
'
breakpoints
'
],
Mode
>>
;
mode
?:
Mode
|
Partial
<
Record
<
ThemeTypings
[
'
breakpoints
'
],
Mode
>>
;
className
?:
string
;
className
?:
string
;
isLoading
?:
boolean
;
isLoading
?:
boolean
;
tokenHash
?:
string
;
truncation
?:
EntityProps
[
'
truncation
'
];
noIcon
?:
boolean
;
}
}
const
AddressFromTo
=
({
from
,
to
,
current
,
mode
:
modeProp
,
className
,
isLoading
}:
Props
)
=>
{
const
AddressFromTo
=
({
from
,
to
,
current
,
mode
:
modeProp
,
className
,
isLoading
,
tokenHash
=
''
,
truncation
,
noIcon
}:
Props
)
=>
{
const
iconColor
=
useColorModeValue
(
'
gray.500
'
,
'
gray.300
'
);
const
iconColor
=
useColorModeValue
(
'
gray.500
'
,
'
gray.300
'
);
const
mode
=
useBreakpointValue
({
const
mode
=
useBreakpointValue
(
base
:
(
typeof
modeProp
===
'
object
'
?
modeProp
.
base
:
modeProp
),
{
lg
:
(
typeof
modeProp
===
'
object
'
?
modeProp
.
lg
:
modeProp
),
base
:
(
typeof
modeProp
===
'
object
'
?
modeProp
.
base
:
modeProp
),
xl
:
(
typeof
modeProp
===
'
object
'
?
modeProp
.
xl
:
modeProp
),
lg
:
(
typeof
modeProp
===
'
object
'
?
modeProp
.
lg
:
modeProp
),
})
??
'
long
'
;
xl
:
(
typeof
modeProp
===
'
object
'
?
modeProp
.
xl
:
modeProp
),
},
{
ssr
:
false
},
)
??
'
long
'
;
const
Entity
=
tokenHash
?
AddressEntityWithTokenFilter
:
AddressEntity
;
if
(
mode
===
'
compact
'
)
{
if
(
mode
===
'
compact
'
)
{
return
(
return
(
...
@@ -32,48 +42,67 @@ const AddressFromTo = ({ from, to, current, mode: modeProp, className, isLoading
...
@@ -32,48 +42,67 @@ const AddressFromTo = ({ from, to, current, mode: modeProp, className, isLoading
<
Flex
alignItems=
"center"
columnGap=
{
2
}
>
<
Flex
alignItems=
"center"
columnGap=
{
2
}
>
<
IconSvg
<
IconSvg
name=
"arrows/east"
name=
"arrows/east"
isLoading=
{
isLoading
}
color=
{
iconColor
}
color=
{
iconColor
}
boxSize=
{
5
}
boxSize=
{
5
}
flexShrink=
{
0
}
flexShrink=
{
0
}
transform=
"rotate(90deg)"
transform=
"rotate(90deg)"
/>
/>
<
Address
Entity
<
Entity
address=
{
from
}
address=
{
from
}
isLoading=
{
isLoading
}
isLoading=
{
isLoading
}
noLink=
{
current
===
from
.
hash
}
noLink=
{
current
===
from
.
hash
}
noCopy=
{
current
===
from
.
hash
}
noCopy=
{
current
===
from
.
hash
}
noIcon=
{
noIcon
}
tokenHash=
{
tokenHash
}
truncation=
{
truncation
}
maxW=
"calc(100% - 28px)"
maxW=
"calc(100% - 28px)"
w=
"min-content"
/>
/>
</
Flex
>
</
Flex
>
<
AddressEntity
{
to
?
(
address=
{
to
}
<
Entity
isLoading=
{
isLoading
}
address=
{
to
}
noLink=
{
current
===
to
.
hash
}
isLoading=
{
isLoading
}
noCopy=
{
current
===
to
.
hash
}
noLink=
{
current
===
to
.
hash
}
maxW=
"calc(100% - 28px)"
noCopy=
{
current
===
to
.
hash
}
ml=
"28px"
noIcon=
{
noIcon
}
/>
tokenHash=
{
tokenHash
}
truncation=
{
truncation
}
maxW=
"calc(100% - 28px)"
w=
"min-content"
ml=
"28px"
/>
)
:
<
span
>
-
</
span
>
}
</
Flex
>
</
Flex
>
);
);
}
}
return
(
return
(
<
Flex
className=
{
className
}
alignItems=
"center"
columnGap=
{
2
}
>
<
Flex
className=
{
className
}
alignItems=
"center"
columnGap=
{
2
}
>
<
Address
Entity
<
Entity
address=
{
from
}
address=
{
from
}
isLoading=
{
isLoading
}
isLoading=
{
isLoading
}
noLink=
{
current
===
from
.
hash
}
noLink=
{
current
===
from
.
hash
}
noCopy=
{
current
===
from
.
hash
}
noCopy=
{
current
===
from
.
hash
}
noIcon=
{
noIcon
}
tokenHash=
{
tokenHash
}
truncation=
{
truncation
}
maxW=
"calc(50% - 18px)"
maxW=
"calc(50% - 18px)"
/>
/>
<
IconSvg
name=
"arrows/east"
color=
{
iconColor
}
boxSize=
{
5
}
flexShrink=
{
0
}
/>
<
IconSvg
name=
"arrows/east"
color=
{
iconColor
}
boxSize=
{
5
}
flexShrink=
{
0
}
isLoading=
{
isLoading
}
/>
<
AddressEntity
{
to
?
(
address=
{
to
}
<
Entity
isLoading=
{
isLoading
}
address=
{
to
}
noLink=
{
current
===
to
.
hash
}
isLoading=
{
isLoading
}
noCopy=
{
current
===
to
.
hash
}
noLink=
{
current
===
to
.
hash
}
maxW=
"calc(50% - 18px)"
noCopy=
{
current
===
to
.
hash
}
/>
noIcon=
{
noIcon
}
tokenHash=
{
tokenHash
}
truncation=
{
truncation
}
maxW=
"calc(50% - 18px)"
/>
)
:
<
span
>
-
</
span
>
}
</
Flex
>
</
Flex
>
);
);
};
};
...
...
ui/token/TokenTransfer/TokenTransferListItem.tsx
View file @
9e92c0da
...
@@ -5,11 +5,10 @@ import type { TokenTransfer } from 'types/api/tokenTransfer';
...
@@ -5,11 +5,10 @@ import type { TokenTransfer } from 'types/api/tokenTransfer';
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
AddressFromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
AddressEntityWithTokenFilter
from
'
ui/shared/entities/address/AddressEntityWithTokenFilter
'
;
import
NftEntity
from
'
ui/shared/entities/nft/NftEntity
'
;
import
NftEntity
from
'
ui/shared/entities/nft/NftEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
TruncatedValue
from
'
ui/shared/TruncatedValue
'
;
import
TruncatedValue
from
'
ui/shared/TruncatedValue
'
;
...
@@ -53,23 +52,14 @@ const TokenTransferListItem = ({
...
@@ -53,23 +52,14 @@ const TokenTransferListItem = ({
)
}
)
}
</
Flex
>
</
Flex
>
{
method
&&
<
Tag
isLoading=
{
isLoading
}
>
{
method
}
</
Tag
>
}
{
method
&&
<
Tag
isLoading=
{
isLoading
}
>
{
method
}
</
Tag
>
}
<
Flex
w=
"100%"
columnGap=
{
3
}
>
<
AddressFromTo
<
AddressEntityWithTokenFilter
from=
{
from
}
address=
{
from
}
to=
{
to
}
isLoading=
{
isLoading
}
isLoading=
{
isLoading
}
tokenHash=
{
token
.
address
}
tokenHash=
{
token
.
address
}
width=
"50%"
w=
"100%"
fontWeight=
"500"
fontWeight=
"500"
/>
/>
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
flexShrink=
{
0
}
isLoading=
{
isLoading
}
/>
<
AddressEntityWithTokenFilter
address=
{
to
}
isLoading=
{
isLoading
}
tokenHash=
{
token
.
address
}
width=
"50%"
fontWeight=
"500"
/>
</
Flex
>
{
valueStr
&&
(
token
.
type
===
'
ERC-20
'
||
token
.
type
===
'
ERC-1155
'
)
&&
(
{
valueStr
&&
(
token
.
type
===
'
ERC-20
'
||
token
.
type
===
'
ERC-1155
'
)
&&
(
<
Grid
gap=
{
2
}
templateColumns=
{
`1fr auto auto${ usd ? ' auto' : '' }`
}
>
<
Grid
gap=
{
2
}
templateColumns=
{
`1fr auto auto${ usd ? ' auto' : '' }`
}
>
<
Skeleton
isLoaded=
{
!
isLoading
}
flexShrink=
{
0
}
fontWeight=
{
500
}
>
<
Skeleton
isLoaded=
{
!
isLoading
}
flexShrink=
{
0
}
fontWeight=
{
500
}
>
...
...
ui/token/TokenTransfer/TokenTransferTable.tsx
View file @
9e92c0da
...
@@ -26,17 +26,15 @@ const TokenTransferTable = ({ data, top, showSocketInfo, socketInfoAlert, socket
...
@@ -26,17 +26,15 @@ const TokenTransferTable = ({ data, top, showSocketInfo, socketInfoAlert, socket
return
(
return
(
<
AddressHighlightProvider
>
<
AddressHighlightProvider
>
<
Table
variant=
"simple"
size=
"sm"
minW=
"950px"
>
<
Table
variant=
"simple"
size=
"sm"
>
<
Thead
top=
{
top
}
>
<
Thead
top=
{
top
}
>
<
Tr
>
<
Tr
>
<
Th
width=
{
tokenType
===
'
ERC-1155
'
?
'
60%
'
:
'
80
%
'
}
>
Txn hash
</
Th
>
<
Th
width=
{
tokenType
===
'
ERC-1155
'
?
'
50%
'
:
'
75
%
'
}
>
Txn hash
</
Th
>
<
Th
width=
"164px"
>
Method
</
Th
>
<
Th
width=
"164px"
>
Method
</
Th
>
<
Th
width=
"160px"
>
From
</
Th
>
<
Th
width=
{
{
lg
:
'
200px
'
,
xl
:
'
420px
'
}
}
>
From/To
</
Th
>
<
Th
width=
"36px"
px=
{
0
}
/>
{
(
tokenType
===
'
ERC-721
'
||
tokenType
===
'
ERC-1155
'
)
&&
<
Th
width=
"25%"
isNumeric=
{
tokenType
===
'
ERC-721
'
}
>
Token ID
</
Th
>
}
<
Th
width=
"218px"
>
To
</
Th
>
{
(
tokenType
===
'
ERC-721
'
||
tokenType
===
'
ERC-1155
'
)
&&
<
Th
width=
"20%"
isNumeric=
{
tokenType
===
'
ERC-721
'
}
>
Token ID
</
Th
>
}
{
(
tokenType
===
'
ERC-20
'
||
tokenType
===
'
ERC-1155
'
)
&&
(
{
(
tokenType
===
'
ERC-20
'
||
tokenType
===
'
ERC-1155
'
)
&&
(
<
Th
width=
"2
0
%"
isNumeric
>
<
Th
width=
"2
5
%"
isNumeric
>
<
TruncatedValue
value=
{
`Value ${ token?.symbol || '' }`
}
w=
"100%"
verticalAlign=
"middle"
/>
<
TruncatedValue
value=
{
`Value ${ token?.symbol || '' }`
}
w=
"100%"
verticalAlign=
"middle"
/>
</
Th
>
</
Th
>
)
}
)
}
...
...
ui/token/TokenTransfer/TokenTransferTableItem.tsx
View file @
9e92c0da
...
@@ -5,11 +5,10 @@ import type { TokenTransfer } from 'types/api/tokenTransfer';
...
@@ -5,11 +5,10 @@ import type { TokenTransfer } from 'types/api/tokenTransfer';
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
AddressFromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
AddressEntityWithTokenFilter
from
'
ui/shared/entities/address/AddressEntityWithTokenFilter
'
;
import
NftEntity
from
'
ui/shared/entities/nft/NftEntity
'
;
import
NftEntity
from
'
ui/shared/entities/nft/NftEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
type
Props
=
TokenTransfer
&
{
tokenId
?:
string
;
isLoading
?:
boolean
}
type
Props
=
TokenTransfer
&
{
tokenId
?:
string
;
isLoading
?:
boolean
}
...
@@ -60,26 +59,13 @@ const TokenTransferTableItem = ({
...
@@ -60,26 +59,13 @@ const TokenTransferTableItem = ({
)
:
null
}
)
:
null
}
</
Td
>
</
Td
>
<
Td
>
<
Td
>
<
AddressEntityWithTokenFilter
<
AddressFromTo
address=
{
from
}
from=
{
from
}
to=
{
to
}
isLoading=
{
isLoading
}
isLoading=
{
isLoading
}
truncation=
"constant"
mt=
"5px"
mode=
{
{
lg
:
'
compact
'
,
xl
:
'
long
'
}
}
tokenHash=
{
token
.
address
}
tokenHash=
{
token
.
address
}
my=
"5px"
w=
"min-content"
/>
</
Td
>
<
Td
px=
{
0
}
>
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
mt=
"3px"
isLoading=
{
isLoading
}
/>
</
Td
>
<
Td
>
<
AddressEntityWithTokenFilter
address=
{
to
}
isLoading=
{
isLoading
}
truncation=
"constant"
tokenHash=
{
token
.
address
}
my=
"5px"
w=
"min-content"
/>
/>
</
Td
>
</
Td
>
{
(
token
.
type
===
'
ERC-721
'
||
token
.
type
===
'
ERC-1155
'
)
&&
(
{
(
token
.
type
===
'
ERC-721
'
||
token
.
type
===
'
ERC-1155
'
)
&&
(
...
...
ui/tx/details/TxDetailsTokenTransfer.tsx
View file @
9e92c0da
...
@@ -4,9 +4,8 @@ import React from 'react';
...
@@ -4,9 +4,8 @@ import React from 'react';
import
type
{
TokenTransfer
as
TTokenTransfer
,
Erc20TotalPayload
,
Erc721TotalPayload
,
Erc1155TotalPayload
}
from
'
types/api/tokenTransfer
'
;
import
type
{
TokenTransfer
as
TTokenTransfer
,
Erc20TotalPayload
,
Erc721TotalPayload
,
Erc1155TotalPayload
}
from
'
types/api/tokenTransfer
'
;
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
Address
Entity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
Address
FromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
TokenEntity
from
'
ui/shared/entities/token/TokenEntity
'
;
import
TokenEntity
from
'
ui/shared/entities/token/TokenEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
NftTokenTransferSnippet
from
'
ui/tx/NftTokenTransferSnippet
'
;
import
NftTokenTransferSnippet
from
'
ui/tx/NftTokenTransferSnippet
'
;
interface
Props
{
interface
Props
{
...
@@ -75,11 +74,13 @@ const TxDetailsTokenTransfer = ({ data }: Props) => {
...
@@ -75,11 +74,13 @@ const TxDetailsTokenTransfer = ({ data }: Props) => {
flexDir=
"row"
flexDir=
"row"
w=
"100%"
w=
"100%"
>
>
<
Flex
alignItems=
"center"
fontWeight=
"500"
>
<
AddressFromTo
<
AddressEntity
address=
{
data
.
from
}
truncation=
"constant"
noIcon
maxW=
"150px"
/>
from=
{
data
.
from
}
<
IconSvg
name=
"arrows/east"
boxSize=
{
5
}
mx=
{
2
}
color=
"gray.500"
/>
to=
{
data
.
to
}
<
AddressEntity
address=
{
data
.
to
}
truncation=
"constant"
noIcon
maxW=
"150px"
/>
truncation=
"constant"
</
Flex
>
noIcon
fontWeight=
"500"
/>
<
Flex
flexDir=
"column"
rowGap=
{
5
}
w=
"100%"
overflow=
"hidden"
fontWeight=
{
500
}
>
<
Flex
flexDir=
"column"
rowGap=
{
5
}
w=
"100%"
overflow=
"hidden"
fontWeight=
{
500
}
>
{
content
}
{
content
}
</
Flex
>
</
Flex
>
...
...
ui/tx/internals/TxInternalsListItem.tsx
View file @
9e92c0da
import
{
Flex
,
Box
,
HStack
,
Skeleton
}
from
'
@chakra-ui/react
'
;
import
{
Flex
,
HStack
,
Skeleton
}
from
'
@chakra-ui/react
'
;
import
BigNumber
from
'
bignumber.js
'
;
import
BigNumber
from
'
bignumber.js
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
InternalTransaction
}
from
'
types/api/internalTransaction
'
;
import
type
{
InternalTransaction
}
from
'
types/api/internalTransaction
'
;
import
config
from
'
configs/app
'
;
import
config
from
'
configs/app
'
;
import
AddressFromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
AddressEntity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
...
@@ -24,21 +23,13 @@ const TxInternalsListItem = ({ type, from, to, value, success, error, gas_limit:
...
@@ -24,21 +23,13 @@ const TxInternalsListItem = ({ type, from, to, value, success, error, gas_limit:
{
typeTitle
&&
<
Tag
colorScheme=
"cyan"
isLoading=
{
isLoading
}
>
{
typeTitle
}
</
Tag
>
}
{
typeTitle
&&
<
Tag
colorScheme=
"cyan"
isLoading=
{
isLoading
}
>
{
typeTitle
}
</
Tag
>
}
<
TxStatus
status=
{
success
?
'
ok
'
:
'
error
'
}
errorText=
{
error
}
isLoading=
{
isLoading
}
/>
<
TxStatus
status=
{
success
?
'
ok
'
:
'
error
'
}
errorText=
{
error
}
isLoading=
{
isLoading
}
/>
</
Flex
>
</
Flex
>
<
Box
w=
"100%"
display=
"flex"
columnGap=
{
3
}
fontWeight=
"500"
>
<
AddressFromTo
<
AddressEntity
from=
{
from
}
address=
{
from
}
to=
{
toData
}
isLoading=
{
isLoading
}
isLoading=
{
isLoading
}
width=
"calc((100% - 48px) / 2)"
w=
"100%"
/>
fontWeight=
"500"
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
isLoading=
{
isLoading
}
/>
/>
{
toData
&&
(
<
AddressEntity
address=
{
toData
}
isLoading=
{
isLoading
}
width=
"calc((100% - 48px) / 2)"
/>
)
}
</
Box
>
<
HStack
spacing=
{
3
}
>
<
HStack
spacing=
{
3
}
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
fontWeight=
{
500
}
>
Value
{
config
.
chain
.
currency
.
symbol
}
</
Skeleton
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
fontWeight=
{
500
}
>
Value
{
config
.
chain
.
currency
.
symbol
}
</
Skeleton
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
color=
"text_secondary"
>
<
Skeleton
isLoaded=
{
!
isLoading
}
fontSize=
"sm"
color=
"text_secondary"
>
...
...
ui/tx/internals/TxInternalsTable.tsx
View file @
9e92c0da
...
@@ -27,9 +27,7 @@ const TxInternalsTable = ({ data, sort, onSortToggle, top, isLoading }: Props) =
...
@@ -27,9 +27,7 @@ const TxInternalsTable = ({ data, sort, onSortToggle, top, isLoading }: Props) =
<
Thead
top=
{
top
}
>
<
Thead
top=
{
top
}
>
<
Tr
>
<
Tr
>
<
Th
width=
"28%"
>
Type
</
Th
>
<
Th
width=
"28%"
>
Type
</
Th
>
<
Th
width=
"20%"
>
From
</
Th
>
<
Th
width=
"40%"
>
From/To
</
Th
>
<
Th
width=
"24px"
px=
{
0
}
/>
<
Th
width=
"20%"
>
To
</
Th
>
<
Th
width=
"16%"
isNumeric
>
<
Th
width=
"16%"
isNumeric
>
<
Link
display=
"flex"
alignItems=
"center"
justifyContent=
"flex-end"
onClick=
{
onSortToggle
(
'
value
'
)
}
columnGap=
{
1
}
>
<
Link
display=
"flex"
alignItems=
"center"
justifyContent=
"flex-end"
onClick=
{
onSortToggle
(
'
value
'
)
}
columnGap=
{
1
}
>
{
sort
?.
includes
(
'
value
'
)
&&
<
IconSvg
name=
"arrows/east"
boxSize=
{
4
}
transform=
{
sortIconTransform
}
/>
}
{
sort
?.
includes
(
'
value
'
)
&&
<
IconSvg
name=
"arrows/east"
boxSize=
{
4
}
transform=
{
sortIconTransform
}
/>
}
...
...
ui/tx/internals/TxInternalsTableItem.tsx
View file @
9e92c0da
...
@@ -5,9 +5,8 @@ import React from 'react';
...
@@ -5,9 +5,8 @@ import React from 'react';
import
type
{
InternalTransaction
}
from
'
types/api/internalTransaction
'
;
import
type
{
InternalTransaction
}
from
'
types/api/internalTransaction
'
;
import
config
from
'
configs/app
'
;
import
config
from
'
configs/app
'
;
import
AddressFromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
AddressEntity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
import
{
TX_INTERNALS_ITEMS
}
from
'
ui/tx/internals/utils
'
;
...
@@ -32,22 +31,12 @@ const TxInternalTableItem = ({ type, from, to, value, success, error, gas_limit:
...
@@ -32,22 +31,12 @@ const TxInternalTableItem = ({ type, from, to, value, success, error, gas_limit:
</
Flex
>
</
Flex
>
</
Td
>
</
Td
>
<
Td
verticalAlign=
"middle"
>
<
Td
verticalAlign=
"middle"
>
<
AddressEntity
<
AddressFromTo
address=
{
from
}
from=
{
from
}
to=
{
toData
}
isLoading=
{
isLoading
}
isLoading=
{
isLoading
}
/>
/>
</
Td
>
</
Td
>
<
Td
px=
{
0
}
verticalAlign=
"middle"
>
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
isLoading=
{
isLoading
}
display=
"block"
/>
</
Td
>
<
Td
verticalAlign=
"middle"
>
{
toData
&&
(
<
AddressEntity
address=
{
toData
}
isLoading=
{
isLoading
}
/>
)
}
</
Td
>
<
Td
isNumeric
verticalAlign=
"middle"
>
<
Td
isNumeric
verticalAlign=
"middle"
>
<
Skeleton
isLoaded=
{
!
isLoading
}
display=
"inline-block"
>
<
Skeleton
isLoaded=
{
!
isLoading
}
display=
"inline-block"
>
{
BigNumber
(
value
).
div
(
BigNumber
(
10
**
config
.
chain
.
currency
.
decimals
)).
toFormat
()
}
{
BigNumber
(
value
).
div
(
BigNumber
(
10
**
config
.
chain
.
currency
.
decimals
)).
toFormat
()
}
...
...
ui/txs/TxsListItem.tsx
View file @
9e92c0da
...
@@ -11,11 +11,9 @@ import config from 'configs/app';
...
@@ -11,11 +11,9 @@ import config from 'configs/app';
import
getValueWithUnit
from
'
lib/getValueWithUnit
'
;
import
getValueWithUnit
from
'
lib/getValueWithUnit
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
{
space
}
from
'
lib/html-entities
'
;
import
{
space
}
from
'
lib/html-entities
'
;
import
Address
Entity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
Address
FromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
InOutTag
from
'
ui/shared/InOutTag
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
ListItemMobile
from
'
ui/shared/ListItemMobile/ListItemMobile
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
...
@@ -31,15 +29,9 @@ type Props = {
...
@@ -31,15 +29,9 @@ type Props = {
isLoading
?:
boolean
;
isLoading
?:
boolean
;
}
}
const
TAG_WIDTH
=
48
;
const
ARROW_WIDTH
=
24
;
const
TxsListItem
=
({
tx
,
isLoading
,
showBlockInfo
,
currentAddress
,
enableTimeIncrement
}:
Props
)
=>
{
const
TxsListItem
=
({
tx
,
isLoading
,
showBlockInfo
,
currentAddress
,
enableTimeIncrement
}:
Props
)
=>
{
const
dataTo
=
tx
.
to
?
tx
.
to
:
tx
.
created_contract
;
const
dataTo
=
tx
.
to
?
tx
.
to
:
tx
.
created_contract
;
const
isOut
=
Boolean
(
currentAddress
&&
currentAddress
===
tx
.
from
.
hash
);
const
isIn
=
Boolean
(
currentAddress
&&
currentAddress
===
tx
.
to
?.
hash
);
const
timeAgo
=
useTimeAgoIncrement
(
tx
.
timestamp
,
enableTimeIncrement
);
const
timeAgo
=
useTimeAgoIncrement
(
tx
.
timestamp
,
enableTimeIncrement
);
return
(
return
(
...
@@ -89,37 +81,14 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI
...
@@ -89,37 +81,14 @@ const TxsListItem = ({ tx, isLoading, showBlockInfo, currentAddress, enableTimeI
/>
/>
</
Flex
>
</
Flex
>
)
}
)
}
<
Flex
alignItems=
"center"
height=
{
6
}
mt=
{
6
}
>
<
AddressFromTo
<
AddressEntity
from=
{
tx
.
from
}
address=
{
tx
.
from
}
to=
{
dataTo
}
isLoading=
{
isLoading
}
current=
{
currentAddress
}
noLink=
{
isOut
}
isLoading=
{
isLoading
}
noCopy=
{
isOut
}
mt=
{
6
}
w=
{
`calc((100% - ${ currentAddress ? TAG_WIDTH + 16 : ARROW_WIDTH + 8 }px)/2)`
}
fontWeight=
"500"
fontWeight=
"500"
/>
/>
{
(
isIn
||
isOut
)
?
<
InOutTag
isIn=
{
isIn
}
isOut=
{
isOut
}
width=
"48px"
mx=
{
2
}
isLoading=
{
isLoading
}
/>
:
(
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
isLoading=
{
isLoading
}
mx=
{
2
}
flexShrink=
{
0
}
/>
)
}
{
dataTo
?
(
<
AddressEntity
address=
{
dataTo
}
isLoading=
{
isLoading
}
noLink=
{
isIn
}
noCopy=
{
isIn
}
w=
{
`calc((100% - ${ currentAddress ? TAG_WIDTH + 16 : ARROW_WIDTH + 8 }px)/2)`
}
fontWeight=
"500"
/>
)
:
'
-
'
}
</
Flex
>
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
<
Flex
mt=
{
2
}
columnGap=
{
2
}
>
<
Flex
mt=
{
2
}
columnGap=
{
2
}
>
<
Skeleton
isLoaded=
{
!
isLoading
}
display=
"inline-block"
whiteSpace=
"pre"
>
Value
</
Skeleton
>
<
Skeleton
isLoaded=
{
!
isLoading
}
display=
"inline-block"
whiteSpace=
"pre"
>
Value
</
Skeleton
>
...
...
ui/txs/TxsTable.tsx
View file @
9e92c0da
import
{
Link
,
Table
,
Tbody
,
Tr
,
Th
,
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
{
Link
,
Table
,
Tbody
,
Tr
,
Th
}
from
'
@chakra-ui/react
'
;
import
{
AnimatePresence
}
from
'
framer-motion
'
;
import
{
AnimatePresence
}
from
'
framer-motion
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
...
@@ -49,14 +49,7 @@ const TxsTable = ({
...
@@ -49,14 +49,7 @@ const TxsTable = ({
<
Th
width=
"160px"
>
Type
</
Th
>
<
Th
width=
"160px"
>
Type
</
Th
>
<
Th
width=
"20%"
>
Method
</
Th
>
<
Th
width=
"20%"
>
Method
</
Th
>
{
showBlockInfo
&&
<
Th
width=
"18%"
>
Block
</
Th
>
}
{
showBlockInfo
&&
<
Th
width=
"18%"
>
Block
</
Th
>
}
<
Th
width=
{
{
xl
:
'
152px
'
,
base
:
'
86px
'
}
}
>
<
Th
width=
{
{
base
:
'
224px
'
,
xl
:
'
352px
'
}
}
>
From/To
</
Th
>
<
Show
above=
"xl"
ssr=
{
false
}
>
From
</
Show
>
<
Hide
above=
"xl"
ssr=
{
false
}
>
From / To
</
Hide
>
</
Th
>
<
Th
width=
{
{
xl
:
currentAddress
?
'
48px
'
:
'
36px
'
,
base
:
currentAddress
?
'
52px
'
:
'
28px
'
}
}
></
Th
>
<
Th
width=
{
{
xl
:
'
152px
'
,
base
:
'
86px
'
}
}
>
<
Show
above=
"xl"
ssr=
{
false
}
>
To
</
Show
>
</
Th
>
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
<
Th
width=
"20%"
isNumeric
>
<
Th
width=
"20%"
isNumeric
>
<
Link
onClick=
{
sort
(
'
value
'
)
}
display=
"flex"
justifyContent=
"end"
>
<
Link
onClick=
{
sort
(
'
value
'
)
}
display=
"flex"
justifyContent=
"end"
>
...
...
ui/txs/TxsTableItem.tsx
View file @
9e92c0da
...
@@ -2,11 +2,7 @@ import {
...
@@ -2,11 +2,7 @@ import {
Tr
,
Tr
,
Td
,
Td
,
VStack
,
VStack
,
Show
,
Hide
,
Flex
,
Skeleton
,
Skeleton
,
Box
,
}
from
'
@chakra-ui/react
'
;
}
from
'
@chakra-ui/react
'
;
import
{
motion
}
from
'
framer-motion
'
;
import
{
motion
}
from
'
framer-motion
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
...
@@ -15,13 +11,11 @@ import type { Transaction } from 'types/api/transaction';
...
@@ -15,13 +11,11 @@ import type { Transaction } from 'types/api/transaction';
import
config
from
'
configs/app
'
;
import
config
from
'
configs/app
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
useTimeAgoIncrement
from
'
lib/hooks/useTimeAgoIncrement
'
;
import
AddressFromTo
from
'
ui/shared/address/AddressFromTo
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
CurrencyValue
from
'
ui/shared/CurrencyValue
'
;
import
CurrencyValue
from
'
ui/shared/CurrencyValue
'
;
import
AddressEntity
from
'
ui/shared/entities/address/AddressEntity
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
BlockEntity
from
'
ui/shared/entities/block/BlockEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
TxEntity
from
'
ui/shared/entities/tx/TxEntity
'
;
import
IconSvg
from
'
ui/shared/IconSvg
'
;
import
InOutTag
from
'
ui/shared/InOutTag
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxStatus
from
'
ui/shared/statusTag/TxStatus
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
import
TxFeeStability
from
'
ui/shared/tx/TxFeeStability
'
;
import
TxWatchListTags
from
'
ui/shared/tx/TxWatchListTags
'
;
import
TxWatchListTags
from
'
ui/shared/tx/TxWatchListTags
'
;
...
@@ -39,39 +33,8 @@ type Props = {
...
@@ -39,39 +33,8 @@ type Props = {
const
TxsTableItem
=
({
tx
,
showBlockInfo
,
currentAddress
,
enableTimeIncrement
,
isLoading
}:
Props
)
=>
{
const
TxsTableItem
=
({
tx
,
showBlockInfo
,
currentAddress
,
enableTimeIncrement
,
isLoading
}:
Props
)
=>
{
const
dataTo
=
tx
.
to
?
tx
.
to
:
tx
.
created_contract
;
const
dataTo
=
tx
.
to
?
tx
.
to
:
tx
.
created_contract
;
const
isOut
=
Boolean
(
currentAddress
&&
currentAddress
===
tx
.
from
.
hash
);
const
isIn
=
Boolean
(
currentAddress
&&
currentAddress
===
dataTo
?.
hash
);
const
timeAgo
=
useTimeAgoIncrement
(
tx
.
timestamp
,
enableTimeIncrement
);
const
timeAgo
=
useTimeAgoIncrement
(
tx
.
timestamp
,
enableTimeIncrement
);
const
addressFrom
=
(
<
AddressEntity
address=
{
tx
.
from
}
isLoading=
{
isLoading
}
noCopy=
{
isOut
}
noLink=
{
isOut
}
truncation=
"constant"
w=
"min-content"
maxW=
"100%"
my=
"2px"
lineHeight=
"20px"
/>
);
const
addressTo
=
dataTo
?
(
<
AddressEntity
address=
{
dataTo
}
isLoading=
{
isLoading
}
truncation=
"constant"
noCopy=
{
isIn
}
noLink=
{
isIn
}
w=
"min-content"
maxW=
"100%"
py=
"2px"
lineHeight=
"20px"
/>
)
:
'
-
'
;
return
(
return
(
<
Tr
<
Tr
as=
{
motion
.
tr
}
as=
{
motion
.
tr
}
...
@@ -124,42 +87,16 @@ const TxsTableItem = ({ tx, showBlockInfo, currentAddress, enableTimeIncrement,
...
@@ -124,42 +87,16 @@ const TxsTableItem = ({ tx, showBlockInfo, currentAddress, enableTimeIncrement,
)
}
)
}
</
Td
>
</
Td
>
)
}
)
}
<
Show
above=
"xl"
ssr=
{
false
}
>
<
Td
>
<
Td
>
<
AddressFromTo
{
addressFrom
}
from=
{
tx
.
from
}
</
Td
>
to=
{
dataTo
}
<
Td
px=
{
0
}
>
current=
{
currentAddress
}
{
(
isIn
||
isOut
)
?
isLoading=
{
isLoading
}
<
InOutTag
isIn=
{
isIn
}
isOut=
{
isOut
}
width=
"48px"
mr=
{
2
}
isLoading=
{
isLoading
}
/>
:
(
mt=
"2px"
<
Box
mx=
"6px"
>
mode=
{
{
lg
:
'
compact
'
,
xl
:
'
long
'
}
}
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
isLoading=
{
isLoading
}
/>
/>
</
Box
>
</
Td
>
)
}
</
Td
>
<
Td
>
{
addressTo
}
</
Td
>
</
Show
>
<
Hide
above=
"xl"
ssr=
{
false
}
>
<
Td
colSpan=
{
3
}
>
<
Flex
alignItems=
"center"
>
{
(
isIn
||
isOut
)
?
<
InOutTag
isIn=
{
isIn
}
isOut=
{
isOut
}
width=
"48px"
isLoading=
{
isLoading
}
/>
:
(
<
IconSvg
name=
"arrows/east"
boxSize=
{
6
}
color=
"gray.500"
transform=
"rotate(90deg)"
isLoading=
{
isLoading
}
/>
)
}
<
VStack
alignItems=
"start"
ml=
{
1
}
w=
"calc(100% - 48px)"
gap=
"11px"
>
{
addressFrom
}
{
addressTo
}
</
VStack
>
</
Flex
>
</
Td
>
</
Hide
>
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
{
!
config
.
UI
.
views
.
tx
.
hiddenFields
?.
value
&&
(
<
Td
isNumeric
>
<
Td
isNumeric
>
<
CurrencyValue
value=
{
tx
.
value
}
accuracy=
{
8
}
isLoading=
{
isLoading
}
/>
<
CurrencyValue
value=
{
tx
.
value
}
accuracy=
{
8
}
isLoading=
{
isLoading
}
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment