"use client"; import { api } from "@/lib/trpc"; import { usePathname, useRouter, useSearchParams } from "next/navigation"; import BookmarksGrid from "../bookmarks/components/BookmarksGrid"; import { Input } from "@/components/ui/input"; import Loading from "../bookmarks/loading"; import { keepPreviousData } from "@tanstack/react-query"; import { Search } from "lucide-react"; import { ActionButton } from "@/components/ui/action-button"; import { Suspense, useRef } from "react"; function SearchComp() { const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); const searchQuery = searchParams.get("q") || ""; const { data, isPending, isPlaceholderData, error } = api.bookmarks.searchBookmarks.useQuery( { text: searchQuery, }, { placeholderData: keepPreviousData, }, ); if (error) { throw error; } const inputRef: React.MutableRefObject = useRef(null); let timeoutId: NodeJS.Timeout | undefined; // Debounce user input const doSearch = () => { if (!inputRef.current) { return; } router.replace(`${pathname}?q=${inputRef.current.value}`); }; const onInputChange = () => { if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(() => { doSearch(); }, 200); }; return (
Search

{data ? ( b.id) }} bookmarks={data.bookmarks} /> ) : ( )}
); } export default function SearchPage() { return ( ); }