refactor: replace custom formatExecutionTime with formatDuration utility

- Use existing formatDuration util from shared utils instead of custom
  implementation
  - Extract execution time formatting to computed property for cleaner
  template
  - Remove 'any' type assertion in MediaAssetActions, use proper types
This commit is contained in:
Jin Yi
2025-10-20 21:41:53 +09:00
parent 72e130decf
commit 8682ca3e5c
2 changed files with 11 additions and 18 deletions

View File

@@ -15,7 +15,7 @@
<i class="icon-[lucide--copy] size-4" />
</button>
<span class="ml-auto text-sm text-neutral-500">
{{ formatExecutionTime(folderExecutionTime) }}
{{ formattedExecutionTime }}
</span>
</div>
</template>
@@ -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<AssetItem[]>([])
@@ -119,6 +122,11 @@ const folderPromptId = ref<string | null>(null)
const folderExecutionTime = ref<number | undefined>(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`
}
</script>

View File

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