diff --git a/src/components/sidebar/tabs/AssetsSidebarTab.vue b/src/components/sidebar/tabs/AssetsSidebarTab.vue index 88e0db3b9..154b41d75 100644 --- a/src/components/sidebar/tabs/AssetsSidebarTab.vue +++ b/src/components/sidebar/tabs/AssetsSidebarTab.vue @@ -15,7 +15,7 @@ - {{ formatExecutionTime(folderExecutionTime) }} + {{ formattedExecutionTime }} @@ -110,7 +110,10 @@ import MediaAssetCard from '@/platform/assets/components/MediaAssetCard.vue' import { useMediaAssets } from '@/platform/assets/composables/useMediaAssets' import type { AssetItem } from '@/platform/assets/schemas/assetSchema' import { ResultItemImpl } from '@/stores/queueStore' -import { getMediaTypeFromFilenamePlural } from '@/utils/formatUtil' +import { + formatDuration, + getMediaTypeFromFilenamePlural +} from '@/utils/formatUtil' const activeTab = ref<'input' | 'output'>('input') const mediaAssets = ref([]) @@ -119,6 +122,11 @@ const folderPromptId = ref(null) const folderExecutionTime = ref(undefined) const isInFolderView = computed(() => folderPromptId.value !== null) +const formattedExecutionTime = computed(() => { + if (!folderExecutionTime.value) return '' + return formatDuration(folderExecutionTime.value * 1000) +}) + const toast = useToast() // Use unified media assets implementation that handles cloud/internal automatically @@ -280,16 +288,4 @@ const copyJobId = async () => { } } } - -const formatExecutionTime = (seconds?: number): string => { - if (!seconds) return '' - - const minutes = Math.floor(seconds / 60) - const remainingSeconds = Math.floor(seconds % 60) - - if (minutes > 0) { - return `${minutes}m ${remainingSeconds}s` - } - return `${remainingSeconds}s` -} diff --git a/src/platform/assets/components/MediaAssetActions.vue b/src/platform/assets/components/MediaAssetActions.vue index 0776a9a1c..74e29fb23 100644 --- a/src/platform/assets/components/MediaAssetActions.vue +++ b/src/platform/assets/components/MediaAssetActions.vue @@ -37,11 +37,8 @@ const emit = defineEmits<{ const { asset, context } = inject(MediaAssetKey)! const actions = useMediaAssetActions() -// Get asset type from context or tags const assetType = computed(() => { - // Check if asset has tags property (AssetItem type) - const assetWithTags = asset.value as any - return context?.value?.type || assetWithTags?.tags?.[0] || 'output' + return context?.value?.type || asset.value?.tags?.[0] || 'output' }) const handleDelete = () => {