feat(admin ui): improve feedback when metadata fails

This commit is contained in:
DecDuck
2024-12-25 23:36:39 +11:00
parent fe9373af78
commit 2c19e13c09
3 changed files with 96 additions and 133 deletions
@@ -9,5 +9,13 @@ export default defineEventHandler(async (h3) => {
if (!search)
throw createError({ statusCode: 400, statusMessage: "Invalid search" });
return await h3.context.metadataHandler.search(search);
const results = await h3.context.metadataHandler.search(search);
if (results.length == 0)
throw createError({
statusCode: 500,
statusMessage: "No metadata provider returned search results.",
});
return results;
});
+14 -10
View File
@@ -50,15 +50,19 @@ export class MetadataHandler {
const queryTransformationPromise = new Promise<
InternalGameMetadataResult[]
>(async (resolve, reject) => {
const results = await provider.search(query);
const mappedResults: InternalGameMetadataResult[] = results.map(
(result) =>
Object.assign({}, result, {
sourceId: provider.id(),
sourceName: provider.name(),
})
);
resolve(mappedResults);
try {
const results = await provider.search(query);
const mappedResults: InternalGameMetadataResult[] = results.map(
(result) =>
Object.assign({}, result, {
sourceId: provider.id(),
sourceName: provider.name(),
})
);
resolve(mappedResults);
} catch (e) {
reject(e);
}
});
promises.push(queryTransformationPromise);
}
@@ -68,7 +72,7 @@ export class MetadataHandler {
.filter((result) => result.status === "fulfilled")
.map((result) => result.value)
.flat();
return successfulResults;
}