Stripped from vercel/chatbot (Apache 2.0): - Dropped @vercel/* packages and AI Gateway - Removed artifacts feature (code/text/sheet/image side panel) - Switched AI provider to @ai-sdk/openai-compatible -> EGBE LiteLLM - Replaced Vercel Blob upload with data URLs - Dropped Redis resumable streams and rate limiter (in-memory now) - Added Dockerfile (Next.js standalone) + entrypoint that runs migrations - Wired DATABASE_URL, EGBE_AI_API_URL/KEY, NEXT_PUBLIC_BASE_URL for app-deploy.sh
29 lines
753 B
TypeScript
29 lines
753 B
TypeScript
"use client";
|
|
|
|
import { useEffect } from "react";
|
|
import { useSWRConfig } from "swr";
|
|
import { unstable_serialize } from "swr/infinite";
|
|
import { useDataStream } from "./data-stream-provider";
|
|
import { getChatHistoryPaginationKey } from "./sidebar-history";
|
|
|
|
export function DataStreamHandler() {
|
|
const { dataStream, setDataStream } = useDataStream();
|
|
const { mutate } = useSWRConfig();
|
|
|
|
useEffect(() => {
|
|
if (!dataStream?.length) {
|
|
return;
|
|
}
|
|
|
|
const newDeltas = dataStream.slice();
|
|
setDataStream([]);
|
|
|
|
for (const delta of newDeltas) {
|
|
if (delta.type === "data-chat-title") {
|
|
mutate(unstable_serialize(getChatHistoryPaginationKey));
|
|
}
|
|
}
|
|
}, [dataStream, setDataStream, mutate]);
|
|
|
|
return null;
|
|
}
|