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 = () => {