diff --git a/src/hooks/useReports.ts b/src/hooks/useReports.ts index 11375a48..ab7a5edd 100644 --- a/src/hooks/useReports.ts +++ b/src/hooks/useReports.ts @@ -25,10 +25,10 @@ const useReports = (ownerId?: string, gateway?: AoGateway) => { queryFn: async ({ pageParam }) => { if ( !arIOReadSDK || - !startEpoch || + startEpoch === undefined || !gatewayStart || !observerAddress || - !pageParam + pageParam === undefined ) { throw new Error( 'arIOReadSDK, startEpoch, ownerId, observerAddress, or gatewayStart not available', @@ -52,7 +52,7 @@ const useReports = (ownerId?: string, gateway?: AoGateway) => { epochIndexToFetch -= windowSize; const epochs = await Promise.all( - batchedEpochIndicies.map((epochIndex) => + batchedEpochIndicies.filter(v => v >= 0).map((epochIndex) => arIOReadSDK.getEpoch({ epochIndex }), ), ); @@ -110,7 +110,7 @@ const useReports = (ownerId?: string, gateway?: AoGateway) => { ), size: parseInt(transaction.node.data.size), version: - tags.find((tag) => tag.name === 'App-Version')?.value || '', + tags.find((tag) => tag.name === 'AR-IO-Observer-Report-Version')?.value || '', }; }, ); @@ -118,7 +118,7 @@ const useReports = (ownerId?: string, gateway?: AoGateway) => { data = data.concat(recordData); } - if (filtered.length < windowSize) { + if (filtered.length < windowSize || epochIndexToFetch < 0) { completed = true; break; } diff --git a/src/pages/Reports/ReportsTable.tsx b/src/pages/Reports/ReportsTable.tsx index c463014d..9f566e4c 100644 --- a/src/pages/Reports/ReportsTable.tsx +++ b/src/pages/Reports/ReportsTable.tsx @@ -1,4 +1,5 @@ import { AoGateway } from '@ar.io/sdk'; +import Placeholder from '@src/components/Placeholder'; import TableView from '@src/components/TableView'; import useReports, { ReportTransactionData } from '@src/hooks/useReports'; import { formatDate } from '@src/utils'; @@ -21,6 +22,7 @@ const ReportsTable = ({ data: reports, hasNextPage, fetchNextPage, + isFetchingNextPage } = useReports(ownerId, gateway); // Define columns for the table @@ -34,7 +36,7 @@ const ReportsTable = ({ id: 'generatedAt', header: 'Generated At', sortDescFirst: false, - cell: ({row}) => formatDate(new Date(row.original.timestamp)), + cell: ({ row }) => formatDate(new Date(row.original.timestamp)), }), columnHelper.accessor('size', { id: 'size', @@ -68,13 +70,19 @@ const ReportsTable = ({ data={data || []} isLoading={isLoading} noDataFoundText="No reports found." - defaultSortingState={{ id: 'timestamp', desc: true }} + defaultSortingState={{ id: 'generatedAt', desc: true }} onRowClick={(row) => { navigate(`/gateways/${ownerId}/reports/${row.txid}`); }} /> {hasNextPage && ( - +