This commit is contained in:
Reece 2025-09-26 17:01:06 +01:00
parent 90880eddf9
commit 2e2d8477b9
3 changed files with 19 additions and 8 deletions

View File

@ -85,7 +85,7 @@ const SignSettings = ({
});
if (data) {
// Clear image data when canvas is used
setImageSignatureData(prev => prev ? null : prev);
setImageSignatureData(null);
}
};

View File

@ -22,12 +22,12 @@ export interface SignatureAPIBridgeProps {}
export const SignatureAPIBridge = forwardRef<SignatureAPI, SignatureAPIBridgeProps>((_props, ref) => {
const { provides: annotationApi } = useAnnotationCapability();
const { signatureConfig, storeImageData } = useSignature();
const { signatureConfig, storeImageData, isPlacementMode } = useSignature();
// Enable keyboard deletion of selected annotations
// Enable keyboard deletion of selected annotations - only when in signature placement mode
useEffect(() => {
if (!annotationApi) return;
if (!annotationApi || !isPlacementMode) return;
const handleKeyDown = (event: KeyboardEvent) => {
if (event.key === 'Delete' || event.key === 'Backspace') {
@ -68,7 +68,7 @@ export const SignatureAPIBridge = forwardRef<SignatureAPI, SignatureAPIBridgePro
document.addEventListener('keydown', handleKeyDown);
return () => document.removeEventListener('keydown', handleKeyDown);
}, [annotationApi, storeImageData]);
}, [annotationApi, storeImageData, isPlacementMode]);
useImperativeHandle(ref, () => ({
addImageSignature: (signatureData: string, x: number, y: number, width: number, height: number, pageIndex: number) => {

View File

@ -25,7 +25,12 @@ export async function flattenSignatures(options: SignatureFlatteningOptions): Pr
if (signatureApiRef?.current) {
console.log('Extracting annotations from all pages...');
for (let pageIndex = 0; pageIndex < 10; pageIndex++) {
// Dynamically check all pages until we encounter consecutive errors
let pageIndex = 0;
let consecutiveErrors = 0;
const maxConsecutiveErrors = 3; // Stop after 3 consecutive page access failures
while (consecutiveErrors < maxConsecutiveErrors) {
try {
const pageAnnotations = await signatureApiRef.current.getPageAnnotations(pageIndex);
if (pageAnnotations && pageAnnotations.length > 0) {
@ -55,9 +60,15 @@ export async function flattenSignatures(options: SignatureFlatteningOptions): Pr
console.log(`Found ${sessionAnnotations.length} session annotations on page ${pageIndex + 1} (out of ${pageAnnotations.length} total)`);
}
}
} catch {
if (pageIndex > 2) break; // Stop after checking first few pages
// Reset consecutive error count on successful page access
consecutiveErrors = 0;
} catch (pageError) {
consecutiveErrors++;
console.warn(`Error extracting annotations from page ${pageIndex + 1} (error ${consecutiveErrors}/${maxConsecutiveErrors}):`, pageError);
}
pageIndex++;
}
}