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
f33a23c7
Commit
f33a23c7
authored
Jun 12, 2023
by
tom
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor
parent
a1e7699d
Changes
48
Show whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
229 additions
and
313 deletions
+229
-313
AddressBlocksValidated.tsx
ui/address/AddressBlocksValidated.tsx
+4
-4
AddressCoinBalance.tsx
ui/address/AddressCoinBalance.tsx
+1
-1
AddressInternalTxs.tsx
ui/address/AddressInternalTxs.tsx
+4
-4
AddressLogs.tsx
ui/address/AddressLogs.tsx
+4
-4
AddressTokenTransfers.tsx
ui/address/AddressTokenTransfers.tsx
+4
-4
AddressTokens.tsx
ui/address/AddressTokens.tsx
+5
-9
AddressTxs.tsx
ui/address/AddressTxs.tsx
+3
-3
AddressWithdrawals.tsx
ui/address/AddressWithdrawals.tsx
+5
-5
AddressCoinBalanceHistory.tsx
ui/address/coinBalance/AddressCoinBalanceHistory.tsx
+5
-6
ERC1155Tokens.tsx
ui/address/tokens/ERC1155Tokens.tsx
+5
-11
ERC20Tokens.tsx
ui/address/tokens/ERC20Tokens.tsx
+6
-12
ERC721Tokens.tsx
ui/address/tokens/ERC721Tokens.tsx
+6
-12
BlockWithdrawals.tsx
ui/block/BlockWithdrawals.tsx
+3
-11
BlocksContent.tsx
ui/blocks/BlocksContent.tsx
+10
-11
BlocksTabSlot.tsx
ui/blocks/BlocksTabSlot.tsx
+6
-6
Accounts.tsx
ui/pages/Accounts.tsx
+5
-5
Block.tsx
ui/pages/Block.tsx
+6
-6
Blocks.tsx
ui/pages/Blocks.tsx
+6
-15
L2Deposits.tsx
ui/pages/L2Deposits.tsx
+5
-5
L2OutputRoots.tsx
ui/pages/L2OutputRoots.tsx
+5
-5
L2TxnBatches.tsx
ui/pages/L2TxnBatches.tsx
+5
-5
L2Withdrawals.tsx
ui/pages/L2Withdrawals.tsx
+5
-5
SearchResults.tsx
ui/pages/SearchResults.tsx
+6
-6
Token.tsx
ui/pages/Token.tsx
+5
-9
TokenInstance.tsx
ui/pages/TokenInstance.tsx
+5
-8
Transactions.tsx
ui/pages/Transactions.tsx
+5
-6
VerifiedContracts.tsx
ui/pages/VerifiedContracts.tsx
+5
-5
Withdrawals.tsx
ui/pages/Withdrawals.tsx
+9
-9
Pagination.tsx
ui/shared/pagination/Pagination.tsx
+8
-9
types.ts
ui/shared/pagination/types.ts
+10
-0
useQueryWithPages.test.tsx
ui/shared/pagination/useQueryWithPages.test.tsx
+1
-0
useQueryWithPages.ts
ui/shared/pagination/useQueryWithPages.ts
+16
-6
SearchBarSuggest.tsx
ui/snippets/searchBar/SearchBarSuggest.tsx
+3
-5
useSearchQuery.tsx
ui/snippets/searchBar/useSearchQuery.tsx
+1
-1
TokenHolders.tsx
ui/token/TokenHolders/TokenHolders.tsx
+6
-10
TokenInventory.pw.tsx
ui/token/TokenInventory.pw.tsx
+0
-1
TokenInventory.tsx
ui/token/TokenInventory.tsx
+4
-10
TokenTransfer.pw.tsx
ui/token/TokenTransfer/TokenTransfer.pw.tsx
+0
-3
TokenTransfer.tsx
ui/token/TokenTransfer/TokenTransfer.tsx
+6
-11
Tokens.tsx
ui/tokens/Tokens.tsx
+4
-4
TxInternals.tsx
ui/tx/TxInternals.tsx
+5
-5
TxLogs.tsx
ui/tx/TxLogs.tsx
+4
-4
TxState.tsx
ui/tx/TxState.tsx
+5
-5
TxTokenTransfer.tsx
ui/tx/TxTokenTransfer.tsx
+3
-3
TxsContent.tsx
ui/txs/TxsContent.tsx
+4
-12
TxsHeaderMobile.tsx
ui/txs/TxsHeaderMobile.tsx
+4
-3
TxsTabSlot.tsx
ui/txs/TxsTabSlot.tsx
+0
-19
TxsWatchlist.tsx
ui/txs/TxsWatchlist.tsx
+2
-10
No files found.
ui/address/AddressBlocksValidated.tsx
View file @
f33a23c7
...
@@ -8,14 +8,14 @@ import type { AddressBlocksValidatedResponse } from 'types/api/address';
...
@@ -8,14 +8,14 @@ import type { AddressBlocksValidatedResponse } from 'types/api/address';
import
appConfig
from
'
configs/app/config
'
;
import
appConfig
from
'
configs/app/config
'
;
import
{
getResourceKey
}
from
'
lib/api/useApiQuery
'
;
import
{
getResourceKey
}
from
'
lib/api/useApiQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
{
BLOCK
}
from
'
stubs/block
'
;
import
{
BLOCK
}
from
'
stubs/block
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
SocketAlert
from
'
ui/shared/SocketAlert
'
;
import
SocketAlert
from
'
ui/shared/SocketAlert
'
;
import
{
default
as
Thead
}
from
'
ui/shared/TheadSticky
'
;
import
{
default
as
Thead
}
from
'
ui/shared/TheadSticky
'
;
...
@@ -88,7 +88,7 @@ const AddressBlocksValidated = ({ scrollRef }: Props) => {
...
@@ -88,7 +88,7 @@ const AddressBlocksValidated = ({ scrollRef }: Props) => {
{
socketAlert
&&
<
SocketAlert
mb=
{
6
}
/>
}
{
socketAlert
&&
<
SocketAlert
mb=
{
6
}
/>
}
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Table
variant=
"simple"
size=
"sm"
>
<
Table
variant=
"simple"
size=
"sm"
>
<
Thead
top=
{
query
.
isPagination
Visible
?
80
:
0
}
>
<
Thead
top=
{
query
.
pagination
.
is
Visible
?
80
:
0
}
>
<
Tr
>
<
Tr
>
<
Th
width=
"17%"
>
Block
</
Th
>
<
Th
width=
"17%"
>
Block
</
Th
>
<
Th
width=
"17%"
>
Age
</
Th
>
<
Th
width=
"17%"
>
Age
</
Th
>
...
@@ -122,7 +122,7 @@ const AddressBlocksValidated = ({ scrollRef }: Props) => {
...
@@ -122,7 +122,7 @@ const AddressBlocksValidated = ({ scrollRef }: Props) => {
</>
</>
)
:
null
;
)
:
null
;
const
actionBar
=
query
.
isPagination
Visible
?
(
const
actionBar
=
query
.
pagination
.
is
Visible
?
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
query
.
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
query
.
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/address/AddressCoinBalance.tsx
View file @
f33a23c7
...
@@ -6,12 +6,12 @@ import type { SocketMessage } from 'lib/socket/types';
...
@@ -6,12 +6,12 @@ import type { SocketMessage } from 'lib/socket/types';
import
type
{
AddressCoinBalanceHistoryResponse
}
from
'
types/api/address
'
;
import
type
{
AddressCoinBalanceHistoryResponse
}
from
'
types/api/address
'
;
import
{
getResourceKey
}
from
'
lib/api/useApiQuery
'
;
import
{
getResourceKey
}
from
'
lib/api/useApiQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
{
ADDRESS_COIN_BALANCE
}
from
'
stubs/address
'
;
import
{
ADDRESS_COIN_BALANCE
}
from
'
stubs/address
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
SocketAlert
from
'
ui/shared/SocketAlert
'
;
import
SocketAlert
from
'
ui/shared/SocketAlert
'
;
import
AddressCoinBalanceChart
from
'
./coinBalance/AddressCoinBalanceChart
'
;
import
AddressCoinBalanceChart
from
'
./coinBalance/AddressCoinBalanceChart
'
;
...
...
ui/address/AddressInternalTxs.tsx
View file @
f33a23c7
...
@@ -6,7 +6,6 @@ import type { AddressFromToFilter } from 'types/api/address';
...
@@ -6,7 +6,6 @@ import type { AddressFromToFilter } from 'types/api/address';
import
{
AddressFromToFilterValues
}
from
'
types/api/address
'
;
import
{
AddressFromToFilterValues
}
from
'
types/api/address
'
;
import
getFilterValueFromQuery
from
'
lib/getFilterValueFromQuery
'
;
import
getFilterValueFromQuery
from
'
lib/getFilterValueFromQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
{
INTERNAL_TX
}
from
'
stubs/internalTx
'
;
import
{
INTERNAL_TX
}
from
'
stubs/internalTx
'
;
...
@@ -14,7 +13,8 @@ import { generateListStub } from 'stubs/utils';
...
@@ -14,7 +13,8 @@ import { generateListStub } from 'stubs/utils';
import
AddressIntTxsTable
from
'
ui/address/internals/AddressIntTxsTable
'
;
import
AddressIntTxsTable
from
'
ui/address/internals/AddressIntTxsTable
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
AddressCsvExportLink
from
'
./AddressCsvExportLink
'
;
import
AddressCsvExportLink
from
'
./AddressCsvExportLink
'
;
import
AddressTxsFilter
from
'
./AddressTxsFilter
'
;
import
AddressTxsFilter
from
'
./AddressTxsFilter
'
;
...
@@ -28,7 +28,7 @@ const AddressInternalTxs = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
...
@@ -28,7 +28,7 @@ const AddressInternalTxs = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
const
hash
=
getQueryParamString
(
router
.
query
.
hash
);
const
hash
=
getQueryParamString
(
router
.
query
.
hash
);
const
{
data
,
isPlaceholderData
,
isError
,
pagination
,
onFilterChange
,
isPaginationVisible
}
=
useQueryWithPages
({
const
{
data
,
isPlaceholderData
,
isError
,
pagination
,
onFilterChange
}
=
useQueryWithPages
({
resourceName
:
'
address_internal_txs
'
,
resourceName
:
'
address_internal_txs
'
,
pathParams
:
{
hash
},
pathParams
:
{
hash
},
filters
:
{
filter
:
filterValue
},
filters
:
{
filter
:
filterValue
},
...
@@ -75,7 +75,7 @@ const AddressInternalTxs = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
...
@@ -75,7 +75,7 @@ const AddressInternalTxs = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
isLoading=
{
pagination
.
isLoading
}
isLoading=
{
pagination
.
isLoading
}
/>
/>
<
AddressCsvExportLink
address=
{
hash
}
isLoading=
{
pagination
.
isLoading
}
type=
"internal-transactions"
ml=
{
{
base
:
2
,
lg
:
'
auto
'
}
}
/>
<
AddressCsvExportLink
address=
{
hash
}
isLoading=
{
pagination
.
isLoading
}
type=
"internal-transactions"
ml=
{
{
base
:
2
,
lg
:
'
auto
'
}
}
/>
{
isPaginationVisible
&&
<
Pagination
ml=
{
{
base
:
'
auto
'
,
lg
:
8
}
}
{
...
pagination
}
/>
}
<
Pagination
ml=
{
{
base
:
'
auto
'
,
lg
:
8
}
}
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
);
);
...
...
ui/address/AddressLogs.tsx
View file @
f33a23c7
import
{
useRouter
}
from
'
next/router
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
{
LOG
}
from
'
stubs/log
'
;
import
{
LOG
}
from
'
stubs/log
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
LogItem
from
'
ui/shared/logs/LogItem
'
;
import
LogItem
from
'
ui/shared/logs/LogItem
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
const
AddressLogs
=
({
scrollRef
}:
{
scrollRef
?:
React
.
RefObject
<
HTMLDivElement
>
})
=>
{
const
AddressLogs
=
({
scrollRef
}:
{
scrollRef
?:
React
.
RefObject
<
HTMLDivElement
>
})
=>
{
const
router
=
useRouter
();
const
router
=
useRouter
();
const
hash
=
getQueryParamString
(
router
.
query
.
hash
);
const
hash
=
getQueryParamString
(
router
.
query
.
hash
);
const
{
data
,
isPlaceholderData
,
isError
,
pagination
,
isPaginationVisible
}
=
useQueryWithPages
({
const
{
data
,
isPlaceholderData
,
isError
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
address_logs
'
,
resourceName
:
'
address_logs
'
,
pathParams
:
{
hash
},
pathParams
:
{
hash
},
scrollRef
,
scrollRef
,
...
@@ -28,7 +28,7 @@ const AddressLogs = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivElement>
...
@@ -28,7 +28,7 @@ const AddressLogs = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivElement>
},
},
});
});
const
actionBar
=
isPagination
Visible
?
(
const
actionBar
=
pagination
.
is
Visible
?
(
<
ActionBar
mt=
{
-
6
}
showShadow
>
<
ActionBar
mt=
{
-
6
}
showShadow
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/address/AddressTokenTransfers.tsx
View file @
f33a23c7
...
@@ -14,7 +14,6 @@ import { getResourceKey } from 'lib/api/useApiQuery';
...
@@ -14,7 +14,6 @@ import { getResourceKey } from 'lib/api/useApiQuery';
import
getFilterValueFromQuery
from
'
lib/getFilterValueFromQuery
'
;
import
getFilterValueFromQuery
from
'
lib/getFilterValueFromQuery
'
;
import
getFilterValuesFromQuery
from
'
lib/getFilterValuesFromQuery
'
;
import
getFilterValuesFromQuery
from
'
lib/getFilterValuesFromQuery
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
...
@@ -24,7 +23,8 @@ import { getTokenTransfersStub } from 'stubs/token';
...
@@ -24,7 +23,8 @@ import { getTokenTransfersStub } from 'stubs/token';
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
HashStringShorten
from
'
ui/shared/HashStringShorten
'
;
import
HashStringShorten
from
'
ui/shared/HashStringShorten
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
*
as
SocketNewItemsNotice
from
'
ui/shared/SocketNewItemsNotice
'
;
import
*
as
SocketNewItemsNotice
from
'
ui/shared/SocketNewItemsNotice
'
;
import
TokenLogo
from
'
ui/shared/TokenLogo
'
;
import
TokenLogo
from
'
ui/shared/TokenLogo
'
;
import
TokenTransferFilter
from
'
ui/shared/TokenTransfer/TokenTransferFilter
'
;
import
TokenTransferFilter
from
'
ui/shared/TokenTransfer/TokenTransferFilter
'
;
...
@@ -88,7 +88,7 @@ const AddressTokenTransfers = ({ scrollRef, overloadCount = OVERLOAD_COUNT }: Pr
...
@@ -88,7 +88,7 @@ const AddressTokenTransfers = ({ scrollRef, overloadCount = OVERLOAD_COUNT }: Pr
},
},
);
);
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
onFilterChange
,
isPaginationVisible
}
=
useQueryWithPages
({
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
onFilterChange
}
=
useQueryWithPages
({
resourceName
:
'
address_token_transfers
'
,
resourceName
:
'
address_token_transfers
'
,
pathParams
:
{
hash
:
currentAddress
},
pathParams
:
{
hash
:
currentAddress
},
filters
:
tokenFilter
?
{
token
:
tokenFilter
}
:
filters
,
filters
:
tokenFilter
?
{
token
:
tokenFilter
}
:
filters
,
...
@@ -277,7 +277,7 @@ const AddressTokenTransfers = ({ scrollRef, overloadCount = OVERLOAD_COUNT }: Pr
...
@@ -277,7 +277,7 @@ const AddressTokenTransfers = ({ scrollRef, overloadCount = OVERLOAD_COUNT }: Pr
isLoading=
{
isPlaceholderData
}
isLoading=
{
isPlaceholderData
}
/>
/>
)
}
)
}
{
isPaginationVisible
&&
<
Pagination
ml=
{
{
base
:
'
auto
'
,
lg
:
8
}
}
{
...
pagination
}
/>
}
<
Pagination
ml=
{
{
base
:
'
auto
'
,
lg
:
8
}
}
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
)
}
)
}
</>
</>
...
...
ui/address/AddressTokens.tsx
View file @
f33a23c7
...
@@ -3,14 +3,14 @@ import { useRouter } from 'next/router';
...
@@ -3,14 +3,14 @@ import { useRouter } from 'next/router';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
TokenType
}
from
'
types/api/token
'
;
import
type
{
TokenType
}
from
'
types/api/token
'
;
import
type
{
PaginationParams
}
from
'
ui/shared/pagination/types
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
ADDRESS_TOKEN_BALANCE_ERC_1155
,
ADDRESS_TOKEN_BALANCE_ERC_20
,
ADDRESS_TOKEN_BALANCE_ERC_721
}
from
'
stubs/address
'
;
import
{
ADDRESS_TOKEN_BALANCE_ERC_1155
,
ADDRESS_TOKEN_BALANCE_ERC_20
,
ADDRESS_TOKEN_BALANCE_ERC_721
}
from
'
stubs/address
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
tokenTabsByType
}
from
'
ui/pages/Address
'
;
import
{
tokenTabsByType
}
from
'
ui/pages/Address
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/
pagination/
Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
ERC1155Tokens
from
'
./tokens/ERC1155Tokens
'
;
import
ERC1155Tokens
from
'
./tokens/ERC1155Tokens
'
;
...
@@ -81,17 +81,13 @@ const AddressTokens = () => {
...
@@ -81,17 +81,13 @@ const AddressTokens = () => {
{
id
:
tokenTabsByType
[
'
ERC-1155
'
],
title
:
'
ERC-1155
'
,
component
:
<
ERC1155Tokens
tokensQuery=
{
erc1155Query
}
/>
},
{
id
:
tokenTabsByType
[
'
ERC-1155
'
],
title
:
'
ERC-1155
'
,
component
:
<
ERC1155Tokens
tokensQuery=
{
erc1155Query
}
/>
},
];
];
let
isPaginationVisible
;
let
pagination
:
PaginationParams
|
undefined
;
let
pagination
:
PaginationProps
|
undefined
;
if
(
tab
===
tokenTabsByType
[
'
ERC-1155
'
])
{
if
(
tab
===
tokenTabsByType
[
'
ERC-1155
'
])
{
isPaginationVisible
=
erc1155Query
.
isPaginationVisible
;
pagination
=
erc1155Query
.
pagination
;
pagination
=
erc1155Query
.
pagination
;
}
else
if
(
tab
===
tokenTabsByType
[
'
ERC-721
'
])
{
}
else
if
(
tab
===
tokenTabsByType
[
'
ERC-721
'
])
{
isPaginationVisible
=
erc721Query
.
isPaginationVisible
;
pagination
=
erc721Query
.
pagination
;
pagination
=
erc721Query
.
pagination
;
}
else
{
}
else
{
isPaginationVisible
=
erc20Query
.
isPaginationVisible
;
pagination
=
erc20Query
.
pagination
;
pagination
=
erc20Query
.
pagination
;
}
}
...
@@ -106,7 +102,7 @@ const AddressTokens = () => {
...
@@ -106,7 +102,7 @@ const AddressTokens = () => {
colorScheme=
"gray"
colorScheme=
"gray"
size=
"sm"
size=
"sm"
tabListProps=
{
isMobile
?
TAB_LIST_PROPS_MOBILE
:
TAB_LIST_PROPS
}
tabListProps=
{
isMobile
?
TAB_LIST_PROPS_MOBILE
:
TAB_LIST_PROPS
}
rightSlot=
{
isPagination
Visible
&&
!
isMobile
?
<
Pagination
{
...
pagination
}
/>
:
null
}
rightSlot=
{
pagination
.
is
Visible
&&
!
isMobile
?
<
Pagination
{
...
pagination
}
/>
:
null
}
stickyEnabled=
{
!
isMobile
}
stickyEnabled=
{
!
isMobile
}
/>
/>
</>
</>
...
...
ui/address/AddressTxs.tsx
View file @
f33a23c7
...
@@ -10,14 +10,14 @@ import type { Transaction } from 'types/api/transaction';
...
@@ -10,14 +10,14 @@ import type { Transaction } from 'types/api/transaction';
import
{
getResourceKey
}
from
'
lib/api/useApiQuery
'
;
import
{
getResourceKey
}
from
'
lib/api/useApiQuery
'
;
import
getFilterValueFromQuery
from
'
lib/getFilterValueFromQuery
'
;
import
getFilterValueFromQuery
from
'
lib/getFilterValueFromQuery
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
{
TX
}
from
'
stubs/tx
'
;
import
{
TX
}
from
'
stubs/tx
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
import
AddressCsvExportLink
from
'
./AddressCsvExportLink
'
;
import
AddressCsvExportLink
from
'
./AddressCsvExportLink
'
;
...
@@ -172,7 +172,7 @@ const AddressTxs = ({ scrollRef, overloadCount = OVERLOAD_COUNT }: Props) => {
...
@@ -172,7 +172,7 @@ const AddressTxs = ({ scrollRef, overloadCount = OVERLOAD_COUNT }: Props) => {
isLoading={ addressTxsQuery.pagination.isLoading }
isLoading={ addressTxsQuery.pagination.isLoading }
/>
/>
) }
) }
{ addressTxsQuery.isPaginationVisible && <Pagination { ...addressTxsQuery.pagination } ml={ 8 }/> }
<Pagination { ...addressTxsQuery.pagination } ml={ 8 }/>
</ActionBar>
</ActionBar>
) }
) }
<TxsContent
<TxsContent
...
...
ui/address/AddressWithdrawals.tsx
View file @
f33a23c7
...
@@ -2,13 +2,13 @@ import { Show, Hide } from '@chakra-ui/react';
...
@@ -2,13 +2,13 @@ import { Show, Hide } from '@chakra-ui/react';
import
{
useRouter
}
from
'
next/router
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
WITHDRAWAL
}
from
'
stubs/withdrawals
'
;
import
{
WITHDRAWAL
}
from
'
stubs/withdrawals
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
WithdrawalsListItem
from
'
ui/withdrawals/WithdrawalsListItem
'
;
import
WithdrawalsListItem
from
'
ui/withdrawals/WithdrawalsListItem
'
;
import
WithdrawalsTable
from
'
ui/withdrawals/WithdrawalsTable
'
;
import
WithdrawalsTable
from
'
ui/withdrawals/WithdrawalsTable
'
;
...
@@ -17,7 +17,7 @@ const AddressWithdrawals = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
...
@@ -17,7 +17,7 @@ const AddressWithdrawals = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
const
hash
=
getQueryParamString
(
router
.
query
.
hash
);
const
hash
=
getQueryParamString
(
router
.
query
.
hash
);
const
{
data
,
isPlaceholderData
,
isError
,
pagination
,
isPaginationVisible
}
=
useQueryWithPages
({
const
{
data
,
isPlaceholderData
,
isError
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
address_withdrawals
'
,
resourceName
:
'
address_withdrawals
'
,
pathParams
:
{
hash
},
pathParams
:
{
hash
},
scrollRef
,
scrollRef
,
...
@@ -41,12 +41,12 @@ const AddressWithdrawals = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
...
@@ -41,12 +41,12 @@ const AddressWithdrawals = ({ scrollRef }: {scrollRef?: React.RefObject<HTMLDivE
))
}
))
}
</
Show
>
</
Show
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
WithdrawalsTable
items=
{
data
.
items
}
view=
"address"
top=
{
isPagination
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
<
WithdrawalsTable
items=
{
data
.
items
}
view=
"address"
top=
{
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
</
Hide
>
</
Hide
>
</>
</>
)
:
null
;
)
:
null
;
const
actionBar
=
isPagination
Visible
?
(
const
actionBar
=
pagination
.
is
Visible
?
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/address/coinBalance/AddressCoinBalanceHistory.tsx
View file @
f33a23c7
...
@@ -3,12 +3,12 @@ import type { UseQueryResult } from '@tanstack/react-query';
...
@@ -3,12 +3,12 @@ import type { UseQueryResult } from '@tanstack/react-query';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
AddressCoinBalanceHistoryResponse
}
from
'
types/api/address
'
;
import
type
{
AddressCoinBalanceHistoryResponse
}
from
'
types/api/address
'
;
import
type
{
PaginationParams
}
from
'
ui/shared/pagination/types
'
;
import
appConfig
from
'
configs/app/config
'
;
import
appConfig
from
'
configs/app/config
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
{
default
as
Thead
}
from
'
ui/shared/TheadSticky
'
;
import
{
default
as
Thead
}
from
'
ui/shared/TheadSticky
'
;
import
AddressCoinBalanceListItem
from
'
./AddressCoinBalanceListItem
'
;
import
AddressCoinBalanceListItem
from
'
./AddressCoinBalanceListItem
'
;
...
@@ -16,8 +16,7 @@ import AddressCoinBalanceTableItem from './AddressCoinBalanceTableItem';
...
@@ -16,8 +16,7 @@ import AddressCoinBalanceTableItem from './AddressCoinBalanceTableItem';
interface
Props
{
interface
Props
{
query
:
UseQueryResult
<
AddressCoinBalanceHistoryResponse
>
&
{
query
:
UseQueryResult
<
AddressCoinBalanceHistoryResponse
>
&
{
pagination
:
PaginationProps
;
pagination
:
PaginationParams
;
isPaginationVisible
:
boolean
;
};
};
}
}
...
@@ -27,7 +26,7 @@ const AddressCoinBalanceHistory = ({ query }: Props) => {
...
@@ -27,7 +26,7 @@ const AddressCoinBalanceHistory = ({ query }: Props) => {
<>
<>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Table
variant=
"simple"
size=
"sm"
>
<
Table
variant=
"simple"
size=
"sm"
>
<
Thead
top=
{
query
.
isPagination
Visible
?
80
:
0
}
>
<
Thead
top=
{
query
.
pagination
.
is
Visible
?
80
:
0
}
>
<
Tr
>
<
Tr
>
<
Th
width=
"20%"
>
Block
</
Th
>
<
Th
width=
"20%"
>
Block
</
Th
>
<
Th
width=
"20%"
>
Txn
</
Th
>
<
Th
width=
"20%"
>
Txn
</
Th
>
...
@@ -61,7 +60,7 @@ const AddressCoinBalanceHistory = ({ query }: Props) => {
...
@@ -61,7 +60,7 @@ const AddressCoinBalanceHistory = ({ query }: Props) => {
</>
</>
)
:
null
;
)
:
null
;
const
actionBar
=
query
.
isPagination
Visible
?
(
const
actionBar
=
query
.
pagination
.
is
Visible
?
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
query
.
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
query
.
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/address/tokens/ERC1155Tokens.tsx
View file @
f33a23c7
import
{
Grid
}
from
'
@chakra-ui/react
'
;
import
{
Grid
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
AddressTokensResponse
}
from
'
types/api/address
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared
/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination
/Pagination
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
NFTItem
from
'
./NFTItem
'
;
import
NFTItem
from
'
./NFTItem
'
;
type
Props
=
{
type
Props
=
{
tokensQuery
:
UseQueryResult
<
AddressTokensResponse
>
&
{
tokensQuery
:
QueryWithPagesResult
<
'
address_tokens
'
>
;
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
}
}
const
ERC1155Tokens
=
({
tokensQuery
}:
Props
)
=>
{
const
ERC1155Tokens
=
({
tokensQuery
}:
Props
)
=>
{
const
isMobile
=
useIsMobile
();
const
isMobile
=
useIsMobile
();
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
isPaginationVisible
}
=
tokensQuery
;
const
{
isError
,
isPlaceholderData
,
data
,
pagination
}
=
tokensQuery
;
const
actionBar
=
isMobile
&&
isPagination
Visible
&&
(
const
actionBar
=
isMobile
&&
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/address/tokens/ERC20Tokens.tsx
View file @
f33a23c7
import
{
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
{
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
AddressTokensResponse
}
from
'
types/api/address
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/
pagination/
Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
ERC20TokensListItem
from
'
./ERC20TokensListItem
'
;
import
ERC20TokensListItem
from
'
./ERC20TokensListItem
'
;
import
ERC20TokensTable
from
'
./ERC20TokensTable
'
;
import
ERC20TokensTable
from
'
./ERC20TokensTable
'
;
type
Props
=
{
type
Props
=
{
tokensQuery
:
UseQueryResult
<
AddressTokensResponse
>
&
{
tokensQuery
:
QueryWithPagesResult
<
'
address_tokens
'
>
;
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
}
}
const
ERC20Tokens
=
({
tokensQuery
}:
Props
)
=>
{
const
ERC20Tokens
=
({
tokensQuery
}:
Props
)
=>
{
const
isMobile
=
useIsMobile
();
const
isMobile
=
useIsMobile
();
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
isPaginationVisible
}
=
tokensQuery
;
const
{
isError
,
isPlaceholderData
,
data
,
pagination
}
=
tokensQuery
;
const
actionBar
=
isMobile
&&
isPagination
Visible
&&
(
const
actionBar
=
isMobile
&&
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
@@ -33,7 +27,7 @@ const ERC20Tokens = ({ tokensQuery }: Props) => {
...
@@ -33,7 +27,7 @@ const ERC20Tokens = ({ tokensQuery }: Props) => {
const
content
=
data
?.
items
?
(
const
content
=
data
?.
items
?
(
<>
<>
<
Hide
below=
"lg"
ssr=
{
false
}
><
ERC20TokensTable
data=
{
data
.
items
}
top=
{
isPagination
Visible
?
72
:
0
}
isLoading=
{
isPlaceholderData
}
/></
Hide
>
<
Hide
below=
"lg"
ssr=
{
false
}
><
ERC20TokensTable
data=
{
data
.
items
}
top=
{
pagination
.
is
Visible
?
72
:
0
}
isLoading=
{
isPlaceholderData
}
/></
Hide
>
<
Show
below=
"lg"
ssr=
{
false
}
>
{
data
.
items
.
map
((
item
,
index
)
=>
(
<
Show
below=
"lg"
ssr=
{
false
}
>
{
data
.
items
.
map
((
item
,
index
)
=>
(
<
ERC20TokensListItem
<
ERC20TokensListItem
key=
{
item
.
token
.
address
+
(
isPlaceholderData
?
index
:
''
)
}
key=
{
item
.
token
.
address
+
(
isPlaceholderData
?
index
:
''
)
}
...
...
ui/address/tokens/ERC721Tokens.tsx
View file @
f33a23c7
import
{
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
{
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
AddressTokensResponse
}
from
'
types/api/address
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/
pagination/
Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
ERC721TokensListItem
from
'
./ERC721TokensListItem
'
;
import
ERC721TokensListItem
from
'
./ERC721TokensListItem
'
;
import
ERC721TokensTable
from
'
./ERC721TokensTable
'
;
import
ERC721TokensTable
from
'
./ERC721TokensTable
'
;
type
Props
=
{
type
Props
=
{
tokensQuery
:
UseQueryResult
<
AddressTokensResponse
>
&
{
tokensQuery
:
QueryWithPagesResult
<
'
address_tokens
'
>
;
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
}
}
const
ERC721Tokens
=
({
tokensQuery
}:
Props
)
=>
{
const
ERC721Tokens
=
({
tokensQuery
}:
Props
)
=>
{
const
isMobile
=
useIsMobile
();
const
isMobile
=
useIsMobile
();
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
isPaginationVisible
}
=
tokensQuery
;
const
{
isError
,
isPlaceholderData
,
data
,
pagination
}
=
tokensQuery
;
const
actionBar
=
isMobile
&&
isPagination
Visible
&&
(
const
actionBar
=
isMobile
&&
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
@@ -33,7 +27,7 @@ const ERC721Tokens = ({ tokensQuery }: Props) => {
...
@@ -33,7 +27,7 @@ const ERC721Tokens = ({ tokensQuery }: Props) => {
const
content
=
data
?.
items
?
(
const
content
=
data
?.
items
?
(
<>
<>
<
Hide
below=
"lg"
ssr=
{
false
}
><
ERC721TokensTable
data=
{
data
.
items
}
isLoading=
{
isPlaceholderData
}
top=
{
isPagination
Visible
?
72
:
0
}
/></
Hide
>
<
Hide
below=
"lg"
ssr=
{
false
}
><
ERC721TokensTable
data=
{
data
.
items
}
isLoading=
{
isPlaceholderData
}
top=
{
pagination
.
is
Visible
?
72
:
0
}
/></
Hide
>
<
Show
below=
"lg"
ssr=
{
false
}
>
{
data
.
items
.
map
((
item
,
index
)
=>
(
<
Show
below=
"lg"
ssr=
{
false
}
>
{
data
.
items
.
map
((
item
,
index
)
=>
(
<
ERC721TokensListItem
<
ERC721TokensListItem
key=
{
item
.
token
.
address
+
(
isPlaceholderData
?
index
:
''
)
}
key=
{
item
.
token
.
address
+
(
isPlaceholderData
?
index
:
''
)
}
...
...
ui/block/BlockWithdrawals.tsx
View file @
f33a23c7
import
{
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
{
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
BlockWithdrawalsResponse
}
from
'
types/api/block
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
WithdrawalsListItem
from
'
ui/withdrawals/WithdrawalsListItem
'
;
import
WithdrawalsListItem
from
'
ui/withdrawals/WithdrawalsListItem
'
;
import
WithdrawalsTable
from
'
ui/withdrawals/WithdrawalsTable
'
;
import
WithdrawalsTable
from
'
ui/withdrawals/WithdrawalsTable
'
;
type
QueryResult
=
UseQueryResult
<
BlockWithdrawalsResponse
>
&
{
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
type
Props
=
{
type
Props
=
{
blockWithdrawalsQuery
:
Query
Result
;
blockWithdrawalsQuery
:
Query
WithPagesResult
<
'
block_withdrawals
'
>
;
}
}
const
BlockWithdrawals
=
({
blockWithdrawalsQuery
}:
Props
)
=>
{
const
BlockWithdrawals
=
({
blockWithdrawalsQuery
}:
Props
)
=>
{
...
@@ -35,7 +27,7 @@ const BlockWithdrawals = ({ blockWithdrawalsQuery }: Props) => {
...
@@ -35,7 +27,7 @@ const BlockWithdrawals = ({ blockWithdrawalsQuery }: Props) => {
<
WithdrawalsTable
<
WithdrawalsTable
items=
{
blockWithdrawalsQuery
.
data
.
items
}
items=
{
blockWithdrawalsQuery
.
data
.
items
}
isLoading=
{
blockWithdrawalsQuery
.
isPlaceholderData
}
isLoading=
{
blockWithdrawalsQuery
.
isPlaceholderData
}
top=
{
blockWithdrawalsQuery
.
isPagination
Visible
?
80
:
0
}
top=
{
blockWithdrawalsQuery
.
pagination
.
is
Visible
?
80
:
0
}
view=
"block"
view=
"block"
/>
/>
</
Hide
>
</
Hide
>
...
...
ui/blocks/BlocksContent.tsx
View file @
f33a23c7
import
{
Alert
,
Box
}
from
'
@chakra-ui/react
'
;
import
{
Alert
,
Box
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
{
useQueryClient
}
from
'
@tanstack/react-query
'
;
import
{
useQueryClient
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
...
@@ -14,17 +13,12 @@ import BlocksList from 'ui/blocks/BlocksList';
...
@@ -14,17 +13,12 @@ import BlocksList from 'ui/blocks/BlocksList';
import
BlocksTable
from
'
ui/blocks/BlocksTable
'
;
import
BlocksTable
from
'
ui/blocks/BlocksTable
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
type
QueryResult
=
UseQueryResult
<
BlocksResponse
>
&
{
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
interface
Props
{
interface
Props
{
type
?:
BlockType
;
type
?:
BlockType
;
query
:
Query
Result
;
query
:
Query
WithPagesResult
<
'
blocks
'
>
;
}
}
const
BlocksContent
=
({
type
,
query
}:
Props
)
=>
{
const
BlocksContent
=
({
type
,
query
}:
Props
)
=>
{
...
@@ -81,12 +75,17 @@ const BlocksContent = ({ type, query }: Props) => {
...
@@ -81,12 +75,17 @@ const BlocksContent = ({ type, query }: Props) => {
<
BlocksList
data=
{
query
.
data
.
items
}
isLoading=
{
query
.
isPlaceholderData
}
page=
{
query
.
pagination
.
page
}
/>
<
BlocksList
data=
{
query
.
data
.
items
}
isLoading=
{
query
.
isPlaceholderData
}
page=
{
query
.
pagination
.
page
}
/>
</
Box
>
</
Box
>
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
<
BlocksTable
data=
{
query
.
data
.
items
}
top=
{
query
.
isPaginationVisible
?
80
:
0
}
page=
{
query
.
pagination
.
page
}
isLoading=
{
query
.
isPlaceholderData
}
/>
<
BlocksTable
data=
{
query
.
data
.
items
}
top=
{
query
.
pagination
.
isVisible
?
80
:
0
}
page=
{
query
.
pagination
.
page
}
isLoading=
{
query
.
isPlaceholderData
}
/>
</
Box
>
</
Box
>
</>
</>
)
:
null
;
)
:
null
;
const
actionBar
=
isMobile
&&
query
.
isPagination
Visible
?
(
const
actionBar
=
isMobile
&&
query
.
pagination
.
is
Visible
?
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
query
.
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
query
.
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/blocks/BlocksTabSlot.tsx
View file @
f33a23c7
import
{
Flex
,
Box
,
Text
,
Skeleton
}
from
'
@chakra-ui/react
'
;
import
{
Flex
,
Box
,
Text
,
Skeleton
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
PaginationParams
}
from
'
ui/shared/pagination/types
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
{
nbsp
}
from
'
lib/html-entities
'
;
import
{
nbsp
}
from
'
lib/html-entities
'
;
import
{
HOMEPAGE_STATS
}
from
'
stubs/stats
'
;
import
{
HOMEPAGE_STATS
}
from
'
stubs/stats
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
interface
Props
{
interface
Props
{
pagination
:
PaginationProps
;
pagination
:
PaginationParams
;
isPaginationVisible
:
boolean
;
}
}
const
BlocksTabSlot
=
({
pagination
,
isPaginationVisible
}:
Props
)
=>
{
const
BlocksTabSlot
=
({
pagination
}:
Props
)
=>
{
const
statsQuery
=
useApiQuery
(
'
homepage_stats
'
,
{
const
statsQuery
=
useApiQuery
(
'
homepage_stats
'
,
{
queryOptions
:
{
queryOptions
:
{
placeholderData
:
HOMEPAGE_STATS
,
placeholderData
:
HOMEPAGE_STATS
,
...
@@ -31,7 +31,7 @@ const BlocksTabSlot = ({ pagination, isPaginationVisible }: Props) => {
...
@@ -31,7 +31,7 @@ const BlocksTabSlot = ({ pagination, isPaginationVisible }: Props) => {
</
Skeleton
>
</
Skeleton
>
</
Box
>
</
Box
>
)
}
)
}
{
isPaginationVisible
&&
<
Pagination
my=
{
1
}
{
...
pagination
}
/>
}
<
Pagination
my=
{
1
}
{
...
pagination
}
/>
</
Flex
>
</
Flex
>
);
);
};
};
...
...
ui/pages/Accounts.tsx
View file @
f33a23c7
import
{
Hide
,
Show
}
from
'
@chakra-ui/react
'
;
import
{
Hide
,
Show
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
TOP_ADDRESS
}
from
'
stubs/address
'
;
import
{
TOP_ADDRESS
}
from
'
stubs/address
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
AddressesListItem
from
'
ui/addresses/AddressesListItem
'
;
import
AddressesListItem
from
'
ui/addresses/AddressesListItem
'
;
...
@@ -9,12 +8,13 @@ import AddressesTable from 'ui/addresses/AddressesTable';
...
@@ -9,12 +8,13 @@ import AddressesTable from 'ui/addresses/AddressesTable';
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
const
PAGE_SIZE
=
50
;
const
PAGE_SIZE
=
50
;
const
Accounts
=
()
=>
{
const
Accounts
=
()
=>
{
const
{
isError
,
isPlaceholderData
,
data
,
isPaginationVisible
,
pagination
}
=
useQueryWithPages
({
const
{
isError
,
isPlaceholderData
,
data
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
addresses
'
,
resourceName
:
'
addresses
'
,
options
:
{
options
:
{
placeholderData
:
generateListStub
<
'
addresses
'
>
(
placeholderData
:
generateListStub
<
'
addresses
'
>
(
...
@@ -32,7 +32,7 @@ const Accounts = () => {
...
@@ -32,7 +32,7 @@ const Accounts = () => {
},
},
});
});
const
actionBar
=
isPagination
Visible
&&
(
const
actionBar
=
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
@@ -43,7 +43,7 @@ const Accounts = () => {
...
@@ -43,7 +43,7 @@ const Accounts = () => {
<>
<>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
AddressesTable
<
AddressesTable
top=
{
isPagination
Visible
?
80
:
0
}
top=
{
pagination
.
is
Visible
?
80
:
0
}
items=
{
data
.
items
}
items=
{
data
.
items
}
totalSupply=
{
data
.
total_supply
}
totalSupply=
{
data
.
total_supply
}
pageStartIndex=
{
pageStartIndex
}
pageStartIndex=
{
pageStartIndex
}
...
...
ui/pages/Block.tsx
View file @
f33a23c7
import
{
useRouter
}
from
'
next/router
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
PaginationParams
}
from
'
ui/shared/pagination/types
'
;
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
appConfig
from
'
configs/app/config
'
;
import
appConfig
from
'
configs/app/config
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
{
useAppContext
}
from
'
lib/contexts/app
'
;
import
{
useAppContext
}
from
'
lib/contexts/app
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
{
BLOCK
}
from
'
stubs/block
'
;
import
{
BLOCK
}
from
'
stubs/block
'
;
import
{
TX
}
from
'
stubs/tx
'
;
import
{
TX
}
from
'
stubs/tx
'
;
...
@@ -18,8 +18,8 @@ import BlockWithdrawals from 'ui/block/BlockWithdrawals';
...
@@ -18,8 +18,8 @@ import BlockWithdrawals from 'ui/block/BlockWithdrawals';
import
TextAd
from
'
ui/shared/ad/TextAd
'
;
import
TextAd
from
'
ui/shared/ad/TextAd
'
;
import
NetworkExplorers
from
'
ui/shared/NetworkExplorers
'
;
import
NetworkExplorers
from
'
ui/shared/NetworkExplorers
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared
/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination
/Pagination
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
TabsSkeleton
from
'
ui/shared/Tabs/TabsSkeleton
'
;
import
TabsSkeleton
from
'
ui/shared/Tabs/TabsSkeleton
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
...
@@ -87,8 +87,8 @@ const BlockPageContent = () => {
...
@@ -87,8 +87,8 @@ const BlockPageContent = () => {
].
filter
(
Boolean
)),
[
blockQuery
,
blockTxsQuery
,
blockWithdrawalsQuery
]);
].
filter
(
Boolean
)),
[
blockQuery
,
blockTxsQuery
,
blockWithdrawalsQuery
]);
const
hasPagination
=
!
isMobile
&&
(
const
hasPagination
=
!
isMobile
&&
(
(
tab
===
'
txs
'
&&
blockTxsQuery
.
isPagination
Visible
)
||
(
tab
===
'
txs
'
&&
blockTxsQuery
.
pagination
.
is
Visible
)
||
(
tab
===
'
withdrawals
'
&&
blockWithdrawalsQuery
.
isPagination
Visible
)
(
tab
===
'
withdrawals
'
&&
blockWithdrawalsQuery
.
pagination
.
is
Visible
)
);
);
let
pagination
;
let
pagination
;
...
@@ -124,7 +124,7 @@ const BlockPageContent = () => {
...
@@ -124,7 +124,7 @@ const BlockPageContent = () => {
<
RoutedTabs
<
RoutedTabs
tabs=
{
tabs
}
tabs=
{
tabs
}
tabListProps=
{
isMobile
?
undefined
:
TAB_LIST_PROPS
}
tabListProps=
{
isMobile
?
undefined
:
TAB_LIST_PROPS
}
rightSlot=
{
hasPagination
?
<
Pagination
{
...
(
pagination
as
PaginationP
rop
s
)
}
/>
:
null
}
rightSlot=
{
hasPagination
?
<
Pagination
{
...
(
pagination
as
PaginationP
aram
s
)
}
/>
:
null
}
stickyEnabled=
{
hasPagination
}
stickyEnabled=
{
hasPagination
}
/>
/>
)
}
)
}
...
...
ui/pages/Blocks.tsx
View file @
f33a23c7
...
@@ -4,13 +4,13 @@ import React from 'react';
...
@@ -4,13 +4,13 @@ import React from 'react';
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
{
BLOCK
}
from
'
stubs/block
'
;
import
{
BLOCK
}
from
'
stubs/block
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
BlocksContent
from
'
ui/blocks/BlocksContent
'
;
import
BlocksContent
from
'
ui/blocks/BlocksContent
'
;
import
BlocksTabSlot
from
'
ui/blocks/BlocksTabSlot
'
;
import
BlocksTabSlot
from
'
ui/blocks/BlocksTabSlot
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
const
TAB_LIST_PROPS
=
{
const
TAB_LIST_PROPS
=
{
...
@@ -58,23 +58,14 @@ const BlocksPageContent = () => {
...
@@ -58,23 +58,14 @@ const BlocksPageContent = () => {
},
},
});
});
const
{
pagination
,
isPaginationVisible
}
=
(()
=>
{
const
pagination
=
(()
=>
{
if
(
tab
===
'
reorgs
'
)
{
if
(
tab
===
'
reorgs
'
)
{
return
{
return
reorgsQuery
.
pagination
;
pagination
:
reorgsQuery
.
pagination
,
isPaginationVisible
:
reorgsQuery
.
isPaginationVisible
,
};
}
}
if
(
tab
===
'
uncles
'
)
{
if
(
tab
===
'
uncles
'
)
{
return
{
return
unclesQuery
.
pagination
;
pagination
:
unclesQuery
.
pagination
,
isPaginationVisible
:
unclesQuery
.
isPaginationVisible
,
};
}
}
return
{
return
blocksQuery
.
pagination
;
pagination
:
blocksQuery
.
pagination
,
isPaginationVisible
:
blocksQuery
.
isPaginationVisible
,
};
})();
})();
const
tabs
:
Array
<
RoutedTab
>
=
[
const
tabs
:
Array
<
RoutedTab
>
=
[
...
@@ -89,7 +80,7 @@ const BlocksPageContent = () => {
...
@@ -89,7 +80,7 @@ const BlocksPageContent = () => {
<
RoutedTabs
<
RoutedTabs
tabs=
{
tabs
}
tabs=
{
tabs
}
tabListProps=
{
isMobile
?
undefined
:
TAB_LIST_PROPS
}
tabListProps=
{
isMobile
?
undefined
:
TAB_LIST_PROPS
}
rightSlot=
{
<
BlocksTabSlot
pagination=
{
pagination
}
isPaginationVisible=
{
isPaginationVisible
}
/>
}
rightSlot=
{
<
BlocksTabSlot
pagination=
{
pagination
}
/>
}
stickyEnabled=
{
!
isMobile
}
stickyEnabled=
{
!
isMobile
}
/>
/>
</>
</>
...
...
ui/pages/L2Deposits.tsx
View file @
f33a23c7
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton } from '@chakra-ui/react';
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton } from '@chakra-ui/react';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
rightLineArrow
,
nbsp
}
from
'
lib/html-entities
'
;
import
{
rightLineArrow
,
nbsp
}
from
'
lib/html-entities
'
;
import
{
L2_DEPOSIT_ITEM
}
from
'
stubs/L2
'
;
import
{
L2_DEPOSIT_ITEM
}
from
'
stubs/L2
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
...
@@ -11,10 +10,11 @@ import DepositsTable from 'ui/l2Deposits/DepositsTable';
...
@@ -11,10 +10,11 @@ import DepositsTable from 'ui/l2Deposits/DepositsTable';
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
const
L2Deposits
=
()
=>
{
const
L2Deposits
=
()
=>
{
const
{
data
,
isError
,
isPlaceholderData
,
isPaginationVisible
,
pagination
}
=
useQueryWithPages
({
const
{
data
,
isError
,
isPlaceholderData
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
l2_deposits
'
,
resourceName
:
'
l2_deposits
'
,
options
:
{
options
:
{
placeholderData
:
generateListStub
<
'
l2_deposits
'
>
(
placeholderData
:
generateListStub
<
'
l2_deposits
'
>
(
...
@@ -49,7 +49,7 @@ const L2Deposits = () => {
...
@@ -49,7 +49,7 @@ const L2Deposits = () => {
)))
}
)))
}
</
Show
>
</
Show
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
DepositsTable
items=
{
data
.
items
}
top=
{
isPagination
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
<
DepositsTable
items=
{
data
.
items
}
top=
{
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
</
Hide
>
</
Hide
>
</>
</>
)
:
null
;
)
:
null
;
...
@@ -78,7 +78,7 @@ const L2Deposits = () => {
...
@@ -78,7 +78,7 @@ const L2Deposits = () => {
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
{
text
}
{
text
}
</
Box
>
</
Box
>
{
isPagination
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
{
pagination
.
is
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
</
ActionBar
>
</
ActionBar
>
</>
</>
);
);
...
...
ui/pages/L2OutputRoots.tsx
View file @
f33a23c7
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton, Text } from '@chakra-ui/react';
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton, Text } from '@chakra-ui/react';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
L2_OUTPUT_ROOTS_ITEM
}
from
'
stubs/L2
'
;
import
{
L2_OUTPUT_ROOTS_ITEM
}
from
'
stubs/L2
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
OutputRootsListItem
from
'
ui/l2OutputRoots/OutputRootsListItem
'
;
import
OutputRootsListItem
from
'
ui/l2OutputRoots/OutputRootsListItem
'
;
...
@@ -10,10 +9,11 @@ import OutputRootsTable from 'ui/l2OutputRoots/OutputRootsTable';
...
@@ -10,10 +9,11 @@ import OutputRootsTable from 'ui/l2OutputRoots/OutputRootsTable';
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
const
L2OutputRoots
=
()
=>
{
const
L2OutputRoots
=
()
=>
{
const
{
data
,
isError
,
isPlaceholderData
,
isPaginationVisible
,
pagination
}
=
useQueryWithPages
({
const
{
data
,
isError
,
isPlaceholderData
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
l2_output_roots
'
,
resourceName
:
'
l2_output_roots
'
,
options
:
{
options
:
{
placeholderData
:
generateListStub
<
'
l2_output_roots
'
>
(
placeholderData
:
generateListStub
<
'
l2_output_roots
'
>
(
...
@@ -47,7 +47,7 @@ const L2OutputRoots = () => {
...
@@ -47,7 +47,7 @@ const L2OutputRoots = () => {
)))
}
)))
}
</
Show
>
</
Show
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
OutputRootsTable
items=
{
data
.
items
}
top=
{
isPagination
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
<
OutputRootsTable
items=
{
data
.
items
}
top=
{
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
</
Hide
>
</
Hide
>
</>
</>
)
:
null
;
)
:
null
;
...
@@ -76,7 +76,7 @@ const L2OutputRoots = () => {
...
@@ -76,7 +76,7 @@ const L2OutputRoots = () => {
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
{
text
}
{
text
}
</
Box
>
</
Box
>
{
isPagination
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
{
pagination
.
is
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
</
ActionBar
>
</
ActionBar
>
</>
</>
);
);
...
...
ui/pages/L2TxnBatches.tsx
View file @
f33a23c7
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton, Text } from '@chakra-ui/react';
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton, Text } from '@chakra-ui/react';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
nbsp
}
from
'
lib/html-entities
'
;
import
{
nbsp
}
from
'
lib/html-entities
'
;
import
{
L2_TXN_BATCHES_ITEM
}
from
'
stubs/L2
'
;
import
{
L2_TXN_BATCHES_ITEM
}
from
'
stubs/L2
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
...
@@ -11,10 +10,11 @@ import TxnBatchesTable from 'ui/l2TxnBatches/TxnBatchesTable';
...
@@ -11,10 +10,11 @@ import TxnBatchesTable from 'ui/l2TxnBatches/TxnBatchesTable';
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
const
L2TxnBatches
=
()
=>
{
const
L2TxnBatches
=
()
=>
{
const
{
data
,
isError
,
isPlaceholderData
,
isPaginationVisible
,
pagination
}
=
useQueryWithPages
({
const
{
data
,
isError
,
isPlaceholderData
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
l2_txn_batches
'
,
resourceName
:
'
l2_txn_batches
'
,
options
:
{
options
:
{
placeholderData
:
generateListStub
<
'
l2_txn_batches
'
>
(
placeholderData
:
generateListStub
<
'
l2_txn_batches
'
>
(
...
@@ -47,7 +47,7 @@ const L2TxnBatches = () => {
...
@@ -47,7 +47,7 @@ const L2TxnBatches = () => {
/>
/>
)))
}
)))
}
</
Show
>
</
Show
>
<
Hide
below=
"lg"
ssr=
{
false
}
><
TxnBatchesTable
items=
{
data
.
items
}
top=
{
isPagination
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/></
Hide
>
<
Hide
below=
"lg"
ssr=
{
false
}
><
TxnBatchesTable
items=
{
data
.
items
}
top=
{
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/></
Hide
>
</>
</>
)
:
null
;
)
:
null
;
...
@@ -75,7 +75,7 @@ const L2TxnBatches = () => {
...
@@ -75,7 +75,7 @@ const L2TxnBatches = () => {
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
{
text
}
{
text
}
</
Box
>
</
Box
>
{
isPagination
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
{
pagination
.
is
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
</
ActionBar
>
</
ActionBar
>
</>
</>
);
);
...
...
ui/pages/L2Withdrawals.tsx
View file @
f33a23c7
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton } from '@chakra-ui/react';
...
@@ -2,7 +2,6 @@ import { Box, Hide, Show, Skeleton } from '@chakra-ui/react';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
rightLineArrow
,
nbsp
}
from
'
lib/html-entities
'
;
import
{
rightLineArrow
,
nbsp
}
from
'
lib/html-entities
'
;
import
{
L2_WITHDRAWAL_ITEM
}
from
'
stubs/L2
'
;
import
{
L2_WITHDRAWAL_ITEM
}
from
'
stubs/L2
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
...
@@ -11,10 +10,11 @@ import WithdrawalsTable from 'ui/l2Withdrawals/WithdrawalsTable';
...
@@ -11,10 +10,11 @@ import WithdrawalsTable from 'ui/l2Withdrawals/WithdrawalsTable';
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
const
L2Withdrawals
=
()
=>
{
const
L2Withdrawals
=
()
=>
{
const
{
data
,
isError
,
isPlaceholderData
,
isPaginationVisible
,
pagination
}
=
useQueryWithPages
({
const
{
data
,
isError
,
isPlaceholderData
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
l2_withdrawals
'
,
resourceName
:
'
l2_withdrawals
'
,
options
:
{
options
:
{
placeholderData
:
generateListStub
<
'
l2_withdrawals
'
>
(
placeholderData
:
generateListStub
<
'
l2_withdrawals
'
>
(
...
@@ -46,7 +46,7 @@ const L2Withdrawals = () => {
...
@@ -46,7 +46,7 @@ const L2Withdrawals = () => {
/>
/>
)))
}
</
Show
>
)))
}
</
Show
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
WithdrawalsTable
items=
{
data
.
items
}
top=
{
isPagination
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
<
WithdrawalsTable
items=
{
data
.
items
}
top=
{
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
</
Hide
>
</
Hide
>
</>
</>
)
:
null
;
)
:
null
;
...
@@ -75,7 +75,7 @@ const L2Withdrawals = () => {
...
@@ -75,7 +75,7 @@ const L2Withdrawals = () => {
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
<
Box
display=
{
{
base
:
'
none
'
,
lg
:
'
block
'
}
}
>
{
text
}
{
text
}
</
Box
>
</
Box
>
{
isPagination
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
{
pagination
.
is
Visible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
</
ActionBar
>
</
ActionBar
>
</>
</>
);
);
...
...
ui/pages/SearchResults.tsx
View file @
f33a23c7
...
@@ -10,7 +10,7 @@ import ContentLoader from 'ui/shared/ContentLoader';
...
@@ -10,7 +10,7 @@ import ContentLoader from 'ui/shared/ContentLoader';
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
Page
from
'
ui/shared/Page/Page
'
;
import
Page
from
'
ui/shared/Page/Page
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/
pagination/
Pagination
'
;
import
Thead
from
'
ui/shared/TheadSticky
'
;
import
Thead
from
'
ui/shared/TheadSticky
'
;
import
Header
from
'
ui/snippets/header/Header
'
;
import
Header
from
'
ui/snippets/header/Header
'
;
import
SearchBarInput
from
'
ui/snippets/searchBar/SearchBarInput
'
;
import
SearchBarInput
from
'
ui/snippets/searchBar/SearchBarInput
'
;
...
@@ -19,7 +19,7 @@ import useSearchQuery from 'ui/snippets/searchBar/useSearchQuery';
...
@@ -19,7 +19,7 @@ import useSearchQuery from 'ui/snippets/searchBar/useSearchQuery';
const
SearchResultsPageContent
=
()
=>
{
const
SearchResultsPageContent
=
()
=>
{
const
router
=
useRouter
();
const
router
=
useRouter
();
const
{
query
,
redirectCheckQuery
,
searchTerm
,
debouncedSearchTerm
,
handleSearchTermChange
}
=
useSearchQuery
(
true
);
const
{
query
,
redirectCheckQuery
,
searchTerm
,
debouncedSearchTerm
,
handleSearchTermChange
}
=
useSearchQuery
(
true
);
const
{
data
,
isError
,
isPlaceholderData
,
pagination
,
isPaginationVisible
}
=
query
;
const
{
data
,
isError
,
isPlaceholderData
,
pagination
}
=
query
;
const
[
showContent
,
setShowContent
]
=
React
.
useState
(
false
);
const
[
showContent
,
setShowContent
]
=
React
.
useState
(
false
);
React
.
useEffect
(()
=>
{
React
.
useEffect
(()
=>
{
...
@@ -70,7 +70,7 @@ const SearchResultsPageContent = () => {
...
@@ -70,7 +70,7 @@ const SearchResultsPageContent = () => {
</
Show
>
</
Show
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Table
variant=
"simple"
size=
"md"
fontWeight=
{
500
}
>
<
Table
variant=
"simple"
size=
"md"
fontWeight=
{
500
}
>
<
Thead
top=
{
isPagination
Visible
?
80
:
0
}
>
<
Thead
top=
{
pagination
.
is
Visible
?
80
:
0
}
>
<
Tr
>
<
Tr
>
<
Th
width=
"50%"
>
Search Result
</
Th
>
<
Th
width=
"50%"
>
Search Result
</
Th
>
<
Th
width=
"50%"
/>
<
Th
width=
"50%"
/>
...
@@ -99,10 +99,10 @@ const SearchResultsPageContent = () => {
...
@@ -99,10 +99,10 @@ const SearchResultsPageContent = () => {
}
}
const
text
=
isPlaceholderData
&&
pagination
.
page
===
1
?
(
const
text
=
isPlaceholderData
&&
pagination
.
page
===
1
?
(
<
Skeleton
h=
{
6
}
w=
"280px"
borderRadius=
"full"
mb=
{
isPagination
Visible
?
0
:
6
}
/>
<
Skeleton
h=
{
6
}
w=
"280px"
borderRadius=
"full"
mb=
{
pagination
.
is
Visible
?
0
:
6
}
/>
)
:
(
)
:
(
(
(
<
Box
mb=
{
isPagination
Visible
?
0
:
6
}
lineHeight=
"32px"
>
<
Box
mb=
{
pagination
.
is
Visible
?
0
:
6
}
lineHeight=
"32px"
>
<
span
>
Found
</
span
>
<
span
>
Found
</
span
>
<
chakra
.
span
fontWeight=
{
700
}
>
<
chakra
.
span
fontWeight=
{
700
}
>
{
pagination
.
page
>
1
?
50
:
data
?.
items
.
length
}{
data
?.
next_page_params
||
pagination
.
page
>
1
?
'
+
'
:
''
}
{
pagination
.
page
>
1
?
50
:
data
?.
items
.
length
}{
data
?.
next_page_params
||
pagination
.
page
>
1
?
'
+
'
:
''
}
...
@@ -113,7 +113,7 @@ const SearchResultsPageContent = () => {
...
@@ -113,7 +113,7 @@ const SearchResultsPageContent = () => {
)
)
);
);
if
(
!
isPagination
Visible
)
{
if
(
!
pagination
.
is
Visible
)
{
return
text
;
return
text
;
}
}
...
...
ui/pages/Token.tsx
View file @
f33a23c7
...
@@ -5,6 +5,7 @@ import React, { useEffect } from 'react';
...
@@ -5,6 +5,7 @@ import React, { useEffect } from 'react';
import
type
{
SocketMessage
}
from
'
lib/socket/types
'
;
import
type
{
SocketMessage
}
from
'
lib/socket/types
'
;
import
type
{
TokenInfo
}
from
'
types/api/token
'
;
import
type
{
TokenInfo
}
from
'
types/api/token
'
;
import
type
{
PaginationParams
}
from
'
ui/shared/pagination/types
'
;
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
appConfig
from
'
configs/app/config
'
;
import
appConfig
from
'
configs/app/config
'
;
...
@@ -13,7 +14,6 @@ import useApiQuery, { getResourceKey } from 'lib/api/useApiQuery';
...
@@ -13,7 +14,6 @@ import useApiQuery, { getResourceKey } from 'lib/api/useApiQuery';
import
{
useAppContext
}
from
'
lib/contexts/app
'
;
import
{
useAppContext
}
from
'
lib/contexts/app
'
;
import
useContractTabs
from
'
lib/hooks/useContractTabs
'
;
import
useContractTabs
from
'
lib/hooks/useContractTabs
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketChannel
from
'
lib/socket/useSocketChannel
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
...
@@ -26,8 +26,8 @@ import TextAd from 'ui/shared/ad/TextAd';
...
@@ -26,8 +26,8 @@ import TextAd from 'ui/shared/ad/TextAd';
import
EntityTags
from
'
ui/shared/EntityTags
'
;
import
EntityTags
from
'
ui/shared/EntityTags
'
;
import
NetworkExplorers
from
'
ui/shared/NetworkExplorers
'
;
import
NetworkExplorers
from
'
ui/shared/NetworkExplorers
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared
/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination
/Pagination
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
TabsSkeleton
from
'
ui/shared/Tabs/TabsSkeleton
'
;
import
TabsSkeleton
from
'
ui/shared/Tabs/TabsSkeleton
'
;
import
TokenLogo
from
'
ui/shared/TokenLogo
'
;
import
TokenLogo
from
'
ui/shared/TokenLogo
'
;
...
@@ -183,21 +183,17 @@ const TokenPageContent = () => {
...
@@ -183,21 +183,17 @@ const TokenPageContent = () => {
} : undefined,
} : undefined,
].filter(Boolean);
].filter(Boolean);
let hasPagination;
let pagination: PaginationParams | undefined;
let pagination: PaginationProps | undefined;
if (!router.query.tab || router.query.tab === 'token_transfers') {
if (!router.query.tab || router.query.tab === 'token_transfers') {
hasPagination = transfersQuery.isPaginationVisible;
pagination = transfersQuery.pagination;
pagination = transfersQuery.pagination;
}
}
if (router.query.tab === 'holders') {
if (router.query.tab === 'holders') {
hasPagination = holdersQuery.isPaginationVisible;
pagination = holdersQuery.pagination;
pagination = holdersQuery.pagination;
}
}
if (router.query.tab === 'inventory') {
if (router.query.tab === 'inventory') {
hasPagination = inventoryQuery.isPaginationVisible;
pagination = inventoryQuery.pagination;
pagination = inventoryQuery.pagination;
}
}
...
@@ -280,7 +276,7 @@ const TokenPageContent = () => {
...
@@ -280,7 +276,7 @@ const TokenPageContent = () => {
<RoutedTabs
<RoutedTabs
tabs={ tabs }
tabs={ tabs }
tabListProps={ tabListProps }
tabListProps={ tabListProps }
rightSlot={ !isMobile &&
hasPagination && pagination
? <Pagination { ...pagination }/> : null }
rightSlot={ !isMobile &&
pagination?.isVisible
? <Pagination { ...pagination }/> : null }
stickyEnabled={ !isMobile }
stickyEnabled={ !isMobile }
/>
/>
) }
) }
...
...
ui/pages/TokenInstance.tsx
View file @
f33a23c7
...
@@ -2,13 +2,13 @@ import { Box, Icon, Skeleton } from '@chakra-ui/react';
...
@@ -2,13 +2,13 @@ import { Box, Icon, Skeleton } from '@chakra-ui/react';
import
{
useRouter
}
from
'
next/router
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
PaginationParams
}
from
'
ui/shared/pagination/types
'
;
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
type
{
RoutedTab
}
from
'
ui/shared/Tabs/types
'
;
import
nftIcon
from
'
icons/nft_shield.svg
'
;
import
nftIcon
from
'
icons/nft_shield.svg
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
{
useAppContext
}
from
'
lib/contexts/app
'
;
import
{
useAppContext
}
from
'
lib/contexts/app
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
TOKEN_INSTANCE
}
from
'
stubs/token
'
;
import
{
TOKEN_INSTANCE
}
from
'
stubs/token
'
;
import
*
as
tokenStubs
from
'
stubs/token
'
;
import
*
as
tokenStubs
from
'
stubs/token
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
...
@@ -17,8 +17,8 @@ import AddressHeadingInfo from 'ui/shared/AddressHeadingInfo';
...
@@ -17,8 +17,8 @@ import AddressHeadingInfo from 'ui/shared/AddressHeadingInfo';
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
Tag
from
'
ui/shared/chakra/Tag
'
;
import
LinkExternal
from
'
ui/shared/LinkExternal
'
;
import
LinkExternal
from
'
ui/shared/LinkExternal
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/
pagination/
Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
TabsSkeleton
from
'
ui/shared/Tabs/TabsSkeleton
'
;
import
TabsSkeleton
from
'
ui/shared/Tabs/TabsSkeleton
'
;
import
TokenHolders
from
'
ui/token/TokenHolders/TokenHolders
'
;
import
TokenHolders
from
'
ui/token/TokenHolders/TokenHolders
'
;
...
@@ -144,15 +144,12 @@ const TokenInstanceContent = () => {
...
@@ -144,15 +144,12 @@ const TokenInstanceContent = () => {
}
}
})();
})();
let
pagination
:
PaginationProps
|
undefined
;
let
pagination
:
PaginationParams
|
undefined
;
let
isPaginationVisible
;
if
(
tab
===
'
token_transfers
'
)
{
if
(
tab
===
'
token_transfers
'
)
{
pagination
=
transfersQuery
.
pagination
;
pagination
=
transfersQuery
.
pagination
;
isPaginationVisible
=
transfersQuery
.
isPaginationVisible
;
}
else
if
(
tab
===
'
holders
'
)
{
}
else
if
(
tab
===
'
holders
'
)
{
pagination
=
holdersQuery
.
pagination
;
pagination
=
holdersQuery
.
pagination
;
isPaginationVisible
=
holdersQuery
.
isPaginationVisible
;
}
}
return
(
return
(
...
@@ -179,7 +176,7 @@ const TokenInstanceContent = () => {
...
@@ -179,7 +176,7 @@ const TokenInstanceContent = () => {
<
RoutedTabs
<
RoutedTabs
tabs=
{
tabs
}
tabs=
{
tabs
}
tabListProps=
{
isMobile
?
{
mt
:
8
}
:
{
mt
:
3
,
py
:
5
,
marginBottom
:
0
}
}
tabListProps=
{
isMobile
?
{
mt
:
8
}
:
{
mt
:
3
,
py
:
5
,
marginBottom
:
0
}
}
rightSlot=
{
!
isMobile
&&
isPaginationVisible
&&
pagination
?
<
Pagination
{
...
pagination
}
/>
:
null
}
rightSlot=
{
!
isMobile
&&
pagination
?.
isVisible
?
<
Pagination
{
...
pagination
}
/>
:
null
}
stickyEnabled=
{
!
isMobile
}
stickyEnabled=
{
!
isMobile
}
/>
/>
)
}
)
}
...
...
ui/pages/Transactions.tsx
View file @
f33a23c7
...
@@ -7,13 +7,13 @@ import appConfig from 'configs/app/config';
...
@@ -7,13 +7,13 @@ import appConfig from 'configs/app/config';
import
useHasAccount
from
'
lib/hooks/useHasAccount
'
;
import
useHasAccount
from
'
lib/hooks/useHasAccount
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useNewTxsSocket
from
'
lib/hooks/useNewTxsSocket
'
;
import
useNewTxsSocket
from
'
lib/hooks/useNewTxsSocket
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
TX
}
from
'
stubs/tx
'
;
import
{
TX
}
from
'
stubs/tx
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
RoutedTabs
from
'
ui/shared/Tabs/RoutedTabs
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
import
TxsTabSlot
from
'
ui/txs/TxsTabSlot
'
;
import
TxsWatchlist
from
'
ui/txs/TxsWatchlist
'
;
import
TxsWatchlist
from
'
ui/txs/TxsWatchlist
'
;
const
TAB_LIST_PROPS
=
{
const
TAB_LIST_PROPS
=
{
...
@@ -81,6 +81,8 @@ const Transactions = () => {
...
@@ -81,6 +81,8 @@ const Transactions = () => {
}
:
undefined
,
}
:
undefined
,
].
filter
(
Boolean
);
].
filter
(
Boolean
);
const
pagination
=
router
.
query
.
tab
===
'
watchlist
'
?
txsWatchlistQuery
.
pagination
:
txsQuery
.
pagination
;
return
(
return
(
<>
<>
<
PageTitle
title=
"Transactions"
withTextAd
/>
<
PageTitle
title=
"Transactions"
withTextAd
/>
...
@@ -88,10 +90,7 @@ const Transactions = () => {
...
@@ -88,10 +90,7 @@ const Transactions = () => {
tabs=
{
tabs
}
tabs=
{
tabs
}
tabListProps=
{
isMobile
?
undefined
:
TAB_LIST_PROPS
}
tabListProps=
{
isMobile
?
undefined
:
TAB_LIST_PROPS
}
rightSlot=
{
(
rightSlot=
{
(
<
TxsTabSlot
pagination
.
isVisible
&&
!
isMobile
?
<
Pagination
my=
{
1
}
{
...
pagination
}
/>
:
null
pagination=
{
router
.
query
.
tab
===
'
watchlist
'
?
txsWatchlistQuery
.
pagination
:
txsQuery
.
pagination
}
isPaginationVisible=
{
txsQuery
.
isPaginationVisible
&&
!
isMobile
}
/>
)
}
)
}
stickyEnabled=
{
!
isMobile
}
stickyEnabled=
{
!
isMobile
}
/>
/>
...
...
ui/pages/VerifiedContracts.tsx
View file @
f33a23c7
...
@@ -6,7 +6,6 @@ import type { VerifiedContractsFilters } from 'types/api/contracts';
...
@@ -6,7 +6,6 @@ import type { VerifiedContractsFilters } from 'types/api/contracts';
import
useDebounce
from
'
lib/hooks/useDebounce
'
;
import
useDebounce
from
'
lib/hooks/useDebounce
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
{
VERIFIED_CONTRACT_INFO
}
from
'
stubs/contract
'
;
import
{
VERIFIED_CONTRACT_INFO
}
from
'
stubs/contract
'
;
...
@@ -15,7 +14,8 @@ import ActionBar from 'ui/shared/ActionBar';
...
@@ -15,7 +14,8 @@ import ActionBar from 'ui/shared/ActionBar';
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
FilterInput
from
'
ui/shared/filters/FilterInput
'
;
import
FilterInput
from
'
ui/shared/filters/FilterInput
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
Sort
from
'
ui/shared/sort/Sort
'
;
import
Sort
from
'
ui/shared/sort/Sort
'
;
import
type
{
SortField
,
Sort
as
TSort
}
from
'
ui/verifiedContracts/utils
'
;
import
type
{
SortField
,
Sort
as
TSort
}
from
'
ui/verifiedContracts/utils
'
;
import
{
SORT_OPTIONS
,
sortFn
,
getNextSortValue
}
from
'
ui/verifiedContracts/utils
'
;
import
{
SORT_OPTIONS
,
sortFn
,
getNextSortValue
}
from
'
ui/verifiedContracts/utils
'
;
...
@@ -34,7 +34,7 @@ const VerifiedContracts = () => {
...
@@ -34,7 +34,7 @@ const VerifiedContracts = () => {
const
isMobile
=
useIsMobile
();
const
isMobile
=
useIsMobile
();
const
{
isError
,
isPlaceholderData
,
data
,
isPaginationVisible
,
pagination
,
onFilterChange
}
=
useQueryWithPages
({
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
onFilterChange
}
=
useQueryWithPages
({
resourceName
:
'
verified_contracts
'
,
resourceName
:
'
verified_contracts
'
,
filters
:
{
q
:
debouncedSearchTerm
,
filter
:
type
},
filters
:
{
q
:
debouncedSearchTerm
,
filter
:
type
},
options
:
{
options
:
{
...
@@ -104,13 +104,13 @@ const VerifiedContracts = () => {
...
@@ -104,13 +104,13 @@ const VerifiedContracts = () => {
{
sortButton
}
{
sortButton
}
{
filterInput
}
{
filterInput
}
</
HStack
>
</
HStack
>
{
(
!
isMobile
||
isPagination
Visible
)
&&
(
{
(
!
isMobile
||
pagination
.
is
Visible
)
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
HStack
spacing=
{
3
}
display=
{
{
base
:
'
none
'
,
lg
:
'
flex
'
}
}
>
<
HStack
spacing=
{
3
}
display=
{
{
base
:
'
none
'
,
lg
:
'
flex
'
}
}
>
{
typeFilter
}
{
typeFilter
}
{
filterInput
}
{
filterInput
}
</
HStack
>
</
HStack
>
{
isPaginationVisible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
)
}
)
}
</>
</>
...
...
ui/pages/Withdrawals.tsx
View file @
f33a23c7
...
@@ -5,20 +5,20 @@ import React from 'react';
...
@@ -5,20 +5,20 @@ import React from 'react';
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
getCurrencyValue
from
'
lib/getCurrencyValue
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
WITHDRAWAL
}
from
'
stubs/withdrawals
'
;
import
{
WITHDRAWAL
}
from
'
stubs/withdrawals
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
PageTitle
from
'
ui/shared/Page/PageTitle
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
WithdrawalsListItem
from
'
ui/withdrawals/WithdrawalsListItem
'
;
import
WithdrawalsListItem
from
'
ui/withdrawals/WithdrawalsListItem
'
;
import
WithdrawalsTable
from
'
ui/withdrawals/WithdrawalsTable
'
;
import
WithdrawalsTable
from
'
ui/withdrawals/WithdrawalsTable
'
;
const
Withdrawals
=
()
=>
{
const
Withdrawals
=
()
=>
{
const
isMobile
=
useIsMobile
();
const
isMobile
=
useIsMobile
();
const
{
data
,
isError
,
isPlaceholderData
,
isPaginationVisible
,
pagination
}
=
useQueryWithPages
({
const
{
data
,
isError
,
isPlaceholderData
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
withdrawals
'
,
resourceName
:
'
withdrawals
'
,
options
:
{
options
:
{
placeholderData
:
generateListStub
<
'
withdrawals
'
>
(
WITHDRAWAL
,
50
,
{
next_page_params
:
{
placeholderData
:
generateListStub
<
'
withdrawals
'
>
(
WITHDRAWAL
,
50
,
{
next_page_params
:
{
...
@@ -43,7 +43,7 @@ const Withdrawals = () => {
...
@@ -43,7 +43,7 @@ const Withdrawals = () => {
)))
}
)))
}
</
Show
>
</
Show
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
WithdrawalsTable
items=
{
data
.
items
}
view=
"list"
top=
{
isPagination
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
<
WithdrawalsTable
items=
{
data
.
items
}
view=
"list"
top=
{
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
/>
</
Hide
>
</
Hide
>
</>
</>
)
:
null
;
)
:
null
;
...
@@ -54,8 +54,8 @@ const Withdrawals = () => {
...
@@ -54,8 +54,8 @@ const Withdrawals = () => {
<
Skeleton
<
Skeleton
w=
{
{
base
:
'
100%
'
,
lg
:
'
320px
'
}
}
w=
{
{
base
:
'
100%
'
,
lg
:
'
320px
'
}
}
h=
"24px"
h=
"24px"
mb=
{
{
base
:
6
,
lg
:
isPagination
Visible
?
0
:
7
}
}
mb=
{
{
base
:
6
,
lg
:
pagination
.
is
Visible
?
0
:
7
}
}
mt=
{
{
base
:
0
,
lg
:
isPagination
Visible
?
0
:
7
}
}
mt=
{
{
base
:
0
,
lg
:
pagination
.
is
Visible
?
0
:
7
}
}
/>
/>
);
);
}
}
...
@@ -66,7 +66,7 @@ const Withdrawals = () => {
...
@@ -66,7 +66,7 @@ const Withdrawals = () => {
const
{
valueStr
}
=
getCurrencyValue
({
value
:
countersQuery
.
data
.
withdrawal_sum
});
const
{
valueStr
}
=
getCurrencyValue
({
value
:
countersQuery
.
data
.
withdrawal_sum
});
return
(
return
(
<
Text
mb=
{
{
base
:
6
,
lg
:
isPagination
Visible
?
0
:
6
}
}
lineHeight=
{
{
base
:
'
24px
'
,
lg
:
'
32px
'
}
}
>
<
Text
mb=
{
{
base
:
6
,
lg
:
pagination
.
is
Visible
?
0
:
6
}
}
lineHeight=
{
{
base
:
'
24px
'
,
lg
:
'
32px
'
}
}
>
{
BigNumber
(
countersQuery
.
data
.
withdrawal_count
).
toFormat
()
}
withdrawals processed and
{
valueStr
}
ETH withdrawn
{
BigNumber
(
countersQuery
.
data
.
withdrawal_count
).
toFormat
()
}
withdrawals processed and
{
valueStr
}
ETH withdrawn
</
Text
>
</
Text
>
);
);
...
@@ -74,8 +74,8 @@ const Withdrawals = () => {
...
@@ -74,8 +74,8 @@ const Withdrawals = () => {
const
actionBar
=
(
const
actionBar
=
(
<>
<>
{
(
isMobile
||
!
isPagination
Visible
)
&&
text
}
{
(
isMobile
||
!
pagination
.
is
Visible
)
&&
text
}
{
isPagination
Visible
&&
(
{
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Flex
alignItems=
"center"
justifyContent=
"space-between"
w=
"100%"
>
<
Flex
alignItems=
"center"
justifyContent=
"space-between"
w=
"100%"
>
{
!
isMobile
&&
text
}
{
!
isMobile
&&
text
}
...
...
ui/shared/Pagination.tsx
→
ui/shared/
pagination/
Pagination.tsx
View file @
f33a23c7
import
{
Button
,
Skeleton
,
Flex
,
Icon
,
IconButton
,
chakra
}
from
'
@chakra-ui/react
'
;
import
{
Button
,
Skeleton
,
Flex
,
Icon
,
IconButton
,
chakra
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
PaginationParams
}
from
'
./types
'
;
import
arrowIcon
from
'
icons/arrows/east-mini.svg
'
;
import
arrowIcon
from
'
icons/arrows/east-mini.svg
'
;
export
type
Props
=
{
interface
Props
extends
PaginationParams
{
page
:
number
;
onNextPageClick
:
()
=>
void
;
onPrevPageClick
:
()
=>
void
;
resetPage
:
()
=>
void
;
hasNextPage
:
boolean
;
className
?:
string
;
className
?:
string
;
canGoBackwards
:
boolean
;
isLoading
?:
boolean
;
}
}
const
Pagination
=
({
page
,
onNextPageClick
,
onPrevPageClick
,
resetPage
,
hasNextPage
,
className
,
canGoBackwards
,
isLoading
}:
Props
)
=>
{
const
Pagination
=
({
page
,
onNextPageClick
,
onPrevPageClick
,
resetPage
,
hasNextPage
,
className
,
canGoBackwards
,
isLoading
,
isVisible
}:
Props
)
=>
{
if
(
!
isVisible
)
{
return
null
;
}
return
(
return
(
<
Flex
<
Flex
...
...
ui/shared/pagination/types.ts
0 → 100644
View file @
f33a23c7
export
interface
PaginationParams
{
page
:
number
;
onNextPageClick
:
()
=>
void
;
onPrevPageClick
:
()
=>
void
;
resetPage
:
()
=>
void
;
hasNextPage
:
boolean
;
canGoBackwards
:
boolean
;
isLoading
:
boolean
;
isVisible
:
boolean
;
}
lib/hooks
/useQueryWithPages.test.tsx
→
ui/shared/pagination
/useQueryWithPages.test.tsx
View file @
f33a23c7
...
@@ -29,6 +29,7 @@ it('returns correct data if there is only one page', async() => {
...
@@ -29,6 +29,7 @@ it('returns correct data if there is only one page', async() => {
canGoBackwards
:
true
,
canGoBackwards
:
true
,
hasNextPage
:
false
,
hasNextPage
:
false
,
isLoading
:
false
,
isLoading
:
false
,
isVisible
:
true
,
});
});
});
});
...
...
lib/hooks
/useQueryWithPages.ts
→
ui/shared/pagination
/useQueryWithPages.ts
View file @
f33a23c7
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
{
useQueryClient
}
from
'
@tanstack/react-query
'
;
import
{
useQueryClient
}
from
'
@tanstack/react-query
'
;
import
omit
from
'
lodash/omit
'
;
import
omit
from
'
lodash/omit
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
,
{
useCallback
}
from
'
react
'
;
import
React
,
{
useCallback
}
from
'
react
'
;
import
{
animateScroll
}
from
'
react-scroll
'
;
import
{
animateScroll
}
from
'
react-scroll
'
;
import
type
{
PaginatedResources
,
PaginationFilters
}
from
'
lib/api/resources
'
;
import
type
{
PaginationParams
}
from
'
./types
'
;
import
type
{
PaginatedResources
,
PaginationFilters
,
ResourceError
,
ResourcePayload
}
from
'
lib/api/resources
'
;
import
{
RESOURCES
}
from
'
lib/api/resources
'
;
import
{
RESOURCES
}
from
'
lib/api/resources
'
;
import
type
{
Params
as
UseApiQueryParams
}
from
'
lib/api/useApiQuery
'
;
import
type
{
Params
as
UseApiQueryParams
}
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
...
@@ -30,13 +33,20 @@ function getPaginationParamsFromQuery(queryString: string | Array<string> | unde
...
@@ -30,13 +33,20 @@ function getPaginationParamsFromQuery(queryString: string | Array<string> | unde
return
{};
return
{};
}
}
export
type
QueryWithPagesResult
<
Resource
extends
PaginatedResources
>
=
UseQueryResult
<
ResourcePayload
<
Resource
>
,
ResourceError
<
unknown
>>
&
{
onFilterChange
:
(
filters
:
PaginationFilters
<
Resource
>
)
=>
void
;
pagination
:
PaginationParams
;
}
export
default
function
useQueryWithPages
<
Resource
extends
PaginatedResources
>
({
export
default
function
useQueryWithPages
<
Resource
extends
PaginatedResources
>
({
resourceName
,
resourceName
,
filters
,
filters
,
options
,
options
,
pathParams
,
pathParams
,
scrollRef
,
scrollRef
,
}:
Params
<
Resource
>
)
{
}:
Params
<
Resource
>
)
:
QueryWithPagesResult
<
Resource
>
{
const
resource
=
RESOURCES
[
resourceName
];
const
resource
=
RESOURCES
[
resourceName
];
const
queryClient
=
useQueryClient
();
const
queryClient
=
useQueryClient
();
const
router
=
useRouter
();
const
router
=
useRouter
();
...
@@ -154,19 +164,19 @@ export default function useQueryWithPages<Resource extends PaginatedResources>({
...
@@ -154,19 +164,19 @@ export default function useQueryWithPages<Resource extends PaginatedResources>({
},
[
router
,
resource
.
filterFields
,
scrollToTop
]);
},
[
router
,
resource
.
filterFields
,
scrollToTop
]);
const
nextPageParams
=
data
?.
next_page_params
;
const
nextPageParams
=
data
?.
next_page_params
;
const
hasNextPage
=
nextPageParams
?
Object
.
keys
(
nextPageParams
).
length
>
0
:
false
;
const
pagination
=
{
const
pagination
=
{
page
,
page
,
onNextPageClick
,
onNextPageClick
,
onPrevPageClick
,
onPrevPageClick
,
resetPage
,
resetPage
,
hasNextPage
:
nextPageParams
?
Object
.
keys
(
nextPageParams
).
length
>
0
:
false
,
hasNextPage
,
canGoBackwards
:
canGoBackwards
.
current
,
canGoBackwards
:
canGoBackwards
.
current
,
isLoading
:
queryResult
.
isPlaceholderData
&&
!
hasPagination
,
isLoading
:
queryResult
.
isPlaceholderData
&&
!
hasPagination
,
isVisible
:
hasPagination
||
(
!
queryResult
.
isLoading
&&
!
queryResult
.
isError
&&
hasNextPage
),
};
};
const
isPaginationVisible
=
hasPagination
||
(
!
queryResult
.
isLoading
&&
!
queryResult
.
isError
&&
pagination
.
hasNextPage
);
React
.
useEffect
(()
=>
{
React
.
useEffect
(()
=>
{
if
(
page
!==
1
&&
isMounted
.
current
)
{
if
(
page
!==
1
&&
isMounted
.
current
)
{
queryClient
.
cancelQueries
({
queryKey
:
[
resourceName
]
});
queryClient
.
cancelQueries
({
queryKey
:
[
resourceName
]
});
...
@@ -182,5 +192,5 @@ export default function useQueryWithPages<Resource extends PaginatedResources>({
...
@@ -182,5 +192,5 @@ export default function useQueryWithPages<Resource extends PaginatedResources>({
},
0
);
},
0
);
},
[]);
},
[]);
return
{
...
queryResult
,
pagination
,
onFilterChange
,
isPaginationVisible
};
return
{
...
queryResult
,
pagination
,
onFilterChange
};
}
}
ui/snippets/searchBar/SearchBarSuggest.tsx
View file @
f33a23c7
...
@@ -3,12 +3,12 @@ import type { UseQueryResult } from '@tanstack/react-query';
...
@@ -3,12 +3,12 @@ import type { UseQueryResult } from '@tanstack/react-query';
import
_uniqBy
from
'
lodash/uniqBy
'
;
import
_uniqBy
from
'
lodash/uniqBy
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
SearchRedirectResult
,
SearchResult
,
SearchResult
Item
}
from
'
types/api/search
'
;
import
type
{
SearchRedirectResult
,
SearchResultItem
}
from
'
types/api/search
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
TextAd
from
'
ui/shared/ad/TextAd
'
;
import
TextAd
from
'
ui/shared/ad/TextAd
'
;
import
ContentLoader
from
'
ui/shared/ContentLoader
'
;
import
ContentLoader
from
'
ui/shared/ContentLoader
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
SearchBarSuggestItem
from
'
./SearchBarSuggestItem
'
;
import
SearchBarSuggestItem
from
'
./SearchBarSuggestItem
'
;
...
@@ -31,9 +31,7 @@ const getUniqueIdentifier = (item: SearchResultItem) => {
...
@@ -31,9 +31,7 @@ const getUniqueIdentifier = (item: SearchResultItem) => {
};
};
interface
Props
{
interface
Props
{
query
:
UseQueryResult
<
SearchResult
>
&
{
query
:
QueryWithPagesResult
<
'
search
'
>
;
pagination
:
PaginationProps
;
};
redirectCheckQuery
:
UseQueryResult
<
SearchRedirectResult
>
;
redirectCheckQuery
:
UseQueryResult
<
SearchRedirectResult
>
;
searchTerm
:
string
;
searchTerm
:
string
;
onItemClick
:
(
event
:
React
.
MouseEvent
<
HTMLAnchorElement
>
)
=>
void
;
onItemClick
:
(
event
:
React
.
MouseEvent
<
HTMLAnchorElement
>
)
=>
void
;
...
...
ui/snippets/searchBar/useSearchQuery.tsx
View file @
f33a23c7
...
@@ -3,11 +3,11 @@ import React from 'react';
...
@@ -3,11 +3,11 @@ import React from 'react';
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useApiQuery
from
'
lib/api/useApiQuery
'
;
import
useDebounce
from
'
lib/hooks/useDebounce
'
;
import
useDebounce
from
'
lib/hooks/useDebounce
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
useUpdateValueEffect
from
'
lib/hooks/useUpdateValueEffect
'
;
import
useUpdateValueEffect
from
'
lib/hooks/useUpdateValueEffect
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
getQueryParamString
from
'
lib/router/getQueryParamString
'
;
import
{
SEARCH_RESULT_ITEM
,
SEARCH_RESULT_NEXT_PAGE_PARAMS
}
from
'
stubs/search
'
;
import
{
SEARCH_RESULT_ITEM
,
SEARCH_RESULT_NEXT_PAGE_PARAMS
}
from
'
stubs/search
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
export
default
function
useSearchQuery
(
isSearchPage
=
false
)
{
export
default
function
useSearchQuery
(
isSearchPage
=
false
)
{
const
router
=
useRouter
();
const
router
=
useRouter
();
...
...
ui/token/TokenHolders/TokenHolders.tsx
View file @
f33a23c7
import
{
Box
}
from
'
@chakra-ui/react
'
;
import
{
Box
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
Token
Holders
,
Token
Info
}
from
'
types/api/token
'
;
import
type
{
TokenInfo
}
from
'
types/api/token
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/
pagination/
Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TokenHoldersList
from
'
./TokenHoldersList
'
;
import
TokenHoldersList
from
'
./TokenHoldersList
'
;
import
TokenHoldersTable
from
'
./TokenHoldersTable
'
;
import
TokenHoldersTable
from
'
./TokenHoldersTable
'
;
type
Props
=
{
type
Props
=
{
token
?:
TokenInfo
;
token
?:
TokenInfo
;
holdersQuery
:
UseQueryResult
<
TokenHolders
>
&
{
holdersQuery
:
QueryWithPagesResult
<
'
token_holders
'
>
;
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
}
}
const
TokenHoldersContent
=
({
holdersQuery
,
token
}:
Props
)
=>
{
const
TokenHoldersContent
=
({
holdersQuery
,
token
}:
Props
)
=>
{
...
@@ -29,7 +25,7 @@ const TokenHoldersContent = ({ holdersQuery, token }: Props) => {
...
@@ -29,7 +25,7 @@ const TokenHoldersContent = ({ holdersQuery, token }: Props) => {
return
<
DataFetchAlert
/>;
return
<
DataFetchAlert
/>;
}
}
const
actionBar
=
isMobile
&&
holdersQuery
.
isPagination
Visible
&&
(
const
actionBar
=
isMobile
&&
holdersQuery
.
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
holdersQuery
.
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
holdersQuery
.
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
@@ -43,7 +39,7 @@ const TokenHoldersContent = ({ holdersQuery, token }: Props) => {
...
@@ -43,7 +39,7 @@ const TokenHoldersContent = ({ holdersQuery, token }: Props) => {
<
TokenHoldersTable
<
TokenHoldersTable
data=
{
items
}
data=
{
items
}
token=
{
token
}
token=
{
token
}
top=
{
holdersQuery
.
isPagination
Visible
?
80
:
0
}
top=
{
holdersQuery
.
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
holdersQuery
.
isPlaceholderData
}
isLoading=
{
holdersQuery
.
isPlaceholderData
}
/>
/>
</
Box
>
</
Box
>
...
...
ui/token/TokenInventory.pw.tsx
View file @
f33a23c7
...
@@ -19,7 +19,6 @@ test('base view +@mobile', async({ mount }) => {
...
@@ -19,7 +19,6 @@ test('base view +@mobile', async({ mount }) => {
items
:
[
tokenInstanse
,
tokenInstanse
,
tokenInstanse
],
items
:
[
tokenInstanse
,
tokenInstanse
,
tokenInstanse
],
next_page_params
:
{
unique_token
:
1
},
next_page_params
:
{
unique_token
:
1
},
},
},
isPaginationVisible
:
true
,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore:
// @ts-ignore:
pagination
:
{
page
:
1
},
pagination
:
{
page
:
1
},
...
...
ui/token/TokenInventory.tsx
View file @
f33a23c7
import
{
Grid
}
from
'
@chakra-ui/react
'
;
import
{
Grid
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
TokenInventoryResponse
}
from
'
types/api/token
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared
/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination
/Pagination
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TokenInventoryItem
from
'
./TokenInventoryItem
'
;
import
TokenInventoryItem
from
'
./TokenInventoryItem
'
;
type
Props
=
{
type
Props
=
{
inventoryQuery
:
UseQueryResult
<
TokenInventoryResponse
>
&
{
inventoryQuery
:
QueryWithPagesResult
<
'
token_inventory
'
>
;
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
}
}
const
TokenInventory
=
({
inventoryQuery
}:
Props
)
=>
{
const
TokenInventory
=
({
inventoryQuery
}:
Props
)
=>
{
const
isMobile
=
useIsMobile
();
const
isMobile
=
useIsMobile
();
const
actionBar
=
isMobile
&&
inventoryQuery
.
isPagination
Visible
&&
(
const
actionBar
=
isMobile
&&
inventoryQuery
.
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
inventoryQuery
.
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
inventoryQuery
.
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/token/TokenTransfer/TokenTransfer.pw.tsx
View file @
f33a23c7
...
@@ -19,7 +19,6 @@ test('erc20 +@mobile', async({ mount }) => {
...
@@ -19,7 +19,6 @@ test('erc20 +@mobile', async({ mount }) => {
items
:
[
tokenTransferMock
.
erc20
],
items
:
[
tokenTransferMock
.
erc20
],
next_page_params
:
null
,
next_page_params
:
null
,
},
},
isPaginationVisible
:
true
,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore:
// @ts-ignore:
pagination
:
{
page
:
1
},
pagination
:
{
page
:
1
},
...
@@ -43,7 +42,6 @@ test('erc721 +@mobile', async({ mount }) => {
...
@@ -43,7 +42,6 @@ test('erc721 +@mobile', async({ mount }) => {
items
:
[
tokenTransferMock
.
erc721
],
items
:
[
tokenTransferMock
.
erc721
],
next_page_params
:
null
,
next_page_params
:
null
,
},
},
isPaginationVisible
:
true
,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore:
// @ts-ignore:
pagination
:
{
page
:
1
},
pagination
:
{
page
:
1
},
...
@@ -72,7 +70,6 @@ test('erc1155 +@mobile', async({ mount }) => {
...
@@ -72,7 +70,6 @@ test('erc1155 +@mobile', async({ mount }) => {
],
],
next_page_params
:
null
,
next_page_params
:
null
,
},
},
isPaginationVisible
:
true
,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore:
// @ts-ignore:
pagination
:
{
page
:
1
},
pagination
:
{
page
:
1
},
...
...
ui/token/TokenTransfer/TokenTransfer.tsx
View file @
f33a23c7
import
{
Box
}
from
'
@chakra-ui/react
'
;
import
{
Box
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
{
useRouter
}
from
'
next/router
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
SocketMessage
}
from
'
lib/socket/types
'
;
import
type
{
SocketMessage
}
from
'
lib/socket/types
'
;
import
type
{
TokenInfo
}
from
'
types/api/token
'
;
import
type
{
TokenInfo
}
from
'
types/api/token
'
;
import
type
{
TokenTransferResponse
}
from
'
types/api/tokenTransfer
'
;
import
useGradualIncrement
from
'
lib/hooks/useGradualIncrement
'
;
import
useGradualIncrement
from
'
lib/hooks/useGradualIncrement
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
...
@@ -13,17 +11,14 @@ import useSocketChannel from 'lib/socket/useSocketChannel';
...
@@ -13,17 +11,14 @@ import useSocketChannel from 'lib/socket/useSocketChannel';
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
useSocketMessage
from
'
lib/socket/useSocketMessage
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/
pagination/
Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
*
as
SocketNewItemsNotice
from
'
ui/shared/SocketNewItemsNotice
'
;
import
*
as
SocketNewItemsNotice
from
'
ui/shared/SocketNewItemsNotice
'
;
import
TokenTransferList
from
'
ui/token/TokenTransfer/TokenTransferList
'
;
import
TokenTransferList
from
'
ui/token/TokenTransfer/TokenTransferList
'
;
import
TokenTransferTable
from
'
ui/token/TokenTransfer/TokenTransferTable
'
;
import
TokenTransferTable
from
'
ui/token/TokenTransfer/TokenTransferTable
'
;
type
Props
=
{
type
Props
=
{
transfersQuery
:
UseQueryResult
<
TokenTransferResponse
>
&
{
transfersQuery
:
QueryWithPagesResult
<
'
token_transfers
'
>
|
QueryWithPagesResult
<
'
token_instance_transfers
'
>
;
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
tokenId
?:
string
;
tokenId
?:
string
;
token
?:
TokenInfo
;
token
?:
TokenInfo
;
}
}
...
@@ -31,7 +26,7 @@ type Props = {
...
@@ -31,7 +26,7 @@ type Props = {
const
TokenTransfer
=
({
transfersQuery
,
tokenId
,
token
}:
Props
)
=>
{
const
TokenTransfer
=
({
transfersQuery
,
tokenId
,
token
}:
Props
)
=>
{
const
isMobile
=
useIsMobile
();
const
isMobile
=
useIsMobile
();
const
router
=
useRouter
();
const
router
=
useRouter
();
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
isPaginationVisible
}
=
transfersQuery
;
const
{
isError
,
isPlaceholderData
,
data
,
pagination
}
=
transfersQuery
;
const
[
newItemsCount
,
setNewItemsCount
]
=
useGradualIncrement
(
0
);
const
[
newItemsCount
,
setNewItemsCount
]
=
useGradualIncrement
(
0
);
const
[
socketAlert
,
setSocketAlert
]
=
React
.
useState
(
''
);
const
[
socketAlert
,
setSocketAlert
]
=
React
.
useState
(
''
);
...
@@ -66,7 +61,7 @@ const TokenTransfer = ({ transfersQuery, tokenId, token }: Props) => {
...
@@ -66,7 +61,7 @@ const TokenTransfer = ({ transfersQuery, tokenId, token }: Props) => {
<Box display={{ base: 'none', lg: 'block' }}>
<Box display={{ base: 'none', lg: 'block' }}>
<TokenTransferTable
<TokenTransferTable
data={ data?.items }
data={ data?.items }
top={
isPagination
Visible ? 80 : 0 }
top={
pagination.is
Visible ? 80 : 0 }
showSocketInfo={ pagination.page === 1 }
showSocketInfo={ pagination.page === 1 }
socketInfoAlert={ socketAlert }
socketInfoAlert={ socketAlert }
socketInfoNum={ newItemsCount }
socketInfoNum={ newItemsCount }
...
@@ -90,7 +85,7 @@ const TokenTransfer = ({ transfersQuery, tokenId, token }: Props) => {
...
@@ -90,7 +85,7 @@ const TokenTransfer = ({ transfersQuery, tokenId, token }: Props) => {
</>
</>
) : null;
) : null;
const actionBar = isMobile &&
isPagination
Visible ? (
const actionBar = isMobile &&
pagination.is
Visible ? (
<ActionBar mt={ -6 }>
<ActionBar mt={ -6 }>
<Pagination ml="auto" { ...pagination }/>
<Pagination ml="auto" { ...pagination }/>
</ActionBar>
</ActionBar>
...
...
ui/tokens/Tokens.tsx
View file @
f33a23c7
...
@@ -6,7 +6,6 @@ import type { TokenType } from 'types/api/token';
...
@@ -6,7 +6,6 @@ import type { TokenType } from 'types/api/token';
import
getFilterValuesFromQuery
from
'
lib/getFilterValuesFromQuery
'
;
import
getFilterValuesFromQuery
from
'
lib/getFilterValuesFromQuery
'
;
import
useDebounce
from
'
lib/hooks/useDebounce
'
;
import
useDebounce
from
'
lib/hooks/useDebounce
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
TOKEN_TYPE
from
'
lib/token/tokenTypes
'
;
import
TOKEN_TYPE
from
'
lib/token/tokenTypes
'
;
import
{
TOKEN_INFO_ERC_20
}
from
'
stubs/token
'
;
import
{
TOKEN_INFO_ERC_20
}
from
'
stubs/token
'
;
...
@@ -17,7 +16,8 @@ import DataListDisplay from 'ui/shared/DataListDisplay';
...
@@ -17,7 +16,8 @@ import DataListDisplay from 'ui/shared/DataListDisplay';
import
FilterInput
from
'
ui/shared/filters/FilterInput
'
;
import
FilterInput
from
'
ui/shared/filters/FilterInput
'
;
import
PopoverFilter
from
'
ui/shared/filters/PopoverFilter
'
;
import
PopoverFilter
from
'
ui/shared/filters/PopoverFilter
'
;
import
TokenTypeFilter
from
'
ui/shared/filters/TokenTypeFilter
'
;
import
TokenTypeFilter
from
'
ui/shared/filters/TokenTypeFilter
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TokensListItem
from
'
./TokensListItem
'
;
import
TokensListItem
from
'
./TokensListItem
'
;
import
TokensTable
from
'
./TokensTable
'
;
import
TokensTable
from
'
./TokensTable
'
;
...
@@ -32,7 +32,7 @@ const Tokens = () => {
...
@@ -32,7 +32,7 @@ const Tokens = () => {
const
debouncedFilter
=
useDebounce
(
filter
,
300
);
const
debouncedFilter
=
useDebounce
(
filter
,
300
);
const
{
isError
,
isPlaceholderData
,
data
,
isPaginationVisible
,
pagination
,
onFilterChange
}
=
useQueryWithPages
({
const
{
isError
,
isPlaceholderData
,
data
,
pagination
,
onFilterChange
}
=
useQueryWithPages
({
resourceName
:
'
tokens
'
,
resourceName
:
'
tokens
'
,
filters
:
{
q
:
debouncedFilter
,
type
},
filters
:
{
q
:
debouncedFilter
,
type
},
options
:
{
options
:
{
...
@@ -92,7 +92,7 @@ const Tokens = () => {
...
@@ -92,7 +92,7 @@ const Tokens = () => {
{
typeFilter
}
{
typeFilter
}
{
filterInput
}
{
filterInput
}
</
HStack
>
</
HStack
>
{
isPaginationVisible
&&
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
}
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
</>
</>
);
);
...
...
ui/tx/TxInternals.tsx
View file @
f33a23c7
...
@@ -4,7 +4,6 @@ import React from 'react';
...
@@ -4,7 +4,6 @@ import React from 'react';
import
type
{
InternalTransaction
}
from
'
types/api/internalTransaction
'
;
import
type
{
InternalTransaction
}
from
'
types/api/internalTransaction
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
// import { apos } from 'lib/html-entities';
// import { apos } from 'lib/html-entities';
import
{
INTERNAL_TX
}
from
'
stubs/internalTx
'
;
import
{
INTERNAL_TX
}
from
'
stubs/internalTx
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
...
@@ -12,7 +11,8 @@ import ActionBar from 'ui/shared/ActionBar';
...
@@ -12,7 +11,8 @@ import ActionBar from 'ui/shared/ActionBar';
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
// import FilterInput from 'ui/shared/filters/FilterInput';
// import FilterInput from 'ui/shared/filters/FilterInput';
// import TxInternalsFilter from 'ui/tx/internals/TxInternalsFilter';
// import TxInternalsFilter from 'ui/tx/internals/TxInternalsFilter';
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TxInternalsList
from
'
ui/tx/internals/TxInternalsList
'
;
import
TxInternalsList
from
'
ui/tx/internals/TxInternalsList
'
;
import
TxInternalsTable
from
'
ui/tx/internals/TxInternalsTable
'
;
import
TxInternalsTable
from
'
ui/tx/internals/TxInternalsTable
'
;
import
type
{
Sort
,
SortField
}
from
'
ui/tx/internals/utils
'
;
import
type
{
Sort
,
SortField
}
from
'
ui/tx/internals/utils
'
;
...
@@ -72,7 +72,7 @@ const TxInternals = () => {
...
@@ -72,7 +72,7 @@ const TxInternals = () => {
// const [ searchTerm, setSearchTerm ] = React.useState<string>('');
// const [ searchTerm, setSearchTerm ] = React.useState<string>('');
const
[
sort
,
setSort
]
=
React
.
useState
<
Sort
>
();
const
[
sort
,
setSort
]
=
React
.
useState
<
Sort
>
();
const
txInfo
=
useFetchTxInfo
({
updateDelay
:
5
*
SECOND
});
const
txInfo
=
useFetchTxInfo
({
updateDelay
:
5
*
SECOND
});
const
{
data
,
isPlaceholderData
,
isError
,
pagination
,
isPaginationVisible
}
=
useQueryWithPages
({
const
{
data
,
isPlaceholderData
,
isError
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
tx_internal_txs
'
,
resourceName
:
'
tx_internal_txs
'
,
pathParams
:
{
hash
:
txInfo
.
data
?.
hash
},
pathParams
:
{
hash
:
txInfo
.
data
?.
hash
},
options
:
{
options
:
{
...
@@ -112,14 +112,14 @@ const TxInternals = () => {
...
@@ -112,14 +112,14 @@ const TxInternals = () => {
data=
{
filteredData
}
data=
{
filteredData
}
sort=
{
sort
}
sort=
{
sort
}
onSortToggle=
{
handleSortToggle
}
onSortToggle=
{
handleSortToggle
}
top=
{
isPagination
Visible
?
80
:
0
}
top=
{
pagination
.
is
Visible
?
80
:
0
}
isLoading=
{
isPlaceholderData
}
isLoading=
{
isPlaceholderData
}
/>
/>
</
Hide
>
</
Hide
>
</>
</>
)
:
null
;
)
:
null
;
const
actionBar
=
isPagination
Visible
?
(
const
actionBar
=
pagination
.
is
Visible
?
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
{
/* <TxInternalsFilter onFilterChange={ handleFilterChange } defaultFilters={ filters } appliedFiltersNum={ filters.length }/> */
}
{
/* <TxInternalsFilter onFilterChange={ handleFilterChange } defaultFilters={ filters } appliedFiltersNum={ filters.length }/> */
}
{
/* <FilterInput onChange={ setSearchTerm } maxW="360px" ml={ 3 } size="xs" placeholder="Search by addresses, hash, method..."/> */
}
{
/* <FilterInput onChange={ setSearchTerm } maxW="360px" ml={ 3 } size="xs" placeholder="Search by addresses, hash, method..."/> */
}
...
...
ui/tx/TxLogs.tsx
View file @
f33a23c7
...
@@ -2,20 +2,20 @@ import { Box, Text } from '@chakra-ui/react';
...
@@ -2,20 +2,20 @@ import { Box, Text } from '@chakra-ui/react';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
LOG
}
from
'
stubs/log
'
;
import
{
LOG
}
from
'
stubs/log
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
{
generateListStub
}
from
'
stubs/utils
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
LogItem
from
'
ui/shared/logs/LogItem
'
;
import
LogItem
from
'
ui/shared/logs/LogItem
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TxPendingAlert
from
'
ui/tx/TxPendingAlert
'
;
import
TxPendingAlert
from
'
ui/tx/TxPendingAlert
'
;
import
TxSocketAlert
from
'
ui/tx/TxSocketAlert
'
;
import
TxSocketAlert
from
'
ui/tx/TxSocketAlert
'
;
import
useFetchTxInfo
from
'
ui/tx/useFetchTxInfo
'
;
import
useFetchTxInfo
from
'
ui/tx/useFetchTxInfo
'
;
const
TxLogs
=
()
=>
{
const
TxLogs
=
()
=>
{
const
txInfo
=
useFetchTxInfo
({
updateDelay
:
5
*
SECOND
});
const
txInfo
=
useFetchTxInfo
({
updateDelay
:
5
*
SECOND
});
const
{
data
,
isPlaceholderData
,
isError
,
pagination
,
isPaginationVisible
}
=
useQueryWithPages
({
const
{
data
,
isPlaceholderData
,
isError
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
tx_logs
'
,
resourceName
:
'
tx_logs
'
,
pathParams
:
{
hash
:
txInfo
.
data
?.
hash
},
pathParams
:
{
hash
:
txInfo
.
data
?.
hash
},
options
:
{
options
:
{
...
@@ -38,7 +38,7 @@ const TxLogs = () => {
...
@@ -38,7 +38,7 @@ const TxLogs = () => {
return
(
return
(
<
Box
>
<
Box
>
{
isPagination
Visible
&&
(
{
pagination
.
is
Visible
&&
(
<
ActionBar
mt=
{
-
6
}
>
<
ActionBar
mt=
{
-
6
}
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/tx/TxState.tsx
View file @
f33a23c7
...
@@ -2,11 +2,11 @@ import { Accordion, Hide, Show, Text } from '@chakra-ui/react';
...
@@ -2,11 +2,11 @@ import { Accordion, Hide, Show, Text } from '@chakra-ui/react';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
TX_STATE_CHANGES
}
from
'
stubs/txStateChanges
'
;
import
{
TX_STATE_CHANGES
}
from
'
stubs/txStateChanges
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TxStateList
from
'
ui/tx/state/TxStateList
'
;
import
TxStateList
from
'
ui/tx/state/TxStateList
'
;
import
TxStateTable
from
'
ui/tx/state/TxStateTable
'
;
import
TxStateTable
from
'
ui/tx/state/TxStateTable
'
;
import
useFetchTxInfo
from
'
ui/tx/useFetchTxInfo
'
;
import
useFetchTxInfo
from
'
ui/tx/useFetchTxInfo
'
;
...
@@ -16,7 +16,7 @@ import TxSocketAlert from './TxSocketAlert';
...
@@ -16,7 +16,7 @@ import TxSocketAlert from './TxSocketAlert';
const
TxState
=
()
=>
{
const
TxState
=
()
=>
{
const
txInfo
=
useFetchTxInfo
({
updateDelay
:
5
*
SECOND
});
const
txInfo
=
useFetchTxInfo
({
updateDelay
:
5
*
SECOND
});
const
{
data
,
isPlaceholderData
,
isError
,
isPaginationVisible
,
pagination
}
=
useQueryWithPages
({
const
{
data
,
isPlaceholderData
,
isError
,
pagination
}
=
useQueryWithPages
({
resourceName
:
'
tx_state_changes
'
,
resourceName
:
'
tx_state_changes
'
,
pathParams
:
{
hash
:
txInfo
.
data
?.
hash
},
pathParams
:
{
hash
:
txInfo
.
data
?.
hash
},
options
:
{
options
:
{
...
@@ -38,7 +38,7 @@ const TxState = () => {
...
@@ -38,7 +38,7 @@ const TxState = () => {
const
content
=
data
?
(
const
content
=
data
?
(
<
Accordion
allowMultiple
defaultIndex=
{
[]
}
>
<
Accordion
allowMultiple
defaultIndex=
{
[]
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
Hide
below=
"lg"
ssr=
{
false
}
>
<
TxStateTable
data=
{
data
.
items
}
isLoading=
{
isPlaceholderData
}
top=
{
isPagination
Visible
?
80
:
0
}
/>
<
TxStateTable
data=
{
data
.
items
}
isLoading=
{
isPlaceholderData
}
top=
{
pagination
.
is
Visible
?
80
:
0
}
/>
</
Hide
>
</
Hide
>
<
Show
below=
"lg"
ssr=
{
false
}
>
<
Show
below=
"lg"
ssr=
{
false
}
>
<
TxStateList
data=
{
data
.
items
}
isLoading=
{
isPlaceholderData
}
/>
<
TxStateList
data=
{
data
.
items
}
isLoading=
{
isPlaceholderData
}
/>
...
@@ -46,7 +46,7 @@ const TxState = () => {
...
@@ -46,7 +46,7 @@ const TxState = () => {
</
Accordion
>
</
Accordion
>
)
:
null
;
)
:
null
;
const
actionBar
=
isPagination
Visible
?
(
const
actionBar
=
pagination
.
is
Visible
?
(
<
ActionBar
mt=
{
-
6
}
showShadow
>
<
ActionBar
mt=
{
-
6
}
showShadow
>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
<
Pagination
ml=
"auto"
{
...
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
...
...
ui/tx/TxTokenTransfer.tsx
View file @
f33a23c7
...
@@ -6,14 +6,14 @@ import type { TokenType } from 'types/api/token';
...
@@ -6,14 +6,14 @@ import type { TokenType } from 'types/api/token';
import
{
SECOND
}
from
'
lib/consts
'
;
import
{
SECOND
}
from
'
lib/consts
'
;
import
getFilterValuesFromQuery
from
'
lib/getFilterValuesFromQuery
'
;
import
getFilterValuesFromQuery
from
'
lib/getFilterValuesFromQuery
'
;
import
useQueryWithPages
from
'
lib/hooks/useQueryWithPages
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
{
apos
}
from
'
lib/html-entities
'
;
import
TOKEN_TYPE
from
'
lib/token/tokenTypes
'
;
import
TOKEN_TYPE
from
'
lib/token/tokenTypes
'
;
import
{
getTokenTransfersStub
}
from
'
stubs/token
'
;
import
{
getTokenTransfersStub
}
from
'
stubs/token
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
DataFetchAlert
from
'
ui/shared/DataFetchAlert
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
useQueryWithPages
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TokenTransferFilter
from
'
ui/shared/TokenTransfer/TokenTransferFilter
'
;
import
TokenTransferFilter
from
'
ui/shared/TokenTransfer/TokenTransferFilter
'
;
import
TokenTransferList
from
'
ui/shared/TokenTransfer/TokenTransferList
'
;
import
TokenTransferList
from
'
ui/shared/TokenTransfer/TokenTransferList
'
;
import
TokenTransferTable
from
'
ui/shared/TokenTransfer/TokenTransferTable
'
;
import
TokenTransferTable
from
'
ui/shared/TokenTransfer/TokenTransferTable
'
;
...
@@ -77,7 +77,7 @@ const TxTokenTransfer = () => {
...
@@ -77,7 +77,7 @@ const TxTokenTransfer = () => {
appliedFiltersNum=
{
numActiveFilters
}
appliedFiltersNum=
{
numActiveFilters
}
isLoading=
{
tokenTransferQuery
.
isPlaceholderData
}
isLoading=
{
tokenTransferQuery
.
isPlaceholderData
}
/>
/>
{
tokenTransferQuery
.
isPaginationVisible
&&
<
Pagination
ml=
"auto"
{
...
tokenTransferQuery
.
pagination
}
/>
}
<
Pagination
ml=
"auto"
{
...
tokenTransferQuery
.
pagination
}
/>
</
ActionBar
>
</
ActionBar
>
)
:
null
;
)
:
null
;
...
...
ui/txs/TxsContent.tsx
View file @
f33a23c7
import
{
Box
,
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
{
Box
,
Show
,
Hide
}
from
'
@chakra-ui/react
'
;
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
TxsResponse
}
from
'
types/api/transaction
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
useIsMobile
from
'
lib/hooks/useIsMobile
'
;
import
AddressCsvExportLink
from
'
ui/address/AddressCsvExportLink
'
;
import
AddressCsvExportLink
from
'
ui/address/AddressCsvExportLink
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
DataListDisplay
from
'
ui/shared/DataListDisplay
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
*
as
SocketNewItemsNotice
from
'
ui/shared/SocketNewItemsNotice
'
;
import
*
as
SocketNewItemsNotice
from
'
ui/shared/SocketNewItemsNotice
'
;
import
TxsHeaderMobile
from
'
./TxsHeaderMobile
'
;
import
TxsHeaderMobile
from
'
./TxsHeaderMobile
'
;
...
@@ -15,13 +12,8 @@ import TxsListItem from './TxsListItem';
...
@@ -15,13 +12,8 @@ import TxsListItem from './TxsListItem';
import
TxsTable
from
'
./TxsTable
'
;
import
TxsTable
from
'
./TxsTable
'
;
import
useTxsSort
from
'
./useTxsSort
'
;
import
useTxsSort
from
'
./useTxsSort
'
;
type
QueryResult
=
UseQueryResult
<
TxsResponse
>
&
{
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
type
Props
=
{
type
Props
=
{
query
:
Query
Result
;
query
:
Query
WithPagesResult
<
'
txs_validated
'
|
'
txs_pending
'
>
|
QueryWithPagesResult
<
'
txs_watchlist
'
>
|
QueryWithPagesResult
<
'
block_txs
'
>
;
showBlockInfo
?:
boolean
;
showBlockInfo
?:
boolean
;
showSocketInfo
?:
boolean
;
showSocketInfo
?:
boolean
;
socketInfoAlert
?:
string
;
socketInfoAlert
?:
string
;
...
@@ -79,7 +71,7 @@ const TxsContent = ({
...
@@ -79,7 +71,7 @@ const TxsContent = ({
showSocketInfo=
{
showSocketInfo
}
showSocketInfo=
{
showSocketInfo
}
socketInfoAlert=
{
socketInfoAlert
}
socketInfoAlert=
{
socketInfoAlert
}
socketInfoNum=
{
socketInfoNum
}
socketInfoNum=
{
socketInfoNum
}
top=
{
top
||
query
.
isPagination
Visible
?
80
:
0
}
top=
{
top
||
query
.
pagination
.
is
Visible
?
80
:
0
}
currentAddress=
{
currentAddress
}
currentAddress=
{
currentAddress
}
enableTimeIncrement=
{
enableTimeIncrement
}
enableTimeIncrement=
{
enableTimeIncrement
}
isLoading=
{
isPlaceholderData
}
isLoading=
{
isPlaceholderData
}
...
@@ -94,7 +86,7 @@ const TxsContent = ({
...
@@ -94,7 +86,7 @@ const TxsContent = ({
sorting=
{
sorting
}
sorting=
{
sorting
}
setSorting=
{
setSortByValue
}
setSorting=
{
setSortByValue
}
paginationProps=
{
query
.
pagination
}
paginationProps=
{
query
.
pagination
}
showPagination=
{
query
.
isPagination
Visible
}
showPagination=
{
query
.
pagination
.
is
Visible
}
filterComponent=
{
filter
}
filterComponent=
{
filter
}
linkSlot=
{
currentAddress
?
linkSlot=
{
currentAddress
?
<
AddressCsvExportLink
address=
{
currentAddress
}
type=
"transactions"
ml=
{
2
}
isLoading=
{
query
.
pagination
.
isLoading
}
/>
:
null
<
AddressCsvExportLink
address=
{
currentAddress
}
type=
"transactions"
ml=
{
2
}
isLoading=
{
query
.
pagination
.
isLoading
}
/>
:
null
...
...
ui/txs/TxsHeaderMobile.tsx
View file @
f33a23c7
...
@@ -2,11 +2,12 @@ import { HStack, chakra } from '@chakra-ui/react';
...
@@ -2,11 +2,12 @@ import { HStack, chakra } from '@chakra-ui/react';
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
Sort
as
TSort
}
from
'
types/client/txs-sort
'
;
import
type
{
Sort
as
TSort
}
from
'
types/client/txs-sort
'
;
import
type
{
PaginationParams
}
from
'
ui/shared/pagination/types
'
;
// import FilterInput from 'ui/shared/filters/FilterInput';
// import FilterInput from 'ui/shared/filters/FilterInput';
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
ActionBar
from
'
ui/shared/ActionBar
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/pagination/Pagination
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
Option
}
from
'
ui/shared/sort/Sort
'
;
import
type
{
Option
}
from
'
ui/shared/sort/Sort
'
;
import
Sort
from
'
ui/shared/sort/Sort
'
;
import
Sort
from
'
ui/shared/sort/Sort
'
;
...
@@ -23,7 +24,7 @@ const SORT_OPTIONS: Array<Option<TSort>> = [
...
@@ -23,7 +24,7 @@ const SORT_OPTIONS: Array<Option<TSort>> = [
type
Props
=
{
type
Props
=
{
sorting
:
TSort
;
sorting
:
TSort
;
setSorting
:
(
val
:
TSort
|
undefined
)
=>
void
;
setSorting
:
(
val
:
TSort
|
undefined
)
=>
void
;
paginationProps
:
PaginationP
rop
s
;
paginationProps
:
PaginationP
aram
s
;
className
?:
string
;
className
?:
string
;
showPagination
?:
boolean
;
showPagination
?:
boolean
;
filterComponent
?:
React
.
ReactNode
;
filterComponent
?:
React
.
ReactNode
;
...
...
ui/txs/TxsTabSlot.tsx
deleted
100644 → 0
View file @
a1e7699d
import
React
from
'
react
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
Pagination
from
'
ui/shared/Pagination
'
;
interface
Props
{
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
}
const
TxsTabSlot
=
({
pagination
,
isPaginationVisible
}:
Props
)
=>
{
if
(
!
isPaginationVisible
)
{
return
null
;
}
return
<
Pagination
my=
{
1
}
{
...
pagination
}
/>;
};
export
default
TxsTabSlot
;
ui/txs/TxsWatchlist.tsx
View file @
f33a23c7
import
type
{
UseQueryResult
}
from
'
@tanstack/react-query
'
;
import
React
from
'
react
'
;
import
React
from
'
react
'
;
import
type
{
TxsResponse
}
from
'
types/api/transaction
'
;
import
useRedirectForInvalidAuthToken
from
'
lib/hooks/useRedirectForInvalidAuthToken
'
;
import
useRedirectForInvalidAuthToken
from
'
lib/hooks/useRedirectForInvalidAuthToken
'
;
import
type
{
Props
as
PaginationProps
}
from
'
ui/shared/Pagination
'
;
import
type
{
QueryWithPagesResult
}
from
'
ui/shared/pagination/useQueryWithPages
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
import
TxsContent
from
'
ui/txs/TxsContent
'
;
type
QueryResult
=
UseQueryResult
<
TxsResponse
>
&
{
pagination
:
PaginationProps
;
isPaginationVisible
:
boolean
;
};
type
Props
=
{
type
Props
=
{
query
:
Query
Result
;
query
:
Query
WithPagesResult
<
'
txs_watchlist
'
>
;
}
}
const
TxsWatchlist
=
({
query
}:
Props
)
=>
{
const
TxsWatchlist
=
({
query
}:
Props
)
=>
{
...
...
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