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:
@@ -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;
|
||||
|
||||
@@ -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 };
|
||||
|
||||
Reference in New Issue
Block a user