chatbot-template/components/chat/data-stream-handler.tsx

30 lines
753 B
TypeScript
Raw Permalink Normal View History

"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;
}