import { useGetProductByPkQuery } from '@akinon/next/data/client/product'; import { useRemoveFavoriteMutation } from '@akinon/next/data/client/wishlist'; import { useAddProductToBasket } from '../../hooks'; import clsx from 'clsx'; import { FavoriteItem as FavoriteItemType } from '@akinon/next/types'; import { Price, Button, Icon, Select, Skeleton, SkeletonWrapper, Link } from '@theme/components'; import { useLocalization } from '@akinon/next/hooks'; import { Image } from '@akinon/next/components/image'; import { useState } from 'react'; interface Props { item: FavoriteItemType; index: number; } // item.produt is the product come from the favorites endpoint // data.product is the product come from the product endpoint // these are different because the favorites endpoint does not have the product variant and selected variants etc. export const FavoriteItem = (props: Props) => { const { t } = useLocalization(); const { item, index } = props; const [selectedProduct, setProduct] = useState(item.product); const { data, isLoading, isSuccess } = useGetProductByPkQuery( selectedProduct.pk ); const [removeFavorite, { isLoading: isRemoveFavoriteLoading }] = useRemoveFavoriteMutation(); const [addProductToBasket, { isLoading: isAddProductToBasketLoading }] = useAddProductToBasket(); const handleOnClick = (selectedProduct, favoriteProduct) => { if ( favoriteProduct.product.attributes.color === selectedProduct.attributes.color || favoriteProduct.product.pk === selectedProduct.pk ) removeFavorite(favoriteProduct.pk); addProductToBasket({ product: selectedProduct.pk, quantity: 1, attributes: {} }); }; return (