import { yupResolver } from '@hookform/resolvers/yup'; import React, { useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; import * as Yup from 'yup'; import Manifest from '@/lib/treckingAwb/component/Manifest'; import { trackingOrder } from '../api/trackingOrder'; import { useQuery } from 'react-query'; import { Spinner } from '@chakra-ui/react'; import { Search } from 'lucide-react'; import Link from 'next/link'; import odooApi from '~/libs/odooApi'; import Image from '~/components/ui/image'; import useDevice from '@/core/hooks/useDevice'; const TrackingOrder = () => { const [idAWB, setIdAWB] = useState(null); const { isDesktop, isMobile } = useDevice(); const [inputQuery, setInputQuery] = useState(null); const [buttonClick, setButtonClick] = useState(false); const [apiError, setApiError] = useState(null); // State to store API error message const [BannerTracking, setBannerTracking] = useState(); const closePopup = () => { setIdAWB(null); setButtonClick(false); setInputQuery(null); setApiError(null); // Reset error message on close }; const { register, handleSubmit, formState: { errors }, control, reset, } = useForm({ resolver: yupResolver(validationSchema), defaultValues, }); const query = { email: inputQuery?.email, so: inputQuery?.id, }; const { data: tracking, isLoading, isError, error, } = useQuery(['tracking', query], () => trackingOrder({ query: query }), { enabled: !!query.email && !!query.so, onSuccess: (data) => { if (buttonClick) { if (data?.code === 403 || data?.code === 400 || data?.code === 404) { setApiError(data?.description); } else if (data?.pickings?.length > 0) { setIdAWB(data.pickings[0]?.id); } else { setApiError('No pickings data available'); } setButtonClick(false); setInputQuery(null); } }, }); const onSubmitHandler = async (values) => { setInputQuery(values); setButtonClick(true); }; useEffect(() => { const getBanner = async () => { const get = await odooApi( 'GET', '/api/v1/banner?type=tracking-order-banner' ); setBannerTracking(get[0].image); }; getBanner(); }, []); return (
{BannerTracking && ( Tracking Order )}

Tracking Order

{`Untuk melacak pesanan Anda, masukkan Nomor Transaksi di kotak bawah ini dan masukkan Email login anda lalu tekan tombol "Lacak". Nomor Transaksi ini dapat Anda lihat dalam menu `} Daftar Transaksi {`. Jika mengalami kesulitan `} hubungi kami {`.`}

{errors.id?.message}
{errors.email?.message}
{/* Display the API error message */} {apiError &&
{apiError}
}
); }; const validationSchema = Yup.object().shape({ email: Yup.string() .email('Format harus seperti contoh@email.com') .required('Harus di-isi'), id: Yup.string().required('Harus di-isi'), }); const defaultValues = { email: '', id: '', }; export default TrackingOrder;