From 3aa8572c9ee74ef52787310fadd35bacc4a0f1b5 Mon Sep 17 00:00:00 2001 From: Reece Date: Fri, 26 Sep 2025 17:16:17 +0100 Subject: [PATCH] Fix suggestions --- .../src/components/annotation/shared/DrawingCanvas.tsx | 6 ------ frontend/src/components/tools/sign/SignSettings.tsx | 2 +- frontend/src/components/viewer/HistoryAPIBridge.tsx | 5 +---- frontend/src/components/viewer/SignatureAPIBridge.tsx | 5 +---- frontend/src/tools/Sign.tsx | 2 +- frontend/src/utils/signatureFlattening.ts | 8 +++++++- 6 files changed, 11 insertions(+), 17 deletions(-) diff --git a/frontend/src/components/annotation/shared/DrawingCanvas.tsx b/frontend/src/components/annotation/shared/DrawingCanvas.tsx index e67c73e04..d4ae74ad0 100644 --- a/frontend/src/components/annotation/shared/DrawingCanvas.tsx +++ b/frontend/src/components/annotation/shared/DrawingCanvas.tsx @@ -41,7 +41,6 @@ export const DrawingCanvas: React.FC = ({ const [isDrawing, setIsDrawing] = useState(false); const [isModalDrawing, setIsModalDrawing] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false); - const [, setSignatureData] = useState(null); // Drawing functions for main canvas const startDrawing = useCallback((e: React.MouseEvent) => { @@ -89,7 +88,6 @@ export const DrawingCanvas: React.FC = ({ // Save canvas as signature data if (canvasRef.current) { const dataURL = canvasRef.current.toDataURL('image/png'); - setSignatureData(dataURL); onSignatureDataChange(dataURL); } }, [isDrawing, disabled, onSignatureDataChange]); @@ -149,7 +147,6 @@ export const DrawingCanvas: React.FC = ({ // Sync the canvases and update signature data (only when drawing stops) if (modalCanvasRef.current) { const dataURL = modalCanvasRef.current.toDataURL('image/png'); - setSignatureData(dataURL); onSignatureDataChange(dataURL); // Also update the small canvas display @@ -183,7 +180,6 @@ export const DrawingCanvas: React.FC = ({ } } - setSignatureData(null); onSignatureDataChange(null); } }, [disabled]); @@ -212,7 +208,6 @@ export const DrawingCanvas: React.FC = ({ } } - setSignatureData(null); onSignatureDataChange(null); }, []); @@ -220,7 +215,6 @@ export const DrawingCanvas: React.FC = ({ if (!modalCanvasRef.current) return; const dataURL = modalCanvasRef.current.toDataURL('image/png'); - setSignatureData(dataURL); onSignatureDataChange(dataURL); // Copy to small canvas for display diff --git a/frontend/src/components/tools/sign/SignSettings.tsx b/frontend/src/components/tools/sign/SignSettings.tsx index 87532e88a..728dacfcf 100644 --- a/frontend/src/components/tools/sign/SignSettings.tsx +++ b/frontend/src/components/tools/sign/SignSettings.tsx @@ -109,7 +109,7 @@ const SignSettings = ({ onDeactivateSignature(); } } - }, [parameters.signatureType, parameters.signerName]); + }, [parameters.signatureType, parameters.signerName, onActivateSignaturePlacement, onDeactivateSignature]); // Handle signature data updates useEffect(() => { diff --git a/frontend/src/components/viewer/HistoryAPIBridge.tsx b/frontend/src/components/viewer/HistoryAPIBridge.tsx index 2aed098f5..cfc34fb19 100644 --- a/frontend/src/components/viewer/HistoryAPIBridge.tsx +++ b/frontend/src/components/viewer/HistoryAPIBridge.tsx @@ -11,10 +11,7 @@ export interface HistoryAPI { canRedo: () => boolean; } -// eslint-disable-next-line @typescript-eslint/no-empty-object-type -export interface HistoryAPIBridgeProps {} - -export const HistoryAPIBridge = forwardRef(function HistoryAPIBridge(_props, ref) { +export const HistoryAPIBridge = forwardRef((_props, ref) => { const { provides: historyApi } = useHistoryCapability(); const { provides: annotationApi } = useAnnotationCapability(); const { getImageData, storeImageData } = useSignature(); diff --git a/frontend/src/components/viewer/SignatureAPIBridge.tsx b/frontend/src/components/viewer/SignatureAPIBridge.tsx index 152348523..07ddf2966 100644 --- a/frontend/src/components/viewer/SignatureAPIBridge.tsx +++ b/frontend/src/components/viewer/SignatureAPIBridge.tsx @@ -17,10 +17,7 @@ export interface SignatureAPI { getPageAnnotations: (pageIndex: number) => Promise; } -// eslint-disable-next-line @typescript-eslint/no-empty-object-type -export interface SignatureAPIBridgeProps {} - -export const SignatureAPIBridge = forwardRef((_props, ref) => { +export const SignatureAPIBridge = forwardRef((_props, ref) => { const { provides: annotationApi } = useAnnotationCapability(); const { signatureConfig, storeImageData, isPlacementMode } = useSignature(); diff --git a/frontend/src/tools/Sign.tsx b/frontend/src/tools/Sign.tsx index a767eddbf..0706cc6b5 100644 --- a/frontend/src/tools/Sign.tsx +++ b/frontend/src/tools/Sign.tsx @@ -106,7 +106,7 @@ const Sign = (props: BaseToolProps) => { } catch (error) { console.error('Error saving signed document:', error); } - }, [exportActions, base.selectedFiles, selectors, consumeFiles, signatureApiRef, getImageData, flattenSignatures, setWorkbench, activateDrawMode]); + }, [exportActions, base.selectedFiles, selectors, consumeFiles, signatureApiRef, getImageData, setWorkbench, activateDrawMode]); const getSteps = () => { const steps = []; diff --git a/frontend/src/utils/signatureFlattening.ts b/frontend/src/utils/signatureFlattening.ts index e3ab875b1..ffd86b2e3 100644 --- a/frontend/src/utils/signatureFlattening.ts +++ b/frontend/src/utils/signatureFlattening.ts @@ -4,13 +4,19 @@ import { createProcessedFile } from '../contexts/file/fileActions'; import { createNewStirlingFileStub, createStirlingFile, StirlingFile, FileId, StirlingFileStub } from '../types/fileContext'; import type { SignatureAPI } from '../components/viewer/SignatureAPIBridge'; +interface MinimalFileContextSelectors { + getAllFileIds: () => FileId[]; + getStirlingFileStub: (id: FileId) => StirlingFileStub | undefined; + getFile: (id: FileId) => StirlingFile | undefined; +} + interface SignatureFlatteningOptions { signatureApiRef: React.RefObject; getImageData: (id: string) => string | undefined; exportActions?: { saveAsCopy: () => Promise; }; - selectors: any; // FileContextSelectors - using any to avoid complex type matching + selectors: MinimalFileContextSelectors; consumeFiles: (inputFileIds: FileId[], outputStirlingFiles: StirlingFile[], outputStirlingFileStubs: StirlingFileStub[]) => Promise; originalFile?: StirlingFile; }