import { RepostNote } from "@/components/repost"; import { TextNote } from "@/components/text"; import { LoaderIcon } from "@lume/icons"; import { Event, Kind } from "@lume/types"; import { Await, createFileRoute } from "@tanstack/react-router"; import { Virtualizer } from "virtua"; import { fetch } from "@tauri-apps/plugin-http"; import { defer } from "@tanstack/react-router"; import { Suspense } from "react"; export const Route = createFileRoute("/trending/notes")({ loader: async ({ abortController }) => { try { return { data: defer( fetch("https://api.nostr.band/v0/trending/notes", { signal: abortController.signal, }) .then((res) => res.json()) .then((res) => res.notes.map((item) => item.event) as Event[]), ), }; } catch (e) { throw new Error(String(e)); } }, component: Screen, }); export function Screen() { const { data } = Route.useLoaderData(); const renderItem = (event: Event) => { if (!event) return; switch (event.kind) { case Kind.Repost: return ; default: return ; } }; return (
} > {(notes) => notes.map((event) => renderItem(event))} ); }