"use client"; import { getCookiesDecrypt } from "@/lib/utils"; import React, { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { getInfoProfile, getSubjects } from "@/service/auth"; import { close, error, loading, successCallback } from "@/config/swal"; import { sendMessage } from "@/service/landing/landing"; import { useTranslations } from "next-intl"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useRouter } from "@/i18n/routing"; import { Reveal } from "@/components/landing-page/Reveal"; interface IFormInput { name: string; email: string; phone?: string | undefined; subjects: string; othersubject?: string | undefined; message: string; } const ContactForm = () => { const router = useRouter(); const userId = getCookiesDecrypt("uie"); const [subjects, setSubjects] = useState([]); const [isOtherActive, setIsOtherActive] = useState(false); const t = useTranslations("LandingPage"); const validationSchema = z.object({ name: z.string().min(1, "Nama tidak boleh kosong"), email: z.string().email("Email tidak valid"), phone: z.string().optional(), subjects: z.string().min(1, "Subjek tidak boleh kosong"), othersubject: z.string().optional(), message: z.string().min(1, "Pesan tidak boleh kosong"), }); type IFormInput = z.infer; const { register, handleSubmit, formState: { errors }, setValue, reset, } = useForm({ resolver: zodResolver(validationSchema), }); // Init state useEffect(() => { async function initState() { const response = await getInfoProfile(); const responseSubject = await getSubjects(); const profile = response?.data?.data; setSubjects(responseSubject?.data?.data || []); if (profile) { setValue("name", profile?.fullname || ""); setValue("email", profile?.email || ""); } } initState(); }, [setValue]); async function save(data: IFormInput) { loading(); const finalData = { name: data.name, email: data.email, phone: data.phone, title: isOtherActive ? data.othersubject : data.subjects, message: data.message, }; const response = await sendMessage(finalData); if (response?.error) { error(response?.message); return; } close(); successCallback("Terima kasih, pesan Anda telah terkirim"); reset(); } async function onSubmit(data: IFormInput) { if (userId == undefined) { router.push("/auth"); } else { save(data); } } const handleSubjects = (e: React.ChangeEvent) => { if (e.target.value === "Lainnya") { setIsOtherActive(true); } else { setIsOtherActive(false); } }; return (
{/* Header */}

{t("contactUs", { defaultValue: "Contact Us" })}

{/*

{t("writeMessage", { defaultValue: "Write Message" })}

{t("leaveMessage", { defaultValue: "Leave Message" })}

*/} {/* Form */}
{/* Name */}
{errors.name && (

{errors.name.message}

)}
{/* Email */}
{errors.email && (

{errors.email.message}

)}
{/* Phone */}
{/* Subjects */}
{errors.subjects && (

{errors.subjects.message}

)}
{/* Other Subject */} {isOtherActive && (
{errors.othersubject && (

{errors.othersubject.message}

)}
)} {/* Message */}
{errors.message && (

{errors.message.message}

)}
); }; export default ContactForm;