import { createFileRoute } from "@tanstack/react-router"; import { Suspense, useState } from "react"; import { Await, defer } from "@tanstack/react-router"; import { User } from "@/components/user"; import { Spinner } from "@lume/ui"; import { toast } from "sonner"; import type { ColumnRouteSearch } from "@lume/types"; export const Route = createFileRoute("/create-newsfeed/users")({ validateSearch: (search: Record): ColumnRouteSearch => { return { account: search.account, label: search.label, name: search.name, }; }, loader: async ({ abortController }) => { try { return { data: defer( fetch("https://api.nostr.band/v0/trending/profiles", { signal: abortController.signal, }).then((res) => res.json()), ), }; } catch (e) { throw new Error(String(e)); } }, component: Screen, }); function Screen() { const { ark } = Route.useRouteContext(); const { data } = Route.useLoaderData(); const { redirect } = Route.useSearch(); const [isLoading, setIsLoading] = useState(false); const [follows, setFollows] = useState([]); const navigate = Route.useNavigate(); const toggleFollow = (pubkey: string) => { setFollows((prev) => prev.includes(pubkey) ? prev.filter((i) => i !== pubkey) : [...prev, pubkey], ); }; const submit = async () => { try { setIsLoading(true); const newContactList = await ark.set_contact_list(follows); if (newContactList) { return navigate({ to: redirect }); } } catch (e) { setIsLoading(false); toast.error(String(e)); } }; return (
} > {(users) => users.profiles.map((item: { pubkey: string }) => (
)) }
); }