import { useCallback, useMemo } from 'react';
import { toast } from 'sonner';

/**
 * Hook para gerenciar notificações toast no ambiente Workspace
 * Usa sonner para exibir mensagens de sucesso, erro, warning e info
 */
export const useToast = () => {
  const success = useCallback((message, title = 'Sucesso!') => {
    toast.success(title, {
      description: message,
      duration: 4000,
    });
  }, []);

  const error = useCallback((message, title = 'Erro!') => {
    toast.error(title, {
      description: message,
      duration: 5000,
    });
  }, []);

  const warning = useCallback((message, title = 'Atenção!') => {
    toast.warning(title, {
      description: message,
      duration: 4000,
    });
  }, []);

  const info = useCallback((message, title = 'Informação') => {
    toast.info(title, {
      description: message,
      duration: 4000,
    });
  }, []);

  const notifyFields = useCallback((fields) => {
    toast.warning('Campos Obrigatórios', {
      description: `Por favor, preencha: ${fields.join(', ')}`,
      duration: 5000,
    });
  }, []);

  const handleBackendError = useCallback((error) => {
    console.error(error);
    const msg = error.response?.data?.message || error.message || 'Erro desconhecido na comunicação com o servidor.';
    toast.error('Erro do Sistema', {
      description: msg,
      duration: 5000,
    });
  }, []);

  return useMemo(() => ({
    success,
    error,
    warning,
    info,
    notifyFields,
    handleBackendError,
  }), [success, error, warning, info, notifyFields, handleBackendError]);
};
