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
39 lines
792 B
TypeScript
39 lines
792 B
TypeScript
import type { UseChatHelpers } from "@ai-sdk/react";
|
|
import { useEffect, useState } from "react";
|
|
import type { ChatMessage } from "@/lib/types";
|
|
import { useScrollToBottom } from "./use-scroll-to-bottom";
|
|
|
|
export function useMessages({
|
|
status,
|
|
}: {
|
|
status: UseChatHelpers<ChatMessage>["status"];
|
|
}) {
|
|
const {
|
|
containerRef,
|
|
endRef,
|
|
isAtBottom,
|
|
scrollToBottom,
|
|
onViewportEnter,
|
|
onViewportLeave,
|
|
reset,
|
|
} = useScrollToBottom();
|
|
|
|
const [hasSentMessage, setHasSentMessage] = useState(false);
|
|
|
|
useEffect(() => {
|
|
if (status === "submitted") {
|
|
setHasSentMessage(true);
|
|
}
|
|
}, [status]);
|
|
|
|
return {
|
|
containerRef,
|
|
endRef,
|
|
isAtBottom,
|
|
scrollToBottom,
|
|
onViewportEnter,
|
|
onViewportLeave,
|
|
hasSentMessage,
|
|
reset,
|
|
};
|
|
}
|