From 702da7f790bfb153d0015dc272f25604871a7e59 Mon Sep 17 00:00:00 2001 From: KinfeMichael Tariku <65047246+Kinfe123@users.noreply.github.com> Date: Tue, 30 Sep 2025 23:04:58 +0300 Subject: [PATCH] docs: replace with better-fetch and maxDuration for the vercel runtime (#4997) --- docs/app/api/ai-chat/route.ts | 6 +++--- docs/components/floating-ai-search.tsx | 24 +++++++++++++++--------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/docs/app/api/ai-chat/route.ts b/docs/app/api/ai-chat/route.ts index 1846725b..9fc441b1 100644 --- a/docs/app/api/ai-chat/route.ts +++ b/docs/app/api/ai-chat/route.ts @@ -1,6 +1,6 @@ -import { NextRequest, NextResponse } from "next/server"; - -export async function POST(request: NextRequest) { +import { NextResponse } from "next/server"; +export const maxDuration = 300; +export async function POST(request: Request) { try { const body = await request.json(); const gurubasePayload = { diff --git a/docs/components/floating-ai-search.tsx b/docs/components/floating-ai-search.tsx index 1651953b..7606597b 100644 --- a/docs/components/floating-ai-search.tsx +++ b/docs/components/floating-ai-search.tsx @@ -16,6 +16,7 @@ import { buttonVariants } from "fumadocs-ui/components/ui/button"; import Link from "fumadocs-core/link"; import { Markdown } from "./markdown"; import { Presence } from "@radix-ui/react-presence"; +import { betterFetch } from "@better-fetch/fetch"; const Context = createContext<{ open: boolean; @@ -81,7 +82,7 @@ function SearchAIInput(props: ComponentProps<"form">) { placeholder={isLoading ? "AI is answering..." : "Ask AI"} autoFocus className="p-4" - disabled={status === "streaming" || status === "submitted"} + disabled={isLoading} onChange={(e) => { setInput(e.target.value); }} @@ -321,7 +322,14 @@ export function AISearchTrigger() { requestBody.session_id = sessionId; } - const response = await fetch("/api/ai-chat", { + const { data, error } = await betterFetch<{ + content?: string; + answer?: string; + response?: string; + session_id?: string; + references?: Array<{ link: string; title: string; icon?: string }>; + error?: string; + }>("/api/ai-chat", { method: "POST", headers: { "Content-Type": "application/json", @@ -329,16 +337,12 @@ export function AISearchTrigger() { body: JSON.stringify(requestBody), }); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); + if (error) { + console.error("API Error Response:", error); + throw new Error(`HTTP ${error.status}: ${error.message}`); } - const data = await response.json(); - console.log("API Response:", data); - - // Extract session_id from response if present if (data.session_id) { - console.log("Received session_id:", data.session_id); setSessionId(data.session_id); } @@ -348,6 +352,8 @@ export function AISearchTrigger() { responseContent = data.content; } else if (data.answer) { responseContent = data.answer; + } else if (data.response) { + responseContent = data.response; } else if (data.error) { responseContent = data.error; } else {