mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-07-28 13:47:43 +02:00
Update compress to work with new tool system
This commit is contained in:
parent
22d7ca5479
commit
4a5a709836
@ -1,18 +1,12 @@
|
||||
import React, { useState, useCallback, useMemo, useEffect } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import AddToPhotosIcon from "@mui/icons-material/AddToPhotos";
|
||||
import ContentCutIcon from "@mui/icons-material/ContentCut";
|
||||
import ZoomInMapIcon from "@mui/icons-material/ZoomInMap";
|
||||
import { useMultipleEndpointsEnabled } from "./useEndpointConfig";
|
||||
import { Tool, ToolDefinition, BaseToolProps, ToolRegistry } from "../types/tool";
|
||||
|
||||
// Import types from central location - no need to redefine
|
||||
|
||||
// Tool definitions using simplified interface
|
||||
// IMPORTANT: Adding a new tool is just 2 steps:
|
||||
// 1. Add entry here with maxFiles, endpoints, and lazy component
|
||||
// 2. Create the tool component - NO HomePage changes needed!
|
||||
// The system automatically handles FileEditor, file selection, and rendering
|
||||
// Add entry here with maxFiles, endpoints, and lazy component
|
||||
const toolDefinitions: Record<string, ToolDefinition> = {
|
||||
split: {
|
||||
id: "split",
|
||||
@ -23,25 +17,16 @@ const toolDefinitions: Record<string, ToolDefinition> = {
|
||||
description: "Split PDF files into smaller parts",
|
||||
endpoints: ["split-pages", "split-pdf-by-sections", "split-by-size-or-count", "split-pdf-by-chapters"]
|
||||
},
|
||||
// compress and merge are disabled for now - legacy tools to be overhauled
|
||||
// compress: {
|
||||
// id: "compress",
|
||||
// icon: <ZoomInMapIcon />,
|
||||
// component: React.lazy(() => import("../tools/Compress")),
|
||||
// maxFiles: 1,
|
||||
// category: "optimization",
|
||||
// description: "Reduce PDF file size",
|
||||
// endpoints: ["compress-pdf"]
|
||||
// },
|
||||
// merge: {
|
||||
// id: "merge",
|
||||
// icon: <AddToPhotosIcon />,
|
||||
// component: React.lazy(() => import("../tools/Merge")),
|
||||
// maxFiles: -1,
|
||||
// category: "manipulation",
|
||||
// description: "Combine multiple PDF files",
|
||||
// endpoints: ["merge-pdfs"]
|
||||
// },
|
||||
compress: {
|
||||
id: "compress",
|
||||
icon: <ZoomInMapIcon />,
|
||||
component: React.lazy(() => import("../tools/Compress")),
|
||||
maxFiles: -1,
|
||||
category: "optimization",
|
||||
description: "Reduce PDF file size",
|
||||
endpoints: ["compress-pdf"]
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -4,6 +4,7 @@ import { useTranslation } from "react-i18next";
|
||||
import DownloadIcon from "@mui/icons-material/Download";
|
||||
import { useEndpointEnabled } from "../hooks/useEndpointConfig";
|
||||
import { useFileContext } from "../contexts/FileContext";
|
||||
import { useToolFileSelection } from "../contexts/FileSelectionContext";
|
||||
|
||||
import ToolStep, { ToolStepContainer } from "../components/tools/shared/ToolStep";
|
||||
import OperationButton from "../components/tools/shared/OperationButton";
|
||||
@ -15,15 +16,12 @@ import CompressSettings from "../components/tools/compress/CompressSettings";
|
||||
|
||||
import { useCompressParameters } from "../hooks/tools/compress/useCompressParameters";
|
||||
import { useCompressOperation } from "../hooks/tools/compress/useCompressOperation";
|
||||
import { BaseToolProps } from "../types/tool";
|
||||
|
||||
interface CompressProps {
|
||||
selectedFiles?: File[];
|
||||
onPreviewFile?: (file: File | null) => void;
|
||||
}
|
||||
|
||||
const Compress = ({ selectedFiles = [], onPreviewFile }: CompressProps) => {
|
||||
const Compress = ({ onPreviewFile, onComplete, onError }: BaseToolProps) => {
|
||||
const { t } = useTranslation();
|
||||
const { setCurrentMode } = useFileContext();
|
||||
const { selectedFiles } = useToolFileSelection();
|
||||
|
||||
const compressParams = useCompressParameters();
|
||||
const compressOperation = useCompressOperation();
|
||||
@ -37,10 +35,19 @@ const Compress = ({ selectedFiles = [], onPreviewFile }: CompressProps) => {
|
||||
}, [compressParams.parameters, selectedFiles]);
|
||||
|
||||
const handleCompress = async () => {
|
||||
await compressOperation.executeOperation(
|
||||
compressParams.parameters,
|
||||
selectedFiles
|
||||
);
|
||||
try {
|
||||
await compressOperation.executeOperation(
|
||||
compressParams.parameters,
|
||||
selectedFiles
|
||||
);
|
||||
if (compressOperation.files && onComplete) {
|
||||
onComplete(compressOperation.files);
|
||||
}
|
||||
} catch (error) {
|
||||
if (onError) {
|
||||
onError(error instanceof Error ? error.message : 'Compress operation failed');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const handleThumbnailClick = (file: File) => {
|
||||
|
Loading…
Reference in New Issue
Block a user