import { RepostNote } from "@/components/repost"; import { Suggest } from "@/components/suggest"; import { TextNote } from "@/components/text"; import { useArk } from "@lume/ark"; import { LoaderIcon, ArrowRightCircleIcon, InfoIcon } from "@lume/icons"; import { Event, Kind } from "@lume/types"; import { FETCH_LIMIT } from "@lume/utils"; import { useInfiniteQuery } from "@tanstack/react-query"; import { Link } from "@tanstack/react-router"; import { createLazyFileRoute } from "@tanstack/react-router"; import { Virtualizer } from "virtua"; export const Route = createLazyFileRoute("/$account/home/local")({ component: Screen, }); function Screen() { const ark = useArk(); const { account } = Route.useParams(); const { data, hasNextPage, isLoading, isRefetching, isFetchingNextPage, fetchNextPage, } = useInfiniteQuery({ queryKey: ["local_newsfeed", account], initialPageParam: 0, queryFn: async ({ pageParam }: { pageParam: number }) => { const events = await ark.get_events( "local", FETCH_LIMIT, pageParam, true, ); return events; }, getNextPageParam: (lastPage) => { const lastEvent = lastPage?.at(-1); if (!lastEvent) return; return lastEvent.created_at - 1; }, select: (data) => data?.pages.flatMap((page) => page), refetchOnWindowFocus: false, }); const renderItem = (event: Event) => { if (!event) return; switch (event.kind) { case Kind.Repost: return ; default: return ; } }; return (
{isLoading || isRefetching ? (
) : !data.length ? (

Empty newsfeed. Or you can go to{" "} Global Newsfeed

) : ( {data.map((item) => renderItem(item))} )}
{hasNextPage ? ( ) : null}
); }