'use client';

import useGlobalStore from '@/config/use-global';
import { Crisp } from 'crisp-sdk-web';
import { useEffect } from 'react';

// Configuration object for Crisp
const CRISP_CONFIG = {
  websiteId: '47fcc1ac-9674-4ab1-9e3c-6b5666f59a38',
  autoload: false,
};

/**
 * Initializes and configures the Crisp chat widget.
 * Sets user email if available and loads the widget.
 */
const CrispChat = () => {
  const { user } = useGlobalStore();

  useEffect(() => {
    // Configure Crisp with the provided website ID
    try {
      Crisp.configure(CRISP_CONFIG.websiteId, {
        autoload: CRISP_CONFIG.autoload,
      });
    } catch (error) {
      console.error('Failed to configure Crisp:', error);
    }

    // Set user email and load Crisp if auth_identifier exists
    if (user?.auth_methods?.[0]?.auth_identifier) {
      try {
        Crisp.setTokenId(`${user.auth_methods[0].auth_identifier}_${user.id}`);
        Crisp.user.setEmail(user.auth_methods[0].auth_identifier);
        Crisp.load();
      } catch (error) {
        console.error('Failed to set user email or load Crisp:', error);
      }
    }

    // Cleanup function to reset Crisp on component unmount
    return () => {
      try {
        Crisp.session.reset();
      } catch (error) {
        console.error('Failed to reset Crisp session:', error);
      }
    };
  }, [user]); // Re-run effect if user changes

  return null; // Component does not render anything
};

export default CrispChat;
