fix(frontend): clarify CivArchive error tooltips

This commit is contained in:
Dariusz L
2026-08-02 15:42:15 +02:00
parent ce52d957f9
commit 4ea3f7d50f
3 changed files with 20 additions and 3 deletions
+6 -1
View File
@@ -5,6 +5,7 @@ import { searchSourceMethods } from '../web/resolver/search/search_source_method
const {
getSearchSourceLabel,
getSearchSourceErrorMessage,
getSearchSourceErrorTooltip,
getSearchSourceDefinitions,
getSearchResultKeysForSources,
getHashLookupSourcesForSearchSources,
@@ -54,7 +55,7 @@ test('search source labels and definitions remain stable', () => {
});
test('CivArchive availability failures receive a user-facing retry message', () => {
const dialog = { getSearchSourceLabel };
const dialog = { getSearchSourceLabel, getSearchSourceErrorMessage };
const temporaryFailure = getSearchSourceErrorMessage.call(
dialog,
'civarchive',
@@ -77,6 +78,10 @@ test('CivArchive availability failures receive a user-facing retry message', ()
getSearchSourceErrorMessage.call(dialog, 'civitai', 'CivAI request timed out'),
'CivAI request timed out'
);
assert.equal(
getSearchSourceErrorTooltip.call(dialog, 'civarchive', 'CivArchive search failed: HTTP 522'),
'CivArchive may be overloaded or temporarily unavailable. Please try again later. Details: CivArchive search failed: HTTP 522'
);
});
test('search source selection maps source ids to result and hash keys', () => {
@@ -2486,6 +2486,9 @@ export const resolveDownloadMethods = {
const sourceErrorMessage = sourceError
? (this.getSearchSourceErrorMessage?.(source, sourceError) || sourceError)
: null;
const sourceErrorTooltip = sourceError
? (this.getSearchSourceErrorTooltip?.(source, sourceError) || sourceErrorMessage)
: null;
if (sourceErrorMessage) sourceErrorMessages.add(sourceErrorMessage);
const found = this.hasSearchResults(data);
@@ -2506,7 +2509,7 @@ export const resolveDownloadMethods = {
status: sourceError ? 'error' : (found ? 'found' : 'none'),
percent: 100,
message: sourceErrorMessage || (found ? foundMessage : 'No match'),
error: sourceError || null
error: sourceErrorTooltip
}, missing, { workflowKey });
if (data.civitai) {
@@ -2553,6 +2556,8 @@ export const resolveDownloadMethods = {
const sourceErrorMessage = this.getSearchSourceErrorMessage?.(source, error.message)
|| error.message
|| 'Error';
const sourceErrorTooltip = this.getSearchSourceErrorTooltip?.(source, error.message)
|| sourceErrorMessage;
sourceErrorMessages.add(sourceErrorMessage);
state.lastAttemptSources = Array.from(attemptedSources);
state.lastAttemptFound = anyFound;
@@ -2562,7 +2567,7 @@ export const resolveDownloadMethods = {
status: 'error',
percent: 100,
message: sourceErrorMessage,
error: error.message || null
error: sourceErrorTooltip
}, missing, { workflowKey });
this.persistSearchStateForWorkflow(workflowKey, missing, state);
this.refreshSearchUiForMissing(missing, state, { workflowKey });
@@ -92,6 +92,13 @@ export const searchSourceMethods = {
return message;
},
getSearchSourceErrorTooltip(source, error) {
const technicalMessage = String(error || '').trim();
const displayMessage = this.getSearchSourceErrorMessage(source, technicalMessage);
if (!technicalMessage || technicalMessage === displayMessage) return displayMessage;
return `${displayMessage} Details: ${technicalMessage}`;
},
getSearchSourceDefinitions() {
return [
{