diff --git a/frontend/src/utils/urlMapping.ts b/frontend/src/utils/urlMapping.ts new file mode 100644 index 000000000..953340a3d --- /dev/null +++ b/frontend/src/utils/urlMapping.ts @@ -0,0 +1,33 @@ +import { ToolId } from '../types/navigation'; + +// Map URL paths to tool keys (multiple URLs can map to same tool) +export const URL_TO_TOOL_MAP: Record = { + '/split-pdfs': 'split', + '/split': 'split', + '/merge-pdfs': 'merge', + '/compress-pdf': 'compress', + '/convert': 'convert', + '/convert-pdf': 'convert', + '/file-to-pdf': 'convert', + '/eml-to-pdf': 'convert', + '/html-to-pdf': 'convert', + '/markdown-to-pdf': 'convert', + '/pdf-to-csv': 'convert', + '/pdf-to-img': 'convert', + '/pdf-to-markdown': 'convert', + '/pdf-to-pdfa': 'convert', + '/pdf-to-word': 'convert', + '/pdf-to-xml': 'convert', + '/add-password': 'addPassword', + '/change-permissions': 'changePermissions', + '/sanitize-pdf': 'sanitize', + '/ocr': 'ocr', + '/ocr-pdf': 'ocr', + '/add-watermark': 'addWatermark', + '/remove-password': 'removePassword', + '/single-large-page': 'single-large-page', + '/repair': 'repair', + '/unlock-pdf-forms': 'unlockPdfForms', + '/remove-certificate-sign': 'removeCertificateSign', + '/remove-cert-sign': 'removeCertificateSign' +}; \ No newline at end of file diff --git a/frontend/src/utils/urlRouting.ts b/frontend/src/utils/urlRouting.ts index d5d85e235..930d1b90d 100644 --- a/frontend/src/utils/urlRouting.ts +++ b/frontend/src/utils/urlRouting.ts @@ -9,6 +9,7 @@ import { } from '../types/navigation'; import { ToolRegistry, getToolWorkbench, getToolUrlPath, isValidToolId } from '../data/toolsTaxonomy'; import { firePixel } from './scarfTracking'; +import { URL_TO_TOOL_MAP } from './urlMapping'; /** * Parse the current URL to extract tool routing information @@ -17,7 +18,17 @@ export function parseToolRoute(registry: ToolRegistry): ToolRoute { const path = window.location.pathname; const searchParams = new URLSearchParams(window.location.search); - // Try to find tool by URL path + // First, check URL mapping for multiple URL aliases + const mappedToolId = URL_TO_TOOL_MAP[path]; + if (mappedToolId && registry[mappedToolId]) { + const tool = registry[mappedToolId]; + return { + workbench: getToolWorkbench(tool), + toolId: mappedToolId + }; + } + + // Fallback: Try to find tool by primary URL path in registry for (const [toolId, tool] of Object.entries(registry)) { const toolUrlPath = getToolUrlPath(toolId, tool); if (path === toolUrlPath) {