import React, { useState, useRef } from 'react'; import { SaveType, SaveTypeEnum } from '../client/SignDocument'; interface SignUploadProps { saved: SaveType; setSaved: React.Dispatch>; } const SignUpload: React.FC = ({ saved, setSaved }) => { const [signatureFile, setSignatureFile] = useState(""); const [initialFile, setInitialFile] = useState(""); const signatureInputRef = useRef(null); const initialInputRef = useRef(null); const handleDrop = ( e: React.DragEvent, type: 'signature' | 'initial' ) => { e.preventDefault(); const file = e.dataTransfer.files[0]; if (file && file.type.startsWith('image/')) { type == 'signature' ? setSignatureFile(file) : setInitialFile(file); } }; const handleClick = (type: 'signature' | 'initial') => { if (type == 'signature') signatureInputRef.current?.click(); else initialInputRef.current?.click(); }; // const handleFileChange = ( // e: React.ChangeEvent, // type: 'signature' | 'initial' // ) => { // const file = e.target.files?.[0]; // if (file && file.type.startsWith('image/')) { // type == 'signature' ? setSignatureFile(file) : setInitialFile(file); // } // }; const toBase64 = (file: File): Promise => new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => { if (typeof reader.result == 'string') { resolve(reader.result); } else { reject(new Error('FileReader result is not a string')); } }; reader.onerror = reject; }); const handleFileChange = async ( e: React.ChangeEvent, type: 'signature' | 'initial' ): Promise => { const file = e.target.files?.[0]; if (file && file.type.startsWith('image/')) { try { const base64 = await toBase64(file); type == 'signature' ? setSignatureFile(base64) : setInitialFile(base64); } catch (error) { console.error('Error converting file to base64:', error); } } }; const handleSave = () => { if (!signatureFile || !initialFile) { alert('Please upload both signature and initials.'); return; } setSaved({ saveType: SaveTypeEnum.UPLOAD, signature: signatureFile, initial: initialFile, save: true }) alert('Files saved as Blob. Check console for details.'); }; return (
{/* Signature Upload */}
handleClick('signature')} onDragOver={(e) => e.preventDefault()} onDrop={(e) => handleDrop(e, 'signature')} > handleFileChange(e, 'signature')} />

{signatureFile ? 'Signature Uploaded' : 'Drop Signature Here or Click to Upload'}

{signatureFile && ( Signature Preview )}
{/* Initials Upload */}
handleClick('initial')} onDragOver={(e) => e.preventDefault()} onDrop={(e) => handleDrop(e, 'initial')} > handleFileChange(e, 'initial')} />

{initialFile ? 'Initials Uploaded' : 'Drop Initials Here or Click to Upload'}

{initialFile && ( Initial Preview )}
{/* */}
{/* */}
); }; export default SignUpload;