import { useEffect, useState } from 'react';
import { useSelector } from 'react-redux';
import { CometChatUIKit } from '@cometchat/chat-uikit-react';
import { AppStore } from '@/lib/store';

/** True once CometChat UIKit has a logged-in user (Redux or SDK). */
export function useCometChatReady() {
    const chatUserData = useSelector((state: AppStore) => state.cometChatSlice.chatUserData);
    const [ready, setReady] = useState(() => !!chatUserData);

    useEffect(() => {
        if (chatUserData) {
            setReady(true);
            return;
        }

        let cancelled = false;

        const checkLoggedIn = async () => {
            try {
                const user = await CometChatUIKit.getLoggedinUser();
                if (!cancelled && user) {
                    setReady(true);
                }
            } catch {
                // CometChat not initialized yet
            }
        };

        checkLoggedIn();
        const intervalId = window.setInterval(checkLoggedIn, 250);

        return () => {
            cancelled = true;
            window.clearInterval(intervalId);
        };
    }, [chatUserData]);

    return ready;
}
