import { Avatar, Card, CardActions, CardContent, CardHeader, CardMedia, Typography, Grid, } from '@mui/material' import { useCallback } from 'react' import { CartButton } from './cart-button' import { useAppSelector, shop, useAppDispatch, basket } from '../storage' import { withProtection } from '../hocs' import { toast } from 'react-toastify' export type ProductDetailProps = { productId: number } export const ProductDetail = withProtection(({ productId }: ProductDetailProps) => { const product = useAppSelector(shop.selector.product(productId)) const error = useAppSelector(basket.selector.error) const user_count = useAppSelector(basket.selector.userCount(productId)) const dispatch = useAppDispatch() const handleCart = useCallback( (num: number) => { if (num > 0) { dispatch(basket.fetch.addProduct({ product_id: product?.id || -1 })) dispatch(shop.action.changeCount({ productId, count: -1 })) } else { dispatch(basket.fetch.deleteProduct({ product_id: product?.id || -1 })) dispatch(shop.action.changeCount({ productId, count: 1 })) } }, [dispatch] ) if (error) { toast.error(error || 'Не известная ошибка при аутентификации пользователя', { toastId: 'error-toast', }) } return ( {product?.name[0]} } title={product?.name} subheader={'2025 год'} /> {product?.description} {`Цена: ${product?.cost} ₽`} {`Доступно: ${product?.count} шт.`} ) })