"use client"; import BreadCrumb from "@/components/BreadCrumb/BreadCrumb"; import { handleKeyDown, inpNum, prefillVerificationDetails, prepareCustomFieldFiles, prepareCustomFieldTranslations, t, validateExtraDetails, } from "@/utils"; import { getVerificationFiledsApi, getVerificationStatusApi, sendVerificationReqApi, } from "@/utils/api"; import { useEffect, useState } from "react"; import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Checkbox } from "@/components/ui/checkbox"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { toast } from "sonner"; import { MdOutlineAttachFile } from "react-icons/md"; import { HiOutlineUpload } from "react-icons/hi"; import CustomLink from "@/components/Common/CustomLink"; import Layout from "@/components/Layout/Layout"; import Checkauth from "@/HOC/Checkauth"; import AdLanguageSelector from "../AdsListing/AdLanguageSelector"; import { getDefaultLanguageCode, getLanguages, } from "@/redux/reducer/settingSlice"; import { useSelector } from "react-redux"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import PageLoader from "@/components/Common/PageLoader"; import { getCurrentLangCode } from "@/redux/reducer/languageSlice"; import CustomImage from "@/components/Common/CustomImage"; import { useNavigate } from "@/components/Common/useNavigate"; const UserVerification = () => { const { navigate } = useNavigate(); const [UserVeriFields, setUserVeriFields] = useState([]); const [filePreviews, setFilePreviews] = useState({}); const [VerificationStatus, setVerificationStatus] = useState(""); const [verificationLoading, setVerificationLoading] = useState(false); const [isVerifying, setIsVerifying] = useState(false); const langCode = useSelector(getCurrentLangCode); const languages = useSelector(getLanguages); const defaultLanguageCode = useSelector(getDefaultLanguageCode); const defaultLangId = languages?.find( (lang) => lang.code === defaultLanguageCode )?.id; const [langId, setLangId] = useState(defaultLangId); const [translations, setTranslations] = useState({ [defaultLangId]: {}, }); const currentTranslation = translations[langId] || {}; const hasTextbox = UserVeriFields.some((field) => field.type === "textbox"); useEffect(() => { fetchVerificationData(); }, [langCode]); const fetchVerificationData = async () => { try { setVerificationLoading(true); // Step 1: Fetch field definitions const fieldsRes = await getVerificationFiledsApi.getVerificationFileds(); const fieldData = fieldsRes?.data?.data || []; setUserVeriFields(fieldData); // Step 2: Fetch verification values const statusRes = await getVerificationStatusApi.getVerificationStatus(); const statusData = statusRes?.data?.data; const statusError = statusRes?.data?.error; if (statusError) { setVerificationStatus("not applied"); } else { setVerificationStatus(statusData?.status); } const verification_fields = statusData?.verification_fields || []; // Step 3: Prepare translations const translationsToSet = prefillVerificationDetails({ data: fieldData, languages, defaultLangId, extraFieldValue: statusData?.status === "not applied" ? [] : verification_fields, setFilePreviews, }); setTranslations(translationsToSet); } catch (error) { console.log(error); } finally { setVerificationLoading(false); } }; const renderCustomFields = (field) => { let { id, name, translated_name, type, translated_value, values, min_length, max_length, } = field; const inputProps = { id, name: id, onChange: (e) => handleChange(id, e.target.value), value: currentTranslation[id] || "", ...(type === "number" ? { min: min_length, max: max_length } : { minLength: min_length, maxLength: max_length }), }; switch (type) { case "number": return (