Skip to content

Commit d179696

Browse files
committed
better download error handling
1 parent c8270ac commit d179696

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/main/webapp/ui/src/eln/gallery/useGalleryActions.js

+20-2
Original file line numberDiff line numberDiff line change
@@ -804,15 +804,33 @@ export function useGalleryActions(): {|
804804
);
805805
}
806806
if (rejected.length > 0) {
807+
const rejectedResponses = await Promise.all(
808+
rejected.map(async (response) => {
809+
try {
810+
const data = Parsers.objectPath(
811+
["response", "data"],
812+
response
813+
).elseThrow();
814+
if (!(data instanceof Blob))
815+
throw new Error("Response is not a blob");
816+
const json: mixed = JSON.parse(await data.text());
817+
return Parsers.objectPath(["message"], json)
818+
.flatMap(Parsers.isString)
819+
.elseThrow();
820+
} catch (e) {
821+
return Promise.resolve(e.message);
822+
}
823+
})
824+
);
807825
addAlert(
808826
mkAlert({
809827
variant: "error",
810828
message: `Failed to download ${
811829
fulfilled.length > 0 ? "some of " : ""
812830
}the files.`,
813-
details: rejected.map((e) => ({
831+
details: rejectedResponses.map((errorMsg) => ({
814832
variant: "error",
815-
title: e.message,
833+
title: errorMsg,
816834
})),
817835
})
818836
);

0 commit comments

Comments
 (0)