// src/hooks/useMicrophonePermission.ts

import { useState, useEffect } from 'react';
import { PermissionManager, PermissionState } from '../PermissionManager';

export function useMicrophonePermission() {
  const [permissionState, setPermissionState] = useState<PermissionState>('prompt');
  const permissionManager = PermissionManager.getInstance();

  useEffect(() => {
    // Mettre à jour l'état initial
    setPermissionState(permissionManager.getMicrophoneState());

    // Fonction de rappel pour les mises à jour
    const handlePermissionChange = (state: PermissionState) => {
      setPermissionState(state);
    };

    // Ajouter l'écouteur
    permissionManager.addMicrophoneListener(handlePermissionChange);

    // Nettoyer l'écouteur lors du démontage
    return () => {
      // Pas de méthode pour supprimer l'écouteur dans cet exemple simple
      // Vous pouvez implémenter une méthode pour supprimer l'écouteur si nécessaire
    };
  }, [permissionManager]);

  const requestPermission = async () => {
    const state = await permissionManager.requestMicrophonePermission();
    setPermissionState(state);
    return state;
  };

  return {
    permissionState,
    requestPermission,
  };
}
