import React, {RefObject, useState} from 'react'; import {ScrollView, View, Text, Pressable} from 'react-native'; import styles from '../styles'; import Colors from '../../../../../assets/styles/Colors'; import FontFamily from '../../../../../assets/styles/FontFamily'; import genderData from '../../../../data/DropdownData/GenderData'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import {Button} from 'react-native-paper'; import TextInputComponent from '../../../../components/TextInput'; import {changeStep} from '../../../../utils/stepNavigation'; import { StepValidationStatusSetter } from '../../../../../types/step'; interface BackButtonProps { onPress: () => void; } interface DocumentUploadSectionProps { title: string; isRequired?: boolean; isIcon?: boolean; showDialogCivilStatusDocumentsInfo?: () => void; onUploadSuccess?: () => void; onDelete?: () => void; } interface Step3UploadDocumentsProps { step: number; setStep: (step: number) => void; setSubStep: (subStep: number) => void; setStepValidationStatus: StepValidationStatusSetter; selectedPassportOption: string; selectedDestinationCountryOption: string; showCivilStatusDocumentsInfoDialog: () => void; onSubStepValidation: (isValid: boolean) => void; editedCompletedRef: RefObject>; } const BackButton = (props: BackButtonProps) => { const {onPress} = props; return ( ({ transform: [{scale: pressed ? 0.99 : 1}], })} onPress={onPress}> ); }; const DocumentUploadSection = (props: DocumentUploadSectionProps) => { const { title, isRequired, isIcon, showDialogCivilStatusDocumentsInfo, onUploadSuccess, onDelete, } = props; const [uploadedFileName, setUploadedFileName] = useState(null); const handleUpload = (p0: string) => { let fileName = `${title.toLowerCase().replace(/ /g, '')}.jpg`; if ( title === 'Akta kelahiran/ijazah/akta perkawinan/buku nikah/surat baptis' ) { fileName = 'ijazah.jpg'; } setUploadedFileName(fileName); onUploadSuccess?.(); }; const handleDelete = () => { setUploadedFileName(null); onDelete?.(); }; return ( {title}{' '} {isRequired && ( * )} {isIcon && ( ({ transform: [{scale: pressed ? 0.925 : 1}], })} onPress={showDialogCivilStatusDocumentsInfo}> )} {!uploadedFileName ? ( ) : ( Berhasil dipilih {uploadedFileName} )} ); }; const Step3UploadDocuments = (props: Step3UploadDocumentsProps) => { const { step, setStep, setSubStep, setStepValidationStatus, selectedPassportOption, selectedDestinationCountryOption, showCivilStatusDocumentsInfoDialog, onSubStepValidation, editedCompletedRef, } = props; const [isKTPUploaded, setIsKTPUploaded] = useState(false); const [isFamilyCardUploaded, setIsFamilyCardUploaded] = useState(false); const [isCivilStatusUploaded, setIsCivilStatusUploaded] = useState(false); const [isOldPassportUploaded, setIsOldPassportUploaded] = useState(false); const onBackPress = () => { changeStep({ currentStep: step, targetStep: 2, setStep, setSubStep: () => setSubStep( selectedDestinationCountryOption === 'destination_country_not_set' ? 10 : 11, ), setStepValidationStatus, editedCompletedRef, }); }; const onNextPress = () => { const isFormValid = isKTPUploaded && isFamilyCardUploaded && isCivilStatusUploaded && (selectedPassportOption !== 'already' || isOldPassportUploaded); if (isFormValid) { onSubStepValidation(true); } else { onSubStepValidation(false); } changeStep({ currentStep: step, targetStep: 4, setStep, setSubStep: () => setSubStep(1), setStepValidationStatus, editedCompletedRef, }); }; return ( Layanan yang cocok untuk Anda adalah{' '} {selectedPassportOption !== 'already' ? ( Paspor Baru ) : ( Paspor Penggantian )} . Silakan unggah kelengkapan dokumen berikut. Unggah dokumen hanya bisa berbentuk JPG. Data yang bertanda ( *) wajib diisi. setIsKTPUploaded(true)} onDelete={() => setIsKTPUploaded(false)} /> setIsFamilyCardUploaded(true)} onDelete={() => setIsFamilyCardUploaded(false)} /> setIsCivilStatusUploaded(true)} onDelete={() => setIsCivilStatusUploaded(false)} /> {selectedPassportOption === 'already' && ( setIsOldPassportUploaded(true)} onDelete={() => setIsOldPassportUploaded(false)} /> )} ); }; export default Step3UploadDocuments;