mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-16 19:33:11 +02:00
Fix url params and fix vite
This commit is contained in:
@@ -9,25 +9,42 @@ export interface CompressProps {
|
||||
files?: FileWithUrl[];
|
||||
setDownloadUrl?: (url: string) => void;
|
||||
setLoading?: (loading: boolean) => void;
|
||||
params?: {
|
||||
compressionLevel: number;
|
||||
grayscale: boolean;
|
||||
removeMetadata: boolean;
|
||||
expectedSize: string;
|
||||
aggressive: boolean;
|
||||
};
|
||||
updateParams?: (newParams: Partial<CompressProps["params"]>) => void;
|
||||
}
|
||||
|
||||
const CompressPdfPanel: React.FC<CompressProps> = ({
|
||||
files = [],
|
||||
setDownloadUrl,
|
||||
setLoading,
|
||||
params = {
|
||||
compressionLevel: 5,
|
||||
grayscale: false,
|
||||
removeMetadata: false,
|
||||
expectedSize: "",
|
||||
aggressive: false,
|
||||
},
|
||||
updateParams,
|
||||
}) => {
|
||||
const { t } = useTranslation();
|
||||
const [searchParams] = useSearchParams();
|
||||
|
||||
|
||||
const [selected, setSelected] = useState<boolean[]>(files.map(() => false));
|
||||
const [compressionLevel, setCompressionLevel] = useState<number>(5);
|
||||
const [grayscale, setGrayscale] = useState<boolean>(false);
|
||||
const [removeMetadata, setRemoveMetadata] = useState<boolean>(false);
|
||||
const [expectedSize, setExpectedSize] = useState<string>("");
|
||||
const [aggressive, setAggressive] = useState<boolean>(false);
|
||||
const [localLoading, setLocalLoading] = useState<boolean>(false);
|
||||
|
||||
const {
|
||||
compressionLevel,
|
||||
grayscale,
|
||||
removeMetadata,
|
||||
expectedSize,
|
||||
aggressive,
|
||||
} = params;
|
||||
|
||||
// Update selection state if files prop changes
|
||||
React.useEffect(() => {
|
||||
setSelected(files.map(() => false));
|
||||
@@ -104,7 +121,7 @@ const CompressPdfPanel: React.FC<CompressProps> = ({
|
||||
max={9}
|
||||
step={1}
|
||||
value={compressionLevel}
|
||||
onChange={setCompressionLevel}
|
||||
onChange={(value) => updateParams?.({ compressionLevel: value })}
|
||||
marks={[
|
||||
{ value: 1, label: "1" },
|
||||
{ value: 5, label: "5" },
|
||||
@@ -116,23 +133,23 @@ const CompressPdfPanel: React.FC<CompressProps> = ({
|
||||
<Checkbox
|
||||
label={t("compress.grayscale.label", "Convert images to grayscale")}
|
||||
checked={grayscale}
|
||||
onChange={e => setGrayscale(e.currentTarget.checked)}
|
||||
onChange={e => updateParams?.({ grayscale: e.currentTarget.checked })}
|
||||
/>
|
||||
<Checkbox
|
||||
label={t("removeMetadata.submit", "Remove PDF metadata")}
|
||||
checked={removeMetadata}
|
||||
onChange={e => setRemoveMetadata(e.currentTarget.checked)}
|
||||
onChange={e => updateParams?.({ removeMetadata: e.currentTarget.checked })}
|
||||
/>
|
||||
<Checkbox
|
||||
label={t("compress.selectText.1.1", "Aggressive compression (may reduce quality)")}
|
||||
checked={aggressive}
|
||||
onChange={e => setAggressive(e.currentTarget.checked)}
|
||||
onChange={e => updateParams?.({ aggressive: e.currentTarget.checked })}
|
||||
/>
|
||||
<TextInput
|
||||
label={t("compress.selectText.5", "Expected output size")}
|
||||
placeholder={t("compress.selectText.5", "e.g. 25MB, 10.8MB, 25KB")}
|
||||
value={expectedSize}
|
||||
onChange={e => setExpectedSize(e.currentTarget.value)}
|
||||
onChange={e => updateParams?.({ expectedSize: e.currentTarget.value })}
|
||||
/>
|
||||
<Button
|
||||
onClick={handleCompress}
|
||||
|
||||
@@ -129,9 +129,13 @@ const SplitPdfPanel: React.FC<SplitPdfPanelProps> = ({
|
||||
setStatus(t("downloadComplete"));
|
||||
} catch (error: any) {
|
||||
console.error(error);
|
||||
setErrorMessage(
|
||||
error.response?.data || t("error.pdfPassword", "An error occurred while splitting the PDF.")
|
||||
);
|
||||
let errorMsg = t("error.pdfPassword", "An error occurred while splitting the PDF.");
|
||||
if (error.response?.data && typeof error.response.data === 'string') {
|
||||
errorMsg = error.response.data;
|
||||
} else if (error.message) {
|
||||
errorMsg = error.message;
|
||||
}
|
||||
setErrorMessage(errorMsg);
|
||||
setStatus(t("error._value", "Split failed."));
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
|
||||
Reference in New Issue
Block a user