import type { FullStatusData } from '@lifi/sdk'; import { List } from '@mui/material'; import { useVirtualizer } from '@tanstack/react-virtual'; import { useRef } from 'react'; import { PageContainer } from '../../components/PageContainer'; import { useTransactionHistory } from '../../hooks/useTransactionHistory'; import { TransactionHistoryEmpty } from './TransactionHistoryEmpty'; import { TransactionHistoryItem } from './TransactionHistoryItem'; import { TransactionHistoryItemSkeleton } from './TransactionHistorySkeleton'; import { minTransactionListHeight } from './constants'; export const TransactionHistoryPage: React.FC = () => { // Parent ref and useVirtualizer should be in one file to avoid blank page (0 virtual items) issue const parentRef = useRef(null); const { data: transactions, isLoading } = useTransactionHistory(); const { getVirtualItems, getTotalSize } = useVirtualizer({ count: transactions.length, overscan: 10, paddingStart: 8, paddingEnd: 12, getScrollElement: () => parentRef.current, estimateSize: () => 186, getItemKey: (index) => `${(transactions[index] as FullStatusData).transactionId}-${index}`, }); if (!transactions.length && !isLoading) { return ; } return ( {isLoading ? ( {Array.from({ length: 3 }).map((_, index) => ( ))} ) : ( getVirtualItems().map((item) => { const transaction = transactions[item.index]; return ( ); }) )} ); };