import { User } from "@/components/user"; import { NostrAccount } from "@lume/system"; import type { ColumnRouteSearch } from "@lume/types"; import { Spinner } from "@lume/ui"; import { createFileRoute } from "@tanstack/react-router"; import { Await, defer } from "@tanstack/react-router"; import { message } from "@tauri-apps/plugin-dialog"; import { Suspense, useState } from "react"; 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 { 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 NostrAccount.setContactList(follows); if (newContactList) { return navigate({ to: redirect }); } } catch (e) { setIsLoading(false); await message(String(e), { title: "Create Group", kind: "error", }); } }; return (
} > {(users) => users.profiles.map((item: { pubkey: string }) => (
)) }
); }