import { GiftIcon } from "@heroicons/react/24/outline"; import { BLOCK_EXPLORER_URL } from "@hey/data/constants"; import { PageSize, type TokenDistributionsRequest, useTokenDistributionsQuery } from "@hey/indexer"; import dayjs from "dayjs"; import { useCallback } from "react"; import { Link } from "react-router"; import { WindowVirtualizer } from "virtua"; import Loader from "@/components/Shared/Loader"; import { EmptyState, ErrorMessage } from "@/components/Shared/UI"; import useLoadMoreOnIntersect from "@/hooks/useLoadMoreOnIntersect"; const List = () => { const request: TokenDistributionsRequest = { pageSize: PageSize.Fifty }; const { data, error, fetchMore, loading } = useTokenDistributionsQuery({ variables: { request } }); const tokenRewards = data?.tokenDistributions?.items; const pageInfo = data?.tokenDistributions?.pageInfo; const hasMore = pageInfo?.next; const handleEndReached = useCallback(async () => { if (hasMore) { await fetchMore({ variables: { request: { ...request, cursor: pageInfo?.next } } }); } }, [fetchMore, hasMore, pageInfo?.next, request]); const loadMoreRef = useLoadMoreOnIntersect(handleEndReached); if (loading) { return ; } if (!tokenRewards?.length) { return ( } message="You haven't received any rewards yet." /> ); } if (error) { return ( ); } return (
{tokenRewards.map((distribution) => (
Received {Number(distribution.amount.value).toFixed(4)}
{dayjs(distribution.timestamp).format("MMM D, YYYY h:mm A")}
))} {hasMore && }
); }; export default List;