import { useRef, useState, useCallback, useEffect } from "react"; import { scrollToBottom } from "~/utils/helpers"; import { WidgetType } from "~/utils/session-storage"; import { Message } from "~/types/chat"; /** * Hook to manage automatic scrolling to bottom of message list * @param messages - Current message array * @param widgetType - Type of widget (floating or embedded) * @returns Object containing messagesEndRef and scroll control functions */ export function useScrollManagement( messages: Message[], widgetType: WidgetType ) { const messagesEndRef = useRef(null); const [autoScrollEnabled, setAutoScrollEnabled] = useState(true); const scrollToBottomMessages = useCallback(() => { if (!autoScrollEnabled) return; scrollToBottom(messagesEndRef.current, widgetType); }, [autoScrollEnabled, widgetType]); useEffect(() => { scrollToBottomMessages(); }, [messages, scrollToBottomMessages]); return { messagesEndRef, setAutoScrollEnabled, }; }