import { hasValidSession, WidgetType } from "@/utils/session-storage"; import { useEffect, useRef } from "react"; import { useChatContext } from "@/providers/chat/chat-context"; import { getSharingId } from "@/utils/sharing-id"; export function useBotInitializer(widgetType: WidgetType) { const { initializeBot, botData } = useChatContext(); const lastInitializedRef = useRef(null); useEffect(() => { const sharingId = getSharingId(); if (!sharingId) return; // Skip if we've already initialized with this sharingId if (lastInitializedRef.current === sharingId) return; // Always initialize if botData is null (since it's no longer cached) // or if there's no valid session if (!botData || !hasValidSession(widgetType)) { // Track that we're attempting to initialize with this sharingId lastInitializedRef.current = sharingId; initializeBot(sharingId); } }, [initializeBot, widgetType, botData]); return { botData: botData }; }