Show ExifTool errors in metadata UI with short queue labels.

Store detailMessage from worker failures; inspector shows full text, queue keeps fixed summary messages.
This commit is contained in:
2026-11-03 19:10:44 +01:00
parent 0de7a87938
commit 1b36fbaeba
3 changed files with 23 additions and 13 deletions
@@ -10,7 +10,7 @@
<p v-if="!fileName" class="text-sm text-muted-foreground">Select an image to view its metadata.</p>
<template v-else-if="entry.status === 'error' && !entry.output">
<p class="text-sm text-destructive">{{ entry.message }}</p>
<p class="whitespace-pre-wrap text-sm text-destructive">{{ entry.detailMessage ?? entry.message }}</p>
</template>
<template v-else-if="showMetadataTabs">
@@ -18,7 +18,7 @@
<MetadataOutputPanel v-if="tabBody?.kind === 'output'">{{ tabBody.text }}</MetadataOutputPanel>
<p v-else-if="tabBody?.kind === 'error'" class="text-sm text-destructive">{{ tabBody.text }}</p>
<p v-else-if="tabBody?.kind === 'error'" class="whitespace-pre-wrap text-sm text-destructive">{{ tabBody.text }}</p>
</template>
<p v-else class="text-sm text-muted-foreground">{{ entry.message }}</p>
@@ -83,7 +83,7 @@ const tabBody = computed((): MetadataTabBody | null => {
}
if (entry.status === 'error') {
return { kind: 'error', text: entry.message };
return { kind: 'error', text: entry.detailMessage ?? entry.message };
}
return null;
+19 -9
View File
@@ -3,6 +3,7 @@ import { ref } from 'vue';
import { useExiftoolStore } from '@/stores/exiftool';
import type { MetadataPreviewEntry } from '@/types/metadata/MetadataPreview';
import { makeKeyFromFile } from '@/utils/file/makeKeyFromFile';
import { resolveErrorMessage } from '@/utils/resolveErrorMessage';
const METADATA_IDLE_MESSAGE = 'Waiting to load metadata...';
const EXIFTOOL_INITIALIZING_MESSAGE = 'Downloading ExifTool…';
@@ -17,11 +18,6 @@ const METADATA_IDLE_PREVIEW: MetadataPreviewEntry = {
message: METADATA_IDLE_MESSAGE
};
const METADATA_LOAD_ERROR_PREVIEW: MetadataPreviewEntry = {
status: 'error',
message: METADATA_LOAD_ERROR_MESSAGE
};
const EXIFTOOL_PREPARE_ERROR_PREVIEW: MetadataPreviewEntry = {
status: 'error',
message: EXIFTOOL_PREPARE_ERROR_MESSAGE
@@ -96,9 +92,15 @@ export const useMetadataStore = defineStore('metadata', () => {
} catch (error) {
console.error('[metadata] read failed', { file: file.name, error });
setPreviewEntry(key, METADATA_LOAD_ERROR_PREVIEW);
const entry: MetadataPreviewEntry = {
status: 'error',
message: METADATA_LOAD_ERROR_MESSAGE,
detailMessage: resolveErrorMessage(error, METADATA_LOAD_ERROR_MESSAGE)
};
return METADATA_LOAD_ERROR_PREVIEW;
setPreviewEntry(key, entry);
return entry;
}
let strippedBlob: Blob;
@@ -116,6 +118,7 @@ export const useMetadataStore = defineStore('metadata', () => {
const entry: MetadataPreviewEntry = {
status: 'error',
message: METADATA_STRIP_ERROR_MESSAGE,
detailMessage: resolveErrorMessage(error, METADATA_STRIP_ERROR_MESSAGE),
output
};
@@ -136,9 +139,16 @@ export const useMetadataStore = defineStore('metadata', () => {
} catch (error) {
console.error('[metadata] read after strip failed', { file: file.name, error });
setPreviewEntry(key, METADATA_LOAD_ERROR_PREVIEW);
const entry: MetadataPreviewEntry = {
status: 'error',
message: METADATA_LOAD_ERROR_MESSAGE,
detailMessage: resolveErrorMessage(error, METADATA_LOAD_ERROR_MESSAGE),
output
};
return METADATA_LOAD_ERROR_PREVIEW;
setPreviewEntry(key, entry);
return entry;
}
setStrippedBlob(key, strippedBlob);
@@ -3,4 +3,4 @@ export type MetadataPreviewEntry =
| { status: 'initializing'; message: string }
| { status: 'processing'; message: string }
| { status: 'ready'; message: string; output: string; afterStripOutput: string }
| { status: 'error'; message: string; output?: string };
| { status: 'error'; message: string; output?: string; detailMessage?: string };