import Link from 'next/link' import { FC, useState } from 'react' import CartItem from '@components/cart/CartItem' import { Button, Text } from '@components/ui' import { useUI } from '@components/ui/context' import SidebarLayout from '@components/common/SidebarLayout' import useCart from '@framework/cart/use-cart' import usePrice from '@framework/product/use-price' import useCheckout from '@framework/checkout/use-checkout' import ShippingWidget from '../ShippingWidget' import PaymentWidget from '../PaymentWidget' import s from './CheckoutSidebarView.module.css' import { useCheckoutContext } from '../context' import GetTaxationWidget from '@components/checkout/GetTaxationWidget' import ShowTaxationWidget from '@components/checkout/ShowTaxWidget' import ShippingRatesWidget from '@components/checkout/ShippingRatesWidget' import useShowTax from '@framework/tax/show-tax' import useShowShipping from '@framework/shippingRates/get-shipping-rates' const CheckoutSidebarView: FC = () => { const [loadingSubmit, setLoadingSubmit] = useState(false) const { closeSidebar, setSidebarView, sidebarView } = useUI() const { data: cartData, revalidate: refreshCart } = useCart() const { data: checkoutData, submit: onCheckout } = useCheckout() const { clearCheckoutFields } = useCheckoutContext() const [tax , setTax] = useState(); const [shipping , setShipping] = useState(); async function callTax(){ console.log(cartData , "in call tax") const res = await useShowTax( cartData && { amount: Number(cartData.subtotalPrice), cartId : cartData.id } ) setTax(res); } callTax(); async function callShipping(){ console.log(cartData , "in call tax") const res = await useShowShipping( cartData && { amount: Number(cartData.subtotalPrice), cartId : cartData.id } ) setShipping(res); } callShipping(); async function handleSubmit(event: React.ChangeEvent) { try { setLoadingSubmit(true) event.preventDefault() await onCheckout() clearCheckoutFields() setLoadingSubmit(false) refreshCart() closeSidebar() } catch { // TODO - handle error UI here. setLoadingSubmit(false) } } const { price: subTotal } = usePrice( cartData && { amount: Number(cartData.subtotalPrice), currencyCode: cartData.currency.code, } ) const { price: total } = usePrice( cartData && { amount: Number(cartData.totalPrice), currencyCode: cartData.currency.code, } ) return ( setSidebarView('CART_VIEW')} >
Checkout setSidebarView('PAYMENT_VIEW')} /> setSidebarView('SHIPPING_VIEW')} />
setSidebarView('SHOW_TAXATION_VIEW')} />
setSidebarView('SHIPPING_RATES_WIDGET')} />
    {cartData!.lineItems.map((item: any) => ( ))}
  • Subtotal {subTotal}
  • Taxes {tax}
  • Shipping {shipping}
Total {total}
{/* Once data is correctly filled */}
) } export default CheckoutSidebarView