import { useState } from 'react'; import { useRouter } from 'next/router'; import { ShoppingCart, Check, AlertCircle } from 'lucide-react'; import cartService from '../services/cart'; import authService from '../services/auth'; interface AddToCartButtonProps { variantId: number; quantity?: number; className?: string; onAddToCart?: () => void; } export default function AddToCartButton({ variantId, quantity = 1, className = '', onAddToCart }: AddToCartButtonProps) { const router = useRouter(); const [loading, setLoading] = useState(false); const [success, setSuccess] = useState(false); const [error, setError] = useState(null); const handleAddToCart = async () => { // Проверяем, авторизован ли пользователь if (!authService.isAuthenticated()) { // Сохраняем текущий URL для редиректа после авторизации const currentPath = router.asPath; router.push(`/login?redirect=${encodeURIComponent(currentPath)}`); return; } setLoading(true); setError(null); try { await cartService.addToCart({ variant_id: variantId, quantity: quantity }); setSuccess(true); // Вызываем колбэк, если он передан if (onAddToCart) { onAddToCart(); } // Сбрасываем состояние успеха через 2 секунды setTimeout(() => { setSuccess(false); }, 2000); } catch (err) { console.error('Ошибка при добавлении в корзину:', err); setError('Не удалось добавить товар в корзину'); // Сбрасываем состояние ошибки через 3 секунды setTimeout(() => { setError(null); }, 3000); } finally { setLoading(false); } }; return (
{error && (
{error}
)}
); }