"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 UserCard from "../user-card"; import type { User } from "@/server/db/schema"; const SearchResultCard = ({ addFriend, user, pending, }: { addFriend: (userId: string) => void; pending: boolean; user: User; }) => { return ( ); }; export default function AddFriendDrawer() { 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.friend.search.useQuery( { search: searchValue, }, { enabled: !!searchValue, } ); const addFriend = api.friend.add.useMutation({ onSuccess() { toast.success("Friend request sent!"); setOpen(false); setValue(""); utils.friend.getAll.invalidate(); }, }); const handleAddFriend = (userId: string) => { addFriend.mutate({ userId, }); }; return ( Add a friend
setValue(e.currentTarget.value)} placeholder="Search for a friend" />
    {isFetching ? ( ) : searchResult?.length ? ( searchResult.map((res) => (
  • )) ) : (

    {searchValue.length ? "No results found" : "Start typing to search for a friend"}

    )}
); }