diff --git a/frontend/src/core/components/viewer/SignatureAPIBridge.tsx b/frontend/src/core/components/viewer/SignatureAPIBridge.tsx index c51a49b32..92d436e5d 100644 --- a/frontend/src/core/components/viewer/SignatureAPIBridge.tsx +++ b/frontend/src/core/components/viewer/SignatureAPIBridge.tsx @@ -122,7 +122,7 @@ const createTextStampImage = ( export const SignatureAPIBridge = forwardRef(function SignatureAPIBridge(_, ref) { const { provides: annotationApi } = useAnnotationCapability(); - const { signatureConfig, storeImageData, isPlacementMode, placementPreviewSize } = useSignature(); + const { signatureConfig, storeImageData, isPlacementMode, placementPreviewSize, setSignaturesApplied } = useSignature(); const { getZoomState, registerImmediateZoomUpdate } = useViewer(); const [currentZoom, setCurrentZoom] = useState(() => getZoomState()?.currentZoom ?? 1); const lastStampImageRef = useRef(null); @@ -389,6 +389,11 @@ export const SignatureAPIBridge = forwardRef(function SignatureAPI return; } + // Mark signatures as not applied when a new signature is placed + if (event.type === 'create') { + setSignaturesApplied(false); + } + const directData = extractDataUrl(annotation.imageSrc) || extractDataUrl(annotation.imageData) || @@ -408,7 +413,7 @@ export const SignatureAPIBridge = forwardRef(function SignatureAPI return () => { unsubscribe?.(); }; - }, [annotationApi, storeImageData]); + }, [annotationApi, storeImageData, setSignaturesApplied]); useEffect(() => { if (!isPlacementMode) { @@ -443,6 +448,11 @@ export const SignatureAPIBridge = forwardRef(function SignatureAPI return; } + // Mark signatures as not applied when a new signature is placed + if (event.type === 'create') { + setSignaturesApplied(false); + } + const directData = extractDataUrl(annotation.imageSrc) || extractDataUrl(annotation.imageData) || @@ -462,7 +472,7 @@ export const SignatureAPIBridge = forwardRef(function SignatureAPI return () => { unsubscribe?.(); }; - }, [annotationApi, storeImageData]); + }, [annotationApi, storeImageData, setSignaturesApplied]); useEffect(() => { if (!isPlacementMode) { diff --git a/frontend/src/core/contexts/SignatureContext.tsx b/frontend/src/core/contexts/SignatureContext.tsx index 2912bbaee..24fdc22cb 100644 --- a/frontend/src/core/contexts/SignatureContext.tsx +++ b/frontend/src/core/contexts/SignatureContext.tsx @@ -74,8 +74,6 @@ export const SignatureProvider: React.FC<{ children: ReactNode }> = ({ children if (signatureApiRef.current) { signatureApiRef.current.activateDrawMode(); setPlacementMode(true); - // Mark signatures as not applied when entering draw mode - setState(prev => ({ ...prev, signaturesApplied: false })); } }, [setPlacementMode]); @@ -90,8 +88,6 @@ export const SignatureProvider: React.FC<{ children: ReactNode }> = ({ children if (signatureApiRef.current) { signatureApiRef.current.activateSignaturePlacementMode(); setPlacementMode(true); - // Mark signatures as not applied when placing new signatures - setState(prev => ({ ...prev, signaturesApplied: false })); } }, [setPlacementMode]);