import React from 'react';
import {
  FiAlertCircle,
  FiInfo,
  FiCheckCircle,
  FiXCircle,
} from 'react-icons/fi';

import { ToastMessage, useModal } from '../../../hooks/toastModal';

import { Container } from './styles';

interface ToastModalProps {
  message: ToastMessage;
  style: object;
}

const icons = {
  info: <FiInfo size={24} />,
  success: <FiCheckCircle size={24} />,
  error: <FiAlertCircle size={24} />,
};

const ToastModal: React.FC<ToastModalProps> = ({ message, style }) => {
  const { removeModal } = useModal();

  return (
    <Container
      type={message.type}
      hasdescription={Number(!!message.description)}
      style={style}
    >
      {icons[message.type || 'info']}

      <div>
        <strong>{message.title}</strong>
        {message.description && <p>{message.description}</p>}
      </div>

      <button type="button" onClick={() => removeModal(message.id)}>
        <FiXCircle size={18} />
      </button>
    </Container>
  );
};

export default ToastModal;