diff --git a/src/app/os/bin/page.tsx b/src/app/os/bin/page.tsx index 8d76b18..9a663f5 100644 --- a/src/app/os/bin/page.tsx +++ b/src/app/os/bin/page.tsx @@ -40,6 +40,7 @@ export default function BinaryDetail() { const [history, setHistory] = useState([]); const [compareXml, setCompareXml] = useState(""); const [compareLoading, setCompareLoading] = useState(false); + const [compareError, setCompareError] = useState(""); useEffect(() => { async function load() { @@ -71,6 +72,9 @@ export default function BinaryDetail() { useEffect(() => { if (!compareWith || !group) return; + setCompareError(""); + setCompareXml(""); + async function loadCompare() { const engine = await createEngine(group); const rawXml = await engine.getBinaryXML(compareWith!, path!); @@ -79,7 +83,11 @@ export default function BinaryDetail() { } setCompareLoading(true); - loadCompare().finally(() => setCompareLoading(false)); + loadCompare() + .catch((err) => { + setCompareError(err.message || "Failed to load comparison"); + }) + .finally(() => setCompareLoading(false)); }, [group, compareWith, path]); const normalizedXml = useMemo( @@ -162,7 +170,14 @@ export default function BinaryDetail() { {loading &&

Loading...

} - {!loading && compareWith && !compareLoading && normalizedCompareXml && ( + {!loading && compareWith && compareError && ( +
+

Comparison failed

+

{compareError}

+
+ )} + + {!loading && compareWith && !compareLoading && !compareError && normalizedCompareXml && (