import { commands } from "@/commands.gen"; import { toLumeEvents } from "@/commons"; import { Spinner } from "@/components"; import { Quote } from "@/components/quote"; import { RepostNote } from "@/components/repost"; import { TextNote } from "@/components/text"; import { User } from "@/components/user"; import type { LumeEvent } from "@/system"; import { Kind } from "@/types"; import * as ScrollArea from "@radix-ui/react-scroll-area"; import { useQuery } from "@tanstack/react-query"; import { createLazyFileRoute } from "@tanstack/react-router"; import { useCallback, useRef } from "react"; import { Virtualizer } from "virtua"; export const Route = createLazyFileRoute("/columns/_layout/users/$id")({ component: Screen, }); function Screen() { const { id } = Route.useParams(); const { isLoading, data: events } = useQuery({ queryKey: ["stories", id], queryFn: async () => { const res = await commands.getEventsBy(id, 20); if (res.status === "ok") { const data = toLumeEvents(res.data); return data; } else { throw new Error(res.error); } }, refetchOnWindowFocus: false, }); const ref = useRef(null); const renderItem = useCallback( (event: LumeEvent) => { if (!event) return; switch (event.kind) { case Kind.Repost: return ; default: { if (event.isQuote) { return ; } return ; } } }, [events], ); return (
{isLoading ? (
Loading...
) : !events.length ? (
Yo. You're catching up on all the things happening around you.
) : ( events.map((item) => renderItem(item)) )}
); }