"use client" import { useSearchParams } from 'next/navigation' import { useEffect, useState } from "react"; import { MemoizedReactMarkdown } from '../../../components/MemoizedReactMarkdown' import { CodeBlock } from '../../../components/CodeBlock'; import WebSearchResults from '../../../components/WebSearchResults'; export default function WebSearchPage() { const searchParams = useSearchParams() const [aiResponse, setAiResponse] = useState(""); const [searchTerm, setSearchTerm] = useState() const [searchResults, setSearchResults] = useState([]); useEffect(() => { try { const streamArray = JSON.parse(aiResponse); setSearchResults(streamArray); } catch (err) { return; } }, [aiResponse]) useEffect(() => { setSearchTerm(searchParams.get('searchTerm')) }, [searchParams]) useEffect(() => { const controller = new AbortController(); const signal = controller.signal; if (!searchTerm) { return; } async function fetchData() { const response = await fetch('/api/llm', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ question: searchTerm }), signal, }); const data = response.body; if (!data) { return; } const reader = data.getReader(); const decoder = new TextDecoder(); let done = false; while (!done) { const { value, done: doneReading } = await reader.read(); done = doneReading; const chunkValue = decoder.decode(value); if (chunkValue) { setAiResponse(chunkValue); } } }; fetchData(); return () => controller.abort(); }, [searchParams, searchTerm]); return ( <> {!searchResults.length ?
{children}
);
},
table({ children }) {
return (