import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import styles from './CreateSticker.module.css'; import TokenPacksModal from '../components/tokens/TokenPacksModal'; import { tokenPacks } from '../constants/tokenPacks'; import { paymentService } from '../services/paymentService'; import apiService from '../services/api'; import { getCurrentUserId } from '../constants/user'; import NotificationModal from '../components/shared/NotificationModal'; const TOKENS_PER_GENERATION = 10; const CreateSticker: React.FC = () => { const navigate = useNavigate(); const [showTokensModal, setShowTokensModal] = useState(false); const [missingTokens, setMissingTokens] = useState(0); const [lastPurchasedPack, setLastPurchasedPack] = useState(null); // Состояния для модального окна уведомления const [showNotificationModal, setShowNotificationModal] = useState(false); const [notificationTitle, setNotificationTitle] = useState(''); const [notificationMessage, setNotificationMessage] = useState(''); const checkTokensAndProceed = async () => { try { const userTokens = await apiService.getBalance(getCurrentUserId()); if (userTokens < TOKENS_PER_GENERATION) { setMissingTokens(TOKENS_PER_GENERATION - userTokens); setShowTokensModal(true); return false; } return true; } catch (error) { console.error('Error checking balance:', error); alert('Произошла ошибка при проверке баланса. Попробуйте позже.'); return false; } }; const handleUploadClick = async () => { const canProceed = await checkTokensAndProceed(); if (canProceed) { // Здесь будет логика загрузки фото console.log('Загрузка фото...'); } }; return (

Создание стикера

Загрузите фотографию для создания стикера

📷 Нажмите чтобы выбрать фото или перетащите файл сюда Стоимость: {TOKENS_PER_GENERATION} токенов
setShowTokensModal(false)} onShowAllPacks={() => navigate('/profile')} missingTokens={missingTokens} onBuyPack={(packId: string) => { const pack = tokenPacks.find(p => p.id === packId); if (!pack) return; setShowTokensModal(false); setLastPurchasedPack(pack); paymentService.showBuyTokensPopup(pack, async (userData) => { if (userData) { // Обновляем данные на основе полученной информации // Показываем модальное окно с информацией об успешной оплате setNotificationTitle('Оплата успешна!'); setNotificationMessage(`Вы успешно приобрели ${pack.tokens + pack.bonusTokens} токенов.`); setShowNotificationModal(true); } else { // Если данные не получены, делаем запрос на получение данных пользователя try { // Получаем баланс пользователя const balance = await apiService.getBalance(getCurrentUserId()); // Показываем модальное окно с информацией об успешной оплате setNotificationTitle('Оплата успешна!'); setNotificationMessage(`Вы успешно приобрели ${pack.tokens + pack.bonusTokens} токенов. Ваш текущий баланс: ${balance} токенов.`); setShowNotificationModal(true); } catch (error) { console.error('Ошибка при обновлении данных пользователя:', error); } } }); }} /> {/* Модальное окно уведомления */} setShowNotificationModal(false)} onContinueClick={() => setShowNotificationModal(false)} showGalleryButton={false} continueButtonText="Закрыть" />
); }; export default CreateSticker;