mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-09-24 04:26:14 +00:00
Update to get running in current version
This commit is contained in:
parent
a6e250e2fd
commit
8206310ef3
@ -20,12 +20,12 @@ vi.mock('../../../utils/toolErrorHandler', () => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
// Import the mocked function
|
// Import the mocked function
|
||||||
import { ToolOperationHook, useToolOperation } from '../shared/useToolOperation';
|
import { MultiFileToolOperationConfig, ToolOperationHook, useToolOperation } from '../shared/useToolOperation';
|
||||||
|
|
||||||
describe('useMergeOperation', () => {
|
describe('useMergeOperation', () => {
|
||||||
const mockUseToolOperation = vi.mocked(useToolOperation<MergeParameters>);
|
const mockUseToolOperation = vi.mocked(useToolOperation<MergeParameters>);
|
||||||
|
|
||||||
const getToolConfig = () => mockUseToolOperation.mock.calls[0][0];
|
const getToolConfig = () => mockUseToolOperation.mock.calls[0][0] as MultiFileToolOperationConfig<MergeParameters>;
|
||||||
|
|
||||||
const mockToolOperationReturn: ToolOperationHook<unknown> = {
|
const mockToolOperationReturn: ToolOperationHook<unknown> = {
|
||||||
files: [],
|
files: [],
|
||||||
@ -41,6 +41,9 @@ describe('useMergeOperation', () => {
|
|||||||
resetResults: vi.fn(),
|
resetResults: vi.fn(),
|
||||||
clearError: vi.fn(),
|
clearError: vi.fn(),
|
||||||
cancelOperation: vi.fn(),
|
cancelOperation: vi.fn(),
|
||||||
|
undoOperation: function (): Promise<void> {
|
||||||
|
throw new Error('Function not implemented.');
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
@ -61,7 +64,7 @@ describe('useMergeOperation', () => {
|
|||||||
generateTableOfContents: false
|
generateTableOfContents: false
|
||||||
};
|
};
|
||||||
|
|
||||||
const formData = config.buildFormData(parameters, mockFiles as any /* FIX ME */);
|
const formData = config.buildFormData(parameters, mockFiles);
|
||||||
|
|
||||||
// Verify files are appended
|
// Verify files are appended
|
||||||
expect(formData.getAll('fileInput')).toHaveLength(2);
|
expect(formData.getAll('fileInput')).toHaveLength(2);
|
||||||
@ -115,7 +118,7 @@ describe('useMergeOperation', () => {
|
|||||||
removeDigitalSignature: false,
|
removeDigitalSignature: false,
|
||||||
generateTableOfContents: false
|
generateTableOfContents: false
|
||||||
};
|
};
|
||||||
const formData1 = config.buildFormData(params1, mockFiles as any /* FIX ME */);
|
const formData1 = config.buildFormData(params1, mockFiles);
|
||||||
expect(formData1.get('removeCertSign')).toBe('false');
|
expect(formData1.get('removeCertSign')).toBe('false');
|
||||||
expect(formData1.get('generateToc')).toBe('false');
|
expect(formData1.get('generateToc')).toBe('false');
|
||||||
|
|
||||||
@ -124,7 +127,7 @@ describe('useMergeOperation', () => {
|
|||||||
removeDigitalSignature: true,
|
removeDigitalSignature: true,
|
||||||
generateTableOfContents: true
|
generateTableOfContents: true
|
||||||
};
|
};
|
||||||
const formData2 = config.buildFormData(params2, mockFiles as any /* FIX ME */);
|
const formData2 = config.buildFormData(params2, mockFiles);
|
||||||
expect(formData2.get('removeCertSign')).toBe('true');
|
expect(formData2.get('removeCertSign')).toBe('true');
|
||||||
expect(formData2.get('generateToc')).toBe('true');
|
expect(formData2.get('generateToc')).toBe('true');
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useToolOperation, ResponseHandler, ToolOperationConfig } from '../shared/useToolOperation';
|
import { useToolOperation, ResponseHandler, ToolOperationConfig, ToolType } from '../shared/useToolOperation';
|
||||||
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
|
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
|
||||||
import { MergeParameters } from './useMergeParameters';
|
import { MergeParameters } from './useMergeParameters';
|
||||||
|
|
||||||
@ -23,11 +23,11 @@ const mergeResponseHandler: ResponseHandler = (blob: Blob, originalFiles: File[]
|
|||||||
|
|
||||||
// Operation configuration for automation
|
// Operation configuration for automation
|
||||||
export const mergeOperationConfig: ToolOperationConfig<MergeParameters> = {
|
export const mergeOperationConfig: ToolOperationConfig<MergeParameters> = {
|
||||||
|
toolType: ToolType.multiFile,
|
||||||
|
buildFormData,
|
||||||
operationType: 'merge',
|
operationType: 'merge',
|
||||||
endpoint: '/api/v1/general/merge-pdfs',
|
endpoint: '/api/v1/general/merge-pdfs',
|
||||||
buildFormData,
|
|
||||||
filePrefix: 'merged_',
|
filePrefix: 'merged_',
|
||||||
multiFileEndpoint: true,
|
|
||||||
responseHandler: mergeResponseHandler,
|
responseHandler: mergeResponseHandler,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@ import { useState, useCallback, useMemo } from 'react';
|
|||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useFlatToolRegistry } from "../data/useTranslatedToolRegistry";
|
import { useFlatToolRegistry } from "../data/useTranslatedToolRegistry";
|
||||||
import { getAllEndpoints, type ToolRegistryEntry } from "../data/toolsTaxonomy";
|
import { getAllEndpoints, type ToolRegistryEntry } from "../data/toolsTaxonomy";
|
||||||
import MergeIcon from "@mui/icons-material/Merge";
|
|
||||||
import { useMultipleEndpointsEnabled } from "./useEndpointConfig";
|
import { useMultipleEndpointsEnabled } from "./useEndpointConfig";
|
||||||
import { FileId } from '../types/file';
|
import { FileId } from '../types/file';
|
||||||
|
|
||||||
|
@ -52,6 +52,11 @@ const Merge = ({ onPreviewFile, onComplete, onError }: BaseToolProps) => {
|
|||||||
onPreviewFile?.(null);
|
onPreviewFile?.(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleUndo = async () => {
|
||||||
|
await mergeOperation.undoOperation();
|
||||||
|
onPreviewFile?.(null);
|
||||||
|
};
|
||||||
|
|
||||||
// TODO: Move to more general place so other tools can use it
|
// TODO: Move to more general place so other tools can use it
|
||||||
const sortFiles = useCallback((sortType: 'filename' | 'dateModified', ascending: boolean = true) => {
|
const sortFiles = useCallback((sortType: 'filename' | 'dateModified', ascending: boolean = true) => {
|
||||||
// Sort the FileIds based on their corresponding File properties
|
// Sort the FileIds based on their corresponding File properties
|
||||||
@ -102,6 +107,18 @@ const Merge = ({ onPreviewFile, onComplete, onError }: BaseToolProps) => {
|
|||||||
title: "Settings",
|
title: "Settings",
|
||||||
isCollapsed: settingsCollapsed,
|
isCollapsed: settingsCollapsed,
|
||||||
onCollapsedClick: settingsCollapsed ? handleSettingsReset : undefined,
|
onCollapsedClick: settingsCollapsed ? handleSettingsReset : undefined,
|
||||||
|
tooltip: {
|
||||||
|
tips: [
|
||||||
|
{
|
||||||
|
title: t('merge.removeDigitalSignature.tooltip.title', 'Remove Digital Signature'),
|
||||||
|
description: t('merge.removeDigitalSignature.tooltip.description', 'Digital signatures will be invalidated when merging files. Check this to remove them from the final merged PDF.')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('merge.generateTableOfContents.tooltip.title', 'Generate Table of Contents'),
|
||||||
|
description: t('merge.generateTableOfContents.tooltip.description', 'Automatically creates a clickable table of contents in the merged PDF based on the original file names and page numbers.')
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
content: (
|
content: (
|
||||||
<MergeSettings
|
<MergeSettings
|
||||||
parameters={mergeParams.parameters}
|
parameters={mergeParams.parameters}
|
||||||
@ -123,6 +140,7 @@ const Merge = ({ onPreviewFile, onComplete, onError }: BaseToolProps) => {
|
|||||||
operation: mergeOperation,
|
operation: mergeOperation,
|
||||||
title: t("merge.title", "Merge Results"),
|
title: t("merge.title", "Merge Results"),
|
||||||
onFileClick: handleThumbnailClick,
|
onFileClick: handleThumbnailClick,
|
||||||
|
onUndo: handleUndo,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user