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'; const TrackingOrder = () => { const [idAWB, setIdAWB] = useState(null); const [inputQuery, setInputQuery] = useState(null); const [buttonClick, setButtonClick] = useState(false); const [apiError, setApiError] = useState(null); // State to store API error message 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); }; return (

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;