import React, { useState, useEffect, useMemo, useRef } from 'react'; import { Controller, set, useForm } from 'react-hook-form'; import { usePengajuanTempoStoreDokumen } from '../../../../src-migrate/modules/register/stores/usePengajuanTempoStore'; import ProgressBar from '@ramonak/react-progress-bar'; import { UseToastOptions } from '@chakra-ui/react'; import { toast } from 'react-hot-toast'; import getFileBase64 from '@/core/utils/getFileBase64'; import Image from 'next/image'; import BottomPopup from '@/core/components/elements/Popup/BottomPopup'; import { EyeIcon } from '@heroicons/react/24/outline'; import useDevice from '@/core/hooks/useDevice'; import imageCompression from 'browser-image-compression'; const KonfirmasiDokumen = ({ chekValid, buttonSubmitClick, isKonfirmasi }) => { const { control, watch } = useForm(); const [isExample, setIsExample] = useState(false); const { isDesktop, isMobile } = useDevice(); const [base64, setBase64] = useState(); const [pdfData, setPdfData] = useState(); const [format, setFormat] = useState(); const [url, setUrl] = useState(); const [popUpSource, setSource] = useState(); const { formDokumen, errorsDokumen, validateDokumen, updateFormDokumen, getJumlahDokumenDiisi, } = usePengajuanTempoStoreDokumen(); const handleConfirmSubmit = (format, base64) => { if (format == 'pdf') { setFormat(`application/${format}`); } else if (format == 'png' || format == 'jpg' || format == 'jpeg') { setFormat(`image/${format}`); } else { setFormat(format); } setBase64( base64.trim().replace(/^"+/, '').replace(/"+$/, '').replaceAll('\\', '') ); setIsExample(!isExample); }; const handleInputChange = async (event) => { let fileBase64 = ''; const { name } = event.target; const file = event.target.files?.[0]; // Allowed file extensions const allowedExtensions = ['pdf', 'png', 'jpg', 'jpeg']; let fileExtension = ''; if (file) { fileExtension = file.name.split('.').pop()?.toLowerCase(); // Extract file extension // Check if the file extension is allowed if (!fileExtension || !allowedExtensions.includes(fileExtension)) { toast.error( 'Format file yang diijinkan adalah .pdf, .png, .jpg, atau .jpeg', { duration: 4000 } ); event.target.value = ''; return; } // Check for file size if (file.size > 500000) { try { const toastId = toast.loading('mencoba mengompresi file...'); // Compress image file const options = { maxSizeMB: 0.5, // Target size in MB maxWidthOrHeight: 1920, // Adjust as needed useWebWorker: true, }; const compressedFile = await imageCompression(file, options); toast.success('berhasil mengompresi file', { duration: 4000 }); // Convert compressed file to Base64 fileBase64 = await getFileBase64(compressedFile); updateFormDokumen( name, compressedFile.name, fileExtension, fileBase64 ); } catch (error) { toast.error('Gagal mengompresi file', { duration: 4000 }); } } else { // Convert file to Base64 fileBase64 = await getFileBase64(file); updateFormDokumen(name, file.name, fileExtension, fileBase64); } validateDokumen(); } }; const isFormValid = useMemo( () => Object.keys(errorsDokumen).length === 0, [errorsDokumen] ); const dokumenNibRef = useRef(null); const dokumenNpwpRef = useRef(null); const dokumenSppkpRef = useRef(null); const dokumenAktaPerubahanRef = useRef(null); const dokumenKtpDirutRef = useRef(null); const dokumenAktaPendirianRef = useRef(null); const dokumenLaporanKeuanganRef = useRef(null); const dokumenFotoKantorRef = useRef(null); const dokumenTempatBekerjaRef = useRef(null); useEffect(() => { const loadIndustries = async () => { if (!isFormValid) { const options = { behavior: 'smooth', block: 'center', }; if (errorsDokumen.dokumenNib && dokumenNibRef.current) { dokumenNibRef.current.scrollIntoView(options); return; } if (errorsDokumen.dokumenNpwp && dokumenNpwpRef.current) { dokumenNpwpRef.current.scrollIntoView(options); return; } if (errorsDokumen.dokumenSppkp && dokumenSppkpRef.current) { dokumenSppkpRef.current.scrollIntoView(options); return; } if ( errorsDokumen.dokumenAktaPerubahan && dokumenAktaPerubahanRef.current ) { dokumenAktaPerubahanRef.current.scrollIntoView(options); return; } if (errorsDokumen.dokumenKtpDirut && dokumenKtpDirutRef.current) { dokumenKtpDirutRef.current.scrollIntoView(options); return; } if ( errorsDokumen.dokumenAktaPendirian && dokumenAktaPendirianRef.current ) { dokumenAktaPendirianRef.current.scrollIntoView(options); return; } if ( errorsDokumen.dokumenLaporanKeuangan && dokumenLaporanKeuanganRef.current ) { dokumenLaporanKeuanganRef.current.scrollIntoView(options); return; } if (errorsDokumen.dokumenFotoKantor && dokumenFotoKantorRef.current) { dokumenFotoKantorRef.current.scrollIntoView(options); return; } if ( errorsDokumen.dokumenTempatBekerja && dokumenTempatBekerjaRef.current ) { dokumenTempatBekerjaRef.current.scrollIntoView(options); return; } } }; loadIndustries(); }, [buttonSubmitClick, chekValid]); useEffect(() => { validateDokumen(); }, [buttonSubmitClick]); return ( <> {isDesktop && (

Dokumen

{formDokumen?.dokumenNpwp?.name}
{chekValid && (
{errorsDokumen.dokumenNpwp}
)}
{formDokumen?.dokumenSppkp?.name}
{chekValid && (
{errorsDokumen.dokumenSppkp}
)}
{formDokumen?.dokumenNib?.name}
{chekValid && (
{errorsDokumen.dokumenNib}
)}
{formDokumen?.dokumenSiup?.name}
{chekValid && (
{errorsDokumen.dokumenSiup}
)}
{formDokumen?.dokumenTdp?.name}
{chekValid && (
{errorsDokumen.dokumenTdp}
)}
{formDokumen?.dokumenSkdp?.name}
{chekValid && (
{errorsDokumen.dokumenSkdp}
)}
{formDokumen?.dokumenSkt?.name}
{chekValid && (
{errorsDokumen.dokumenSkt}
)}
{formDokumen?.dokumenAktaPendirian?.name}
{chekValid && (
{errorsDokumen.dokumenAktaPendirian}
)}
{formDokumen?.dokumenAktaPerubahan?.name}
{chekValid && (
{errorsDokumen.dokumenAktaPerubahan}
)}
{formDokumen?.dokumenTempatBekerja?.name}
{chekValid && (
{errorsDokumen.dokumenTempatBekerja}
)}
{formDokumen?.dokumenFotoKantor?.name}
{chekValid && (
{errorsDokumen.dokumenFotoKantor}
)}
{formDokumen?.dokumenKtpDirut?.name}
{chekValid && (
{errorsDokumen.dokumenKtpDirut}
)}
{formDokumen?.dokumenLaporanKeuangan?.name}
{chekValid && (
{errorsDokumen.dokumenLaporanKeuangan}
)}
)} {isMobile && (

Dokumen

{formDokumen?.dokumenNpwp?.name}
{chekValid && (
{errorsDokumen.dokumenNpwp}
)}
{formDokumen?.dokumenSppkp?.name}
{chekValid && (
{errorsDokumen.dokumenSppkp}
)}
{formDokumen?.dokumenNib?.name}
{chekValid && (
{errorsDokumen.dokumenNib}
)}
{formDokumen?.dokumenSiup?.name}
{chekValid && (
{errorsDokumen.dokumenSiup}
)}
{formDokumen?.dokumenTdp?.name}
{chekValid && (
{errorsDokumen.dokumenTdp}
)}
{formDokumen?.dokumenSkdp?.name}
{chekValid && (
{errorsDokumen.dokumenSkdp}
)}
{formDokumen?.dokumenSkt?.name}
{chekValid && (
{errorsDokumen.dokumenSkt}
)}
{formDokumen?.dokumenAktaPerubahan?.name}
{chekValid && (
{errorsDokumen.dokumenAktaPerubahan}
)}
{formDokumen?.dokumenKtpDirut?.name}
{chekValid && (
{errorsDokumen.dokumenKtpDirut}
)}
{formDokumen?.dokumenAktaPendirian?.name}
{chekValid && (
{errorsDokumen.dokumenAktaPendirian}
)}
{formDokumen?.dokumenLaporanKeuangan?.name}
{chekValid && (
{errorsDokumen.dokumenLaporanKeuangan}
)}
{formDokumen?.dokumenFotoKantor?.name}
{chekValid && (
{errorsDokumen.dokumenFotoKantor}
)}
{formDokumen?.dokumenTempatBekerja?.name}
{/* Contoh SPPKP */}
{chekValid && (
{errorsDokumen.dokumenTempatBekerja}
)}
)} {isDesktop && ( setIsExample(false)} >
{/* */}
)} {isMobile && ( setIsExample(false)} >
{/* */}
)} ); }; export default KonfirmasiDokumen; { /* */ } { /* Contoh SPPKP */ } //
// {!format.includes('undifined') ? ( // { // // Jika gagal menampilkan PDF, unduh otomatis // const link = document.createElement('a'); // link.href = `data:${format};base64,${base64}`; // link.download = 'document.pdf'; // link.click(); // }} // > // PDF tidak dapat ditampilkan. // // {' '} // Klik di sini untuk // mengunduh PDF // // // ) : ( // // )} // {/* */} //