import React, { useState, forwardRef, useImperativeHandle } from 'react';
import FeedbackModal from './FeedbackModal';
import { sendFeedback } from '../../services/feedbackService';
import { FeedbackData } from './FeedbackModal';

// Интерфейс для ref
export interface FeedbackHandlerRef {
  openFeedbackModal: () => void;
}

interface FeedbackHandlerProps {
  onFeedbackSent?: () => void; // Callback после успешной отправки
}

const FeedbackHandler = forwardRef<FeedbackHandlerRef, FeedbackHandlerProps>((props, ref) => {
  const { onFeedbackSent } = props;
  
  // Состояние для модального окна обратной связи
  const [isFeedbackModalVisible, setIsFeedbackModalVisible] = useState(false);
  
  // Экспортируем метод openFeedbackModal через ref
  useImperativeHandle(ref, () => ({
    openFeedbackModal: () => {
      setIsFeedbackModalVisible(true);
    }
  }));
  
  // Обработчик отправки формы обратной связи
  const handleFeedbackSubmit = async (data: FeedbackData): Promise<boolean> => {
    try {
      const result = await sendFeedback(data);
      console.log('Результат отправки обратной связи:', result);
      
      // Вызываем callback после успешной отправки
      if (result && onFeedbackSent) {
        onFeedbackSent();
      }
      
      return result;
    } catch (error) {
      console.error('Ошибка при отправке обратной связи:', error);
      return false;
    }
  };
  
  return (
    <>
      {/* Модальное окно обратной связи */}
      <FeedbackModal
        isVisible={isFeedbackModalVisible}
        onClose={() => setIsFeedbackModalVisible(false)}
        onSubmit={handleFeedbackSubmit}
      />
    </>
  );
});

export default FeedbackHandler;
