fix(frontend): clarify CivArchive error tooltips
This commit is contained in:
@@ -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 [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user