30 lines
753 B
TypeScript
30 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;
|
||
|
|
}
|