diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-06-05 15:24:42 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-06-05 15:24:42 +0700 |
| commit | f9f1fdf83c2b6ed5c1d85d7418d45aeed9b05c77 (patch) | |
| tree | 40085a6767582a40f8a38d7c4fef6372a6a0da16 /src-migrate/modules/cart | |
| parent | 87432c8627896711167813654dce2969ce45e643 (diff) | |
<iman> add feature SNI-TKDR
Diffstat (limited to 'src-migrate/modules/cart')
| -rw-r--r-- | src-migrate/modules/cart/components/Item.tsx | 59 |
1 files changed, 55 insertions, 4 deletions
diff --git a/src-migrate/modules/cart/components/Item.tsx b/src-migrate/modules/cart/components/Item.tsx index 6ded6373..fed11eb0 100644 --- a/src-migrate/modules/cart/components/Item.tsx +++ b/src-migrate/modules/cart/components/Item.tsx @@ -4,7 +4,8 @@ import { Skeleton, SkeletonProps, Tooltip } from '@chakra-ui/react' import { InfoIcon } from 'lucide-react' import Image from 'next/image' import Link from 'next/link' - +import ImageNext from 'next/image'; +import { useEffect, useState } from 'react'; import { PROMO_CATEGORY } from '~/constants/promotion' import formatCurrency from '~/libs/formatCurrency' import { createSlug } from '~/libs/slug' @@ -20,6 +21,31 @@ type Props = { } const CartItem = ({ item, editable = true }: Props) => { + const [isSni, setIsSni] = useState(false); + const [isTkdn, setTkdn] = useState(false); + + useEffect(() => { + const fetchData = async () => { + try { + const responseSni = await fetch('URL_API_SNI'); + const dataSni = await responseSni.json(); + setIsSni(dataSni && dataSni.sni); + + const responseTkdn = await fetch('URL_API_TKDN'); + const dataTkdn = await responseTkdn.json(); + setTkdn(dataTkdn && dataTkdn.tkdn); + } catch (error) { + console.error('Error fetching data:', error); + setIsSni(false); + setTkdn(false); + } + }; + + fetchData(); + + return () => {}; + }, []); + return ( <div className={style.wrapper}> {item.cart_type === 'promotion' && ( @@ -46,7 +72,7 @@ const CartItem = ({ item, editable = true }: Props) => { {editable && <CartItemSelect item={item} />} <div className='w-4' /> - <CartItem.Image item={item} /> + <CartItem.Image item={item} isSni={isSni} isTkdn={isTkdn} /> <div className={style.details}> <CartItem.Name item={item} /> @@ -98,7 +124,7 @@ const CartItem = ({ item, editable = true }: Props) => { ) } -CartItem.Image = function CartItemImage({ item }: { item: CartItemProps }) { +CartItem.Image = function CartItemImage({ item, isSni, isTkdn }: { item: CartItemProps, isSni: boolean, isTkdn: boolean }) { const image = item?.image || item?.parent?.image return ( @@ -116,6 +142,31 @@ CartItem.Image = function CartItemImage({ item }: { item: CartItemProps }) { className={style.image} > {image && <Image src={image} alt={item.name} width={128} height={128} />} + + <div className="relative top-2 right-4 flex"> + {/* <div className="gambarB mr-1 bg-red-100"> */} + {!isSni && ( + <ImageNext + src="/images/sni-logo.png" + alt="SNI Logo" + className="w-4 h-3 object-contain object-top sm:h-4" + width={50} + height={50} + /> + )} + {/* </div> */} + {/* <div className="gambarC bg-red-500"> */} + {!isTkdn && ( + <ImageNext + src="/images/TKDN.png" + alt="TKDN" + className="w-10 h-5 object-contain object-top ml-1 mr-1 sm:h-10" + width={50} + height={50} + /> + )} + {/* </div> */} + </div> {!image && <div className={style.noImage}>No Image</div>} </Link> )} @@ -153,4 +204,4 @@ CartItem.Skeleton = function CartItemSkeleton(props: SkeletonProps & { count: nu )) } -export default CartItem
\ No newline at end of file +export default CartItem |
