'use client'; import { useState } from 'react'; import { handleNavigateToPayment } from '@/lib/services/medusaCart.service'; import { formatCurrency } from '@/packages/shared/src/utils'; import { initiatePaymentSession } from '@lib/data/cart'; import { StoreCart, StoreCartLineItem } from '@medusajs/types'; import { Loader2 } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { Button } from '@kit/ui/button'; import { Card, CardContent, CardHeader } from '@kit/ui/card'; import { Trans } from '@kit/ui/trans'; import AnalysisLocation from './analysis-location'; import CartItems from './cart-items'; import DiscountCode from './discount-code'; const IS_DISCOUNT_SHOWN = true as boolean; export default function Cart({ cart, synlabAnalyses, ttoServiceItems, }: { cart: StoreCart | null; synlabAnalyses: StoreCartLineItem[]; ttoServiceItems: StoreCartLineItem[]; }) { const { i18n: { language }, } = useTranslation(); const [isInitiatingSession, setIsInitiatingSession] = useState(false); const items = cart?.items ?? []; if (!cart || items.length === 0) { return (

); } async function initiatePayment() { setIsInitiatingSession(true); const response = await initiatePaymentSession(cart!, { provider_id: 'pp_montonio_montonio', }); if (response.payment_collection) { const { payment_sessions } = response.payment_collection; const paymentSessionId = payment_sessions![0]!.id; const url = await handleNavigateToPayment({ language, paymentSessionId }); window.location.href = url; } else { setIsInitiatingSession(false); } } const hasCartItems = Array.isArray(cart.items) && cart.items.length > 0; const isLocationsShown = synlabAnalyses.length > 0; return (
{hasCartItems && ( <>

{formatCurrency({ value: cart.subtotal, currencyCode: cart.currency_code, locale: language, })}

{formatCurrency({ value: cart.discount_total, currencyCode: cart.currency_code, locale: language, })}

{formatCurrency({ value: cart.total, currencyCode: cart.currency_code, locale: language, })}

)}
{IS_DISCOUNT_SHOWN && (
)} {isLocationsShown && (
)}
); }