diff --git a/apps/explorer/src/app/components/blocks/block-data.tsx b/apps/explorer/src/app/components/blocks/block-data.tsx index 419c3b235..d0598009d 100644 --- a/apps/explorer/src/app/components/blocks/block-data.tsx +++ b/apps/explorer/src/app/components/blocks/block-data.tsx @@ -6,11 +6,15 @@ import { Table, TableRow, TableCell } from '../table'; interface BlockProps { block: BlockMeta; + className?: string; } -export const BlockData = ({ block }: BlockProps) => { +export const BlockData = ({ block, className }: BlockProps) => { return ( - +
{ + if (loading) { + return Loading...; + } + + if (error) { + return Error: {error}; + } + + // eslint-disable-next-line react/jsx-no-useless-fragment + return <>{children}; +}; diff --git a/apps/explorer/src/app/components/status-message/index.tsx b/apps/explorer/src/app/components/status-message/index.tsx index 3c1f1e7dc..10bc441cc 100644 --- a/apps/explorer/src/app/components/status-message/index.tsx +++ b/apps/explorer/src/app/components/status-message/index.tsx @@ -7,6 +7,6 @@ interface StatusMessageProps { } export const StatusMessage = ({ children, className }: StatusMessageProps) => { - const classes = classnames('font-alpha', 'text-h4', 'mb-28', className); + const classes = classnames('font-alpha text-h4 mb-28', className); return

{children}

; }; diff --git a/apps/explorer/src/app/components/txs/home/txs-data.tsx b/apps/explorer/src/app/components/txs/home/block-txs-data.tsx similarity index 66% rename from apps/explorer/src/app/components/txs/home/txs-data.tsx rename to apps/explorer/src/app/components/txs/home/block-txs-data.tsx index 005bd4854..d728bd34d 100644 --- a/apps/explorer/src/app/components/txs/home/txs-data.tsx +++ b/apps/explorer/src/app/components/txs/home/block-txs-data.tsx @@ -8,9 +8,12 @@ interface TxsProps { className?: string; } -export const TxsData = ({ data, className }: TxsProps) => { +export const BlockTxsData = ({ data, className }: TxsProps) => { if (!data?.result) { - return
Awaiting block data
; + // Data for the block has already been fetched at this point, so no errors + // or loading to deal with. This is specifically the case + // where the data object is not undefined, but lacks a result. + return
No data
; } return ( @@ -21,7 +24,7 @@ export const TxsData = ({ data, className }: TxsProps) => { {data.result?.block_metas?.map((block, index) => { return (
  • - +
  • ); diff --git a/apps/explorer/src/app/components/txs/index.tsx b/apps/explorer/src/app/components/txs/index.tsx index b27e867fd..03b5e94ae 100644 --- a/apps/explorer/src/app/components/txs/index.tsx +++ b/apps/explorer/src/app/components/txs/index.tsx @@ -1,4 +1,4 @@ export { TxDetails } from './id/tx-details'; export { TxContent } from './id/tx-content'; export { TxList } from './pending/tx-list'; -export { TxsData } from './home/txs-data'; +export { BlockTxsData } from './home/block-txs-data'; diff --git a/apps/explorer/src/app/components/txs/txs-per-block/index.tsx b/apps/explorer/src/app/components/txs/txs-per-block/index.tsx index 64c9b45cb..16ba2053e 100644 --- a/apps/explorer/src/app/components/txs/txs-per-block/index.tsx +++ b/apps/explorer/src/app/components/txs/txs-per-block/index.tsx @@ -2,6 +2,7 @@ import useFetch from '../../../hooks/use-fetch'; import { ChainExplorerTxResponse } from '../../../routes/types/chain-explorer-response'; import { DATA_SOURCES } from '../../../config'; import { Link } from 'react-router-dom'; +import { RenderFetched } from '../../render-fetched'; import { TruncateInline } from '../../truncate/truncate'; interface TxsPerBlockProps { @@ -12,7 +13,7 @@ const truncateLength = 14; export const TxsPerBlock = ({ blockHeight }: TxsPerBlockProps) => { const { - state: { data: decodedBlockData }, + state: { data: decodedBlockData, loading, error }, } = useFetch(DATA_SOURCES.chainExplorerUrl, { method: 'POST', mode: 'cors', @@ -27,44 +28,46 @@ export const TxsPerBlock = ({ blockHeight }: TxsPerBlockProps) => { }); return ( -
    -
    - - - - - - - - - {decodedBlockData && - decodedBlockData.map(({ TxHash, PubKey, Type }, index) => { - return ( - - + + + ); + })} + +
    TransactionFromType
    - + +
    + + + + + + + + + + {decodedBlockData && + decodedBlockData.map(({ TxHash, PubKey, Type }) => { + return ( + + + - - - - ); - })} - -
    TransactionFromType
    + + + + - - - - {Type}
    -
    +
    {Type}
    + + ); }; diff --git a/apps/explorer/src/app/routes/blocks/home/index.tsx b/apps/explorer/src/app/routes/blocks/home/index.tsx index 092f3c565..15a6c8425 100644 --- a/apps/explorer/src/app/routes/blocks/home/index.tsx +++ b/apps/explorer/src/app/routes/blocks/home/index.tsx @@ -2,7 +2,7 @@ import { DATA_SOURCES } from '../../../config'; import useFetch from '../../../hooks/use-fetch'; import { TendermintBlockchainResponse } from '../tendermint-blockchain-response'; import { RouteTitle } from '../../../components/route-title'; -import { StatusMessage } from '../../../components/status-message'; +import { RenderFetched } from '../../../components/render-fetched'; import { BlocksData, BlocksRefetch } from '../../../components/blocks'; import { JumpToBlock } from '../../../components/jump-to-block'; @@ -17,14 +17,12 @@ const Blocks = () => { return (
    Blocks - {loading && Loading...} - {error && Error: {error}} - {data && ( + <> - )} +
    ); diff --git a/apps/explorer/src/app/routes/txs/home/index.tsx b/apps/explorer/src/app/routes/txs/home/index.tsx index 21144f509..fc382840d 100644 --- a/apps/explorer/src/app/routes/txs/home/index.tsx +++ b/apps/explorer/src/app/routes/txs/home/index.tsx @@ -3,12 +3,13 @@ import { TendermintBlockchainResponse } from '../../blocks/tendermint-blockchain import { DATA_SOURCES } from '../../../config'; import { RouteTitle } from '../../../components/route-title'; import { BlocksRefetch } from '../../../components/blocks'; -import { TxsData } from '../../../components/txs'; +import { RenderFetched } from '../../../components/render-fetched'; +import { BlockTxsData } from '../../../components/txs'; import { JumpToBlock } from '../../../components/jump-to-block'; const Txs = () => { const { - state: { data }, + state: { data, error, loading }, refetch, } = useFetch( `${DATA_SOURCES.tendermintUrl}/blockchain` @@ -17,8 +18,12 @@ const Txs = () => { return (
    Transactions - - + + <> + + + +
    );