import { useState } from 'react';
import { soundAssets, playSound, initializeAudio } from '@/utils/sounds';

export const useLogoClickSounds = () => {
  const [logoClickCount, setLogoClickCount] = useState(0);
  const [isElephantMode, setIsElephantMode] = useState(false);
  const [isMouseSqueaking, setIsMouseSqueaking] = useState(false);

  const handleLogoClick = async () => {
    await initializeAudio();

    try {
      const newCount = logoClickCount + 1;
      setLogoClickCount(newCount);

      if (newCount >= 10 && Math.random() < 0.1) {
        setIsElephantMode(true);
        await playSound(soundAssets.elephant, 0.6);

        setTimeout(() => {
          setIsElephantMode(false);
        }, 1500);
      } else {
        setIsMouseSqueaking(true);
        const squeakNumber = Math.floor(Math.random() * 5);
        await playSound(soundAssets.mouseSqueaks[squeakNumber], 0.4);

        setTimeout(() => {
          setIsMouseSqueaking(false);
        }, 300);
      }
    } catch {}
  };

  const getLogoStyles = () => ({
    cursor: 'pointer',
    userSelect: 'none' as const,
    transition: 'transform 0.15s ease-in-out',
    transform: isElephantMode
      ? 'scale(1.3) rotate(5deg)'
      : 'scale(1) rotate(0deg)',
    animation: isElephantMode
      ? 'elephantShake 1.5s ease-in-out'
      : isMouseSqueaking
        ? 'mouseSqueak 0.3s ease-in-out'
        : 'none',
  });

  return {
    handleLogoClick,
    getLogoStyles,
    isElephantMode,
    isMouseSqueaking,
  };
};
