Remove arbitrary timers

This commit is contained in:
Reece 2025-10-08 14:02:43 +01:00
parent fa6e01b46e
commit 0c9f460fb6
3 changed files with 34 additions and 22 deletions

View File

@ -13,6 +13,7 @@ import { useNavigationGuard, useNavigationState } from '../../contexts/Navigatio
import { useSignature } from '../../contexts/SignatureContext';
import { createStirlingFilesAndStubs } from '../../services/fileStubHelpers';
import NavigationWarningModal from '../shared/NavigationWarningModal';
import { isStirlingFile } from '../../types/fileContext';
export interface EmbedPdfViewerProps {
sidebarsVisible: boolean;
@ -263,6 +264,7 @@ const EmbedPdfViewerContent = ({
transition: 'margin-right 0.3s ease'
}}>
<LocalEmbedPDF
key={currentFile && isStirlingFile(currentFile) ? currentFile.fileId : (effectiveFile.file instanceof File ? effectiveFile.file.name : effectiveFile.url)}
file={effectiveFile.file}
url={effectiveFile.url}
enableAnnotations={shouldEnableAnnotations}

View File

@ -75,9 +75,6 @@ const Sign = (props: BaseToolProps) => {
console.log('exportActions:', exportActions);
console.log('signatureApiRef.current:', signatureApiRef.current);
// Deactivate signature placement mode immediately
handleDeactivateSignature();
// Unregister unsaved changes checker to prevent warning during apply
unregisterUnsavedChangesChecker();
setHasUnsavedChanges(false);
@ -104,29 +101,36 @@ const Sign = (props: BaseToolProps) => {
console.log('originalFile:', originalFile);
// Use the signature flattening utility
const newFileIds = await flattenSignatures({
const flattenResult = await flattenSignatures({
signatureApiRef,
getImageData,
exportActions,
selectors,
consumeFiles,
originalFile,
getScrollState
});
console.log('flattenSignatures result:', newFileIds);
console.log('flattenSignatures result:', flattenResult);
if (newFileIds && newFileIds.length > 0) {
console.log('✓ Signature flattening completed successfully');
if (flattenResult) {
console.log('✓ Signature flattening completed - now consuming files');
// Now consume the files - this triggers the viewer reload
const newFileIds = await consumeFiles(
flattenResult.inputFileIds,
[flattenResult.outputStirlingFile],
[flattenResult.outputStub]
);
console.log('✓ Files consumed successfully. New file IDs:', newFileIds);
// Mark signatures as applied
setSignaturesApplied(true);
// Force viewer reload to show flattened PDF
setWorkbench('fileEditor');
setTimeout(() => {
setWorkbench('viewer');
}, 50);
// Deactivate signature placement mode after everything completes
handleDeactivateSignature();
// File has been consumed - viewer should reload automatically via key prop
} else {
console.error('Signature flattening failed');
}

View File

@ -17,13 +17,18 @@ interface SignatureFlatteningOptions {
saveAsCopy: () => Promise<ArrayBuffer | null>;
};
selectors: MinimalFileContextSelectors;
consumeFiles: (inputFileIds: FileId[], outputStirlingFiles: StirlingFile[], outputStirlingFileStubs: StirlingFileStub[]) => Promise<FileId[]>;
originalFile?: StirlingFile;
getScrollState: () => { currentPage: number; totalPages: number };
}
export async function flattenSignatures(options: SignatureFlatteningOptions): Promise<FileId[] | null> {
const { signatureApiRef, getImageData, exportActions, selectors, consumeFiles, originalFile, getScrollState } = options;
export interface SignatureFlatteningResult {
inputFileIds: FileId[];
outputStirlingFile: StirlingFile;
outputStub: StirlingFileStub;
}
export async function flattenSignatures(options: SignatureFlatteningOptions): Promise<SignatureFlatteningResult | null> {
const { signatureApiRef, getImageData, exportActions, selectors, originalFile, getScrollState } = options;
try {
// Step 1: Extract all annotations from EmbedPDF before export
@ -319,13 +324,14 @@ export async function flattenSignatures(options: SignatureFlatteningOptions): Pr
const outputStirlingFile = createStirlingFile(signedFile, outputStub.id);
console.log('Output stub version:', outputStub.versionNumber);
console.log('Consuming files - replacing:', inputFileIds, 'with:', outputStub.id);
console.log('✓ Signature flattening completed successfully');
// Replace the original file with the signed version
const newFileIds = await consumeFiles(inputFileIds, [outputStirlingFile], [outputStub]);
console.log('✓ Signature flattening completed successfully. New file IDs:', newFileIds);
return newFileIds;
// Return the flattened file data for consumption by caller
return {
inputFileIds,
outputStirlingFile,
outputStub
};
}
return null;