import { FeedbackData } from '../components/shared/FeedbackModal';

// Функция для преобразования File в base64
const fileToBase64 = (file: File): Promise<string> => {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => {
      // Получаем base64 строку и удаляем префикс (data:image/jpeg;base64,)
      const base64String = reader.result as string;
      const base64Content = base64String.split(',')[1];
      resolve(base64Content);
    };
    reader.onerror = error => reject(error);
  });
};

// Функция для получения информации о пользователе из Telegram
const getUserInfo = () => {
  if (window.Telegram && window.Telegram.WebApp && window.Telegram.WebApp.initDataUnsafe) {
    const { user } = window.Telegram.WebApp.initDataUnsafe;
    if (user) {
      return {
        user_id: user.id.toString(),
        username: user.username || `${user.first_name} ${user.last_name || ''}`.trim()
      };
    }
  }
  
  // Заглушка для тестирования
  return {
    user_id: "test_user_id",
    username: "test_user"
  };
};

// Функция для отправки данных обратной связи
export const sendFeedback = async (data: FeedbackData): Promise<boolean> => {
  try {
    // Получаем информацию о пользователе
    const userInfo = getUserInfo();
    
    // Преобразуем все изображения в base64
    const base64Images = await Promise.all(data.images.map(fileToBase64));
    
    // Формируем данные для отправки
    const requestData = {
      text: data.text,
      user_id: userInfo.user_id,
      username: userInfo.username,
      images: base64Images
    };
    
    console.log('Отправка данных обратной связи:', requestData);
    
    // Отправляем запрос
    const response = await fetch('https://feedbacksticker.gymnasticstuff.uk/feedback', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(requestData)
    });
    
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    
    console.log('Обратная связь успешно отправлена');
    return true;
  } catch (error) {
    console.error('Ошибка при отправке обратной связи:', error);
    return false;
  }
};
