import { commands } from "@/commands.gen"; import { Spinner } from "@/components"; import { User } from "@/components/user"; import { Plus, X } from "@phosphor-icons/react"; import * as ScrollArea from "@radix-ui/react-scroll-area"; import { createLazyFileRoute } from "@tanstack/react-router"; import { getCurrentWindow } from "@tauri-apps/api/window"; import { message } from "@tauri-apps/plugin-dialog"; import { useState, useTransition } from "react"; export const Route = createLazyFileRoute("/set-group")({ component: Screen, }); function Screen() { const contacts = Route.useLoaderData(); const { account } = Route.useSearch(); const { queryClient } = Route.useRouteContext(); const [title, setTitle] = useState(""); const [npub, setNpub] = useState(""); const [users, setUsers] = useState([]); const [isPending, startTransition] = useTransition(); const toggleUser = (pubkey: string) => { setUsers((prev) => prev.includes(pubkey) ? prev.filter((i) => i !== pubkey) : [...prev, pubkey], ); }; const addUser = () => { if (!npub.startsWith("npub1")) return; if (users.includes(npub)) return; setUsers((prev) => [...prev, npub]); setNpub(""); }; const submit = () => { startTransition(async () => { const res = await commands.setGroup(title, null, null, users); if (res.status === "ok") { const window = getCurrentWindow(); // Invalidate cache await queryClient.invalidateQueries({ queryKey: ["mygroups", account], }); // Create column in the main window await window.emitTo("main", "columns", { type: "add", column: { label: res.data, name: title, url: `/columns/groups/${res.data}`, }, }); // Close current popup await window.close(); } else { await message(res.error, { kind: "error" }); return; } }); }; return (
setTitle(e.target.value)} placeholder="family, bff, devs,..." className="h-full px-3 text-sm bg-transparent border-none placeholder:text-neutral-600 focus:border-neutral-500 focus:ring-0 dark:placeholder:text-neutral-400" />

Added

setNpub(e.target.value)} onKeyDown={(event) => { if (event.key === "Enter") addUser(); }} placeholder="npub1..." className="w-full px-3 text-sm border-none rounded-lg h-9 bg-neutral-100 dark:bg-neutral-900 placeholder:text-neutral-600 focus:border-neutral-500 focus:ring-0 dark:placeholder:text-neutral-400" />
{users.length ? ( users.map((item: string) => ( )) ) : (
Please add some user to your group.
)}

Contacts

{contacts.length ? ( contacts .filter((c) => !users.includes(c)) .map((item: string) => ( )) ) : (

Find more user at{" "} Nostr Directory

)}
); }