fix add image

This commit is contained in:
Reece Browne 2025-09-23 17:18:39 +01:00
parent d9798badae
commit fc2f34ee15

View File

@ -18,7 +18,6 @@ const SignSettings = ({ parameters, onParameterChange, disabled = false, onActiv
const { t } = useTranslation(); const { t } = useTranslation();
const canvasRef = useRef<HTMLCanvasElement>(null); const canvasRef = useRef<HTMLCanvasElement>(null);
const [isDrawing, setIsDrawing] = useState(false); const [isDrawing, setIsDrawing] = useState(false);
const [signatureImage, setSignatureImage] = useState<File | null>(null);
const [canvasSignatureData, setCanvasSignatureData] = useState<string | null>(null); const [canvasSignatureData, setCanvasSignatureData] = useState<string | null>(null);
const [imageSignatureData, setImageSignatureData] = useState<string | null>(null); const [imageSignatureData, setImageSignatureData] = useState<string | null>(null);
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
@ -249,35 +248,35 @@ const SignSettings = ({ parameters, onParameterChange, disabled = false, onActiv
}; };
// Handle signature image upload // Handle signature image upload
const handleSignatureImageChange = (file: File | null) => { const handleSignatureImageChange = async (file: File | null) => {
console.log('Image file selected:', file); console.log('Image file selected:', file);
if (file && !disabled) { if (file && !disabled) {
const reader = new FileReader(); try {
reader.onload = (e) => { const result = await new Promise<string>((resolve, reject) => {
if (e.target?.result) { const reader = new FileReader();
console.log('Image loaded, saving to signatureData, length:', (e.target.result as string).length); reader.onload = (e) => {
if (e.target?.result) {
// Clear any existing canvas signatures when uploading image resolve(e.target.result as string);
setCanvasSignatureData(null); } else {
reject(new Error('Failed to read file'));
// Set the new image as the active signature
setImageSignatureData(e.target.result as string);
// Don't call onParameterChange here - let the useEffect handle it
// Auto-activate placement mode after image upload
setTimeout(() => {
if (onActivateSignaturePlacement) {
onActivateSignaturePlacement();
} }
}, 100); };
} reader.onerror = () => reject(reader.error);
}; reader.readAsDataURL(file);
reader.readAsDataURL(file); });
setSignatureImage(file);
// Clear any existing canvas signatures when uploading image
setCanvasSignatureData(null);
// Set as active signature immediately
setImageSignatureData(result);
} catch (error) {
console.error('Error reading file:', error);
}
} else if (!file) { } else if (!file) {
// Clear image signature when no file is selected // Clear image data when no file is selected
setImageSignatureData(null); setImageSignatureData(null);
// Don't call onParameterChange here - let the useEffect handle it
// Deactivate signature placement when image is removed // Deactivate signature placement when image is removed
if (onDeactivateSignature) { if (onDeactivateSignature) {
onDeactivateSignature(); onDeactivateSignature();
@ -346,6 +345,10 @@ const SignSettings = ({ parameters, onParameterChange, disabled = false, onActiv
} else if (parameters.signatureType === 'image') { } else if (parameters.signatureType === 'image') {
if (imageSignatureData) { if (imageSignatureData) {
onParameterChange('signatureData', imageSignatureData); onParameterChange('signatureData', imageSignatureData);
// Activate signature placement mode when image is ready
if (onActivateSignaturePlacement) {
onActivateSignaturePlacement();
}
} else { } else {
onParameterChange('signatureData', undefined); onParameterChange('signatureData', undefined);
} }
@ -356,7 +359,7 @@ const SignSettings = ({ parameters, onParameterChange, disabled = false, onActiv
// For draw mode, clear signature data // For draw mode, clear signature data
onParameterChange('signatureData', undefined); onParameterChange('signatureData', undefined);
} }
}, [parameters.signatureType, canvasSignatureData, imageSignatureData, onParameterChange]); }, [parameters.signatureType, canvasSignatureData, imageSignatureData]);
// Initialize draw mode on mount // Initialize draw mode on mount
React.useEffect(() => { React.useEffect(() => {
@ -598,11 +601,7 @@ const SignSettings = ({ parameters, onParameterChange, disabled = false, onActiv
label={t('sign.image.label', 'Upload signature image')} label={t('sign.image.label', 'Upload signature image')}
placeholder={t('sign.image.placeholder', 'Select image file')} placeholder={t('sign.image.placeholder', 'Select image file')}
accept="image/*" accept="image/*"
value={signatureImage} onChange={handleSignatureImageChange}
onChange={(file) => {
console.log('FileInput onChange triggered with file:', file);
handleSignatureImageChange(file);
}}
disabled={disabled} disabled={disabled}
/> />
<Text size="sm" c="dimmed"> <Text size="sm" c="dimmed">