"use client"; import React from "react"; import { Drawer, DrawerClose, DrawerContent, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer"; import { Button } from "@/components/ui/button"; import { api } from "@/trpc/react"; import { Input } from "@/components/ui/input"; import { useDebounce } from "use-debounce"; import { Skeleton } from "@/components/ui/skeleton"; import { toast } from "sonner"; import type { User } from "@/server/db/schema"; import UserCard from "../user-card"; const SearchResultCard = ({ addUser, user, }: { addUser: (userId: string) => void; user: User; }) => { return ( { addUser(user.id!); }} > Add ); }; export default function AddToGroupDrawer({ groupId, className, }: { groupId: string; className?: string; }) { const utils = api.useUtils(); const [open, setOpen] = React.useState(false); const [value, setValue] = React.useState(""); const [searchValue] = useDebounce(value, 1000); const { data: searchResult, isFetching } = api.user.search.useQuery( { search: searchValue, }, { enabled: !!searchValue, } ); const addFriend = api.group.addMember.useMutation({ onSuccess() { toast.success("User added to group."); setOpen(false); setValue(""); utils.group.get.invalidate(); utils.group.getAll.invalidate(); }, }); const handleAddFriend = (userId: string) => { addFriend.mutate({ groupId, userId, }); }; return ( Add People Add a user to group setValue(e.currentTarget.value)} placeholder="Search for a user" /> {isFetching ? ( ) : searchResult?.length ? ( searchResult.map((user) => ( )) ) : ( {searchValue.length ? "No results found" : "Start typing to search for a user"} )} Cancel ); }
{searchValue.length ? "No results found" : "Start typing to search for a user"}