Skip to content

Commit bb459e6

Browse files
authored
fix(ui): correctly parse import errors (#7726)
errors are nested Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
1 parent 2fe6e27 commit bb459e6

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

core/http/views/model-editor.html

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -833,8 +833,24 @@ <h2 class="text-xl font-semibold text-[#E5E7EB] flex items-center gap-3">
833833
});
834834

835835
if (!response.ok) {
836-
const error = await response.json().catch(() => ({ error: 'Failed to start import' }));
837-
throw new Error(error.error || 'Failed to start import');
836+
const errorData = await response.json().catch(() => ({ message: 'Failed to start import' }));
837+
// Extract error message from various possible formats
838+
// Handle nested error object: {"error": {"message": "...", "code": 500}}
839+
let errorMessage = 'Failed to start import';
840+
if (errorData.error) {
841+
if (typeof errorData.error === 'object' && errorData.error.message) {
842+
errorMessage = errorData.error.message;
843+
} else if (typeof errorData.error === 'string') {
844+
errorMessage = errorData.error;
845+
}
846+
} else if (errorData.message) {
847+
errorMessage = errorData.message;
848+
} else if (errorData.Error) {
849+
errorMessage = errorData.Error;
850+
} else {
851+
errorMessage = JSON.stringify(errorData);
852+
}
853+
throw new Error(errorMessage);
838854
}
839855

840856
const result = await response.json();
@@ -1053,6 +1069,27 @@ <h2 class="text-xl font-semibold text-[#E5E7EB] flex items-center gap-3">
10531069
body: yamlContent
10541070
});
10551071

1072+
if (!response.ok) {
1073+
const errorData = await response.json().catch(() => ({ message: 'Failed to save configuration' }));
1074+
// Extract error message from various possible formats
1075+
// Handle nested error object: {"error": {"message": "...", "code": 500}}
1076+
let errorMessage = 'Failed to save configuration';
1077+
if (errorData.error) {
1078+
if (typeof errorData.error === 'object' && errorData.error.message) {
1079+
errorMessage = errorData.error.message;
1080+
} else if (typeof errorData.error === 'string') {
1081+
errorMessage = errorData.error;
1082+
}
1083+
} else if (errorData.message) {
1084+
errorMessage = errorData.message;
1085+
} else if (errorData.Error) {
1086+
errorMessage = errorData.Error;
1087+
} else {
1088+
errorMessage = JSON.stringify(errorData);
1089+
}
1090+
throw new Error(errorMessage);
1091+
}
1092+
10561093
const result = await response.json();
10571094

10581095
if (result.success) {
@@ -1063,7 +1100,8 @@ <h2 class="text-xl font-semibold text-[#E5E7EB] flex items-center gap-3">
10631100
}, 2000);
10641101
}
10651102
} else {
1066-
this.showAlert('error', result.error || 'Failed to save configuration');
1103+
const errorMessage = result.message || result.error || result.Error || 'Failed to save configuration';
1104+
this.showAlert('error', errorMessage);
10671105
}
10681106
} catch (error) {
10691107
this.showAlert('error', 'Failed to save: ' + error.message);

0 commit comments

Comments
 (0)