-
-
- {renderSelectedFile("base")}
-
- {/* Edited PDF section header */}
-
- {t("compare.edited.label", "Edited PDF")}
-
- {renderSelectedFile("comparison")}
-
- {hasBothSelected && (
-
-
+
),
},
],
@@ -594,6 +458,8 @@ const Compare = (props: BaseToolProps) => {
loadingText: t("compare.loading", "Comparing..."),
onClick: handleExecuteCompare,
disabled: !canExecute,
+ // Explicitly null so the noFiles gate is bypassed — Compare manages its own slot state
+ disabledReason: base.endpointEnabled === false ? "endpointUnavailable" : null,
testId: "compare-execute",
disableScopeHints: true,
},
diff --git a/frontend/src/core/tools/Merge.tsx b/frontend/src/core/tools/Merge.tsx
index a99d1bfe78..d4a93792d1 100644
--- a/frontend/src/core/tools/Merge.tsx
+++ b/frontend/src/core/tools/Merge.tsx
@@ -9,7 +9,7 @@ import { useMergeOperation } from "@app/hooks/tools/merge/useMergeOperation";
import { useBaseTool } from "@app/hooks/tools/shared/useBaseTool";
import { BaseToolProps, ToolComponent } from "@app/types/tool";
import { useMergeTips } from "@app/components/tooltips/useMergeTips";
-import { useFileManagement, useSelectedFiles, useAllFiles } from "@app/contexts/FileContext";
+import { useFileManagement, useAllFiles } from "@app/contexts/FileContext";
import { useNavigationState, useNavigationActions } from "@app/contexts/NavigationContext";
const Merge = (props: BaseToolProps) => {
@@ -17,8 +17,7 @@ const Merge = (props: BaseToolProps) => {
const mergeTips = useMergeTips();
// File selection hooks for custom sorting
- const { fileIds } = useAllFiles();
- const { selectedFileStubs } = useSelectedFiles();
+ const { fileIds, fileStubs } = useAllFiles();
const { reorderFiles } = useFileManagement();
const base = useBaseTool("merge", useMergeParameters, useMergeOperation, props, { minFiles: 2, ignoreViewerScope: true });
@@ -89,7 +88,7 @@ const Merge = (props: BaseToolProps) => {
// Custom file sorting logic for merge tool
const sortFiles = useCallback(
(sortType: "filename" | "dateModified", ascending: boolean = true) => {
- const sortedStubs = [...selectedFileStubs].sort((stubA, stubB) => {
+ const sortedStubs = [...fileStubs].sort((stubA, stubB) => {
let comparison = 0;
switch (sortType) {
case "filename":
@@ -106,7 +105,7 @@ const Merge = (props: BaseToolProps) => {
const deselectedIds = fileIds.filter((id) => !selectedIds.includes(id));
reorderFiles([...selectedIds, ...deselectedIds]);
},
- [selectedFileStubs, fileIds, reorderFiles, naturalCompare],
+ [fileStubs, fileIds, reorderFiles, naturalCompare],
);
return createToolFlow({