'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { sendEmailFromTemplate } from '@/lib/services/mailer.service'; import { CompanySubmitData } from '@/lib/types/company'; import { companyOfferSchema } from '@/lib/validations/company-offer.schema'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { renderCompanyOfferEmail } from '@kit/email-templates'; import { SubmitButton } from '@kit/shared/components/ui/submit-button'; import { FormItem } from '@kit/ui/form'; import { Input } from '@kit/ui/input'; import { Label } from '@kit/ui/label'; import { Spinner } from '@kit/ui/spinner'; import { Trans } from '@kit/ui/trans'; import { sendCompanyOfferEmail } from '../_lib/server/company-offer-actions'; const CompanyOfferForm = () => { const [isLoading, setIsLoading] = useState(false); const router = useRouter(); const language = useTranslation().i18n.language; const { register, handleSubmit, formState: { isValid, isSubmitting }, } = useForm({ resolver: zodResolver(companyOfferSchema), mode: 'onChange', }); const onSubmit = async (data: CompanySubmitData) => { setIsLoading(true); try { await sendCompanyOfferEmail(data, language); router.push('/company-offer/success'); } catch (err) { setIsLoading(false); if (err instanceof Error) { console.warn('Could not send company offer email: ' + err.message); } console.warn('Could not send company offer email: ', err); } const formData = new FormData(); Object.entries(data).forEach(([key, value]) => { if (value !== undefined) formData.append(key, value); }); try { sendEmailFromTemplate( renderCompanyOfferEmail, { companyData: data, language, }, process.env.CONTACT_EMAIL!, ) .then(() => router.push('/company-offer/success')) .catch((error) => { setIsLoading(false); alert('Could not send email at this time'); console.warn('error: ' + error); }); } catch (err: unknown) { setIsLoading(false); if (err instanceof Error) { console.warn('Server validation error: ' + err.message); } console.warn('Server validation error: ', err); } }; return (
{isLoading ? ( ) : ( )}
); }; export default CompanyOfferForm;