Skip to content

Commit 36e8794

Browse files
committed
feat: show detailed messages from validator-services
1 parent 2fc88ff commit 36e8794

File tree

3 files changed

+36
-15
lines changed

3 files changed

+36
-15
lines changed

src/components/LocalFilesValidator.vue

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
const activeStep = ref(1);
1414
const files = ref([]);
1515
const requestStatus = ref(""); // 'pending' | 'draft' | 'success' | 'error' = 'draft'
16+
const uploadErrorMessage = ref("");
1617
1718
const onAddFiles = (_files) => {
1819
files.value = _files;
@@ -24,7 +25,14 @@
2425
2526
const uploadFiles = () => {
2627
const handleError = (error) => {
27-
console.error(error);
28+
if (typeof error === "object" && typeof error.message === "string") {
29+
try {
30+
const errorResponse = JSON.parse(error.message);
31+
uploadErrorMessage.value = errorResponse.message;
32+
} catch (err) {
33+
console.error(err);
34+
}
35+
}
2836
requestStatus.value = "error";
2937
};
3038
@@ -62,7 +70,12 @@
6270
<p class="mb-4 text-center">Upload your IATI files and start validation.</p>
6371
<div v-if="requestStatus && requestStatus !== 'draft'" class="mb-3 text-sm">
6472
<AppAlert v-if="requestStatus === 'error'" variant="error">
65-
File(s) uploading failed. Check your files and try again.
73+
<template v-if="uploadErrorMessage === ''">
74+
File(s) uploading failed. Check your files and try again.
75+
</template>
76+
<template v-else>
77+
{{ uploadErrorMessage }}
78+
</template>
6679
</AppAlert>
6780
<AppAlert v-else-if="requestStatus === 'success'" variant="success">
6881
File(s) have been uploaded successfully

src/components/RemoteFIlesValidator.vue

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
const props = defineProps({ workspaceID: { type: String, default: "" } });
1212
const activeStep = ref(1);
1313
const requestStatus = ref(""); // 'pending' | 'draft' | 'success' | 'error' = 'draft'
14+
const includeGenericErrorMessage = ref(true);
1415
const requestErrorMessage = ref("");
1516
const urls = ref("");
1617
const incorrectURLs = ref([]);
@@ -51,22 +52,19 @@
5152
requestStatus.value = "error";
5253
if (error && error.message) {
5354
requestErrorMessage.value = error.message;
55+
if (error.cause.status === 503) {
56+
includeGenericErrorMessage.value = false;
57+
}
5458
} else {
55-
console.log("Error: ", error);
59+
console.log(`Error received from IATI Validator Services: ${error}`);
5660
}
5761
};
5862
5963
requestStatus.value = "pending";
6064
parallelUpload(correctURLs).subscribe({
61-
next: (response) => {
62-
const responseText = Array.isArray(response) && response.length ? response[0] : response;
63-
if (responseText === "success") {
64-
activeStep.value = 3;
65-
requestStatus.value = "success";
66-
} else {
67-
requestStatus.value = "error";
68-
requestErrorMessage.value = responseText;
69-
}
65+
next: () => {
66+
activeStep.value = 3;
67+
requestStatus.value = "success";
7068
},
7169
error: handleError,
7270
});
@@ -98,7 +96,10 @@
9896
<p class="mb-4 text-center">Fetch the files from the web.</p>
9997
<div v-if="requestStatus && requestStatus !== 'draft'" class="mb-3 text-sm">
10098
<AppAlert v-if="requestStatus === 'error'" variant="error">
101-
File(s) uploading failed. Check your files and try again.<br />{{ requestErrorMessage }}
99+
<template v-if="includeGenericErrorMessage">
100+
File(s) uploading failed. Check your files and try again.<br />
101+
</template>
102+
{{ requestErrorMessage }}
102103
</AppAlert>
103104
<AppAlert v-else-if="requestStatus === 'success'" variant="success">
104105
File(s) have been uploaded successfully

src/utils/api/validate.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,18 @@ export const fetchFileFromURL = async (fileUrl, workspaceID) => {
3333
});
3434

3535
if (req.status === 200) return "success";
36+
37+
let errorMessage = "";
3638
if (req.status === 422) {
3739
const error = await req.json();
38-
39-
return error.message.includes(fileUrl) ? error.message : `${error.url} - ${error.message}`;
40+
errorMessage = error.message.includes(fileUrl) ? error.message : `${error.url} - ${error.message}`;
41+
} else if (req.status === 503) {
42+
const error = await req.json();
43+
errorMessage = error.message;
44+
} else {
45+
errorMessage = req.text;
4046
}
47+
throw new Error(errorMessage, { cause: { status: req.status } });
4148
};
4249

4350
export const getTempWorkspaceURL = (workspaceID) => `${SERVICES_URL}/pvt/adhoc/session/?sessionId=${workspaceID}`;

0 commit comments

Comments
 (0)