Skip to content
Prev Previous commit
Next Next commit
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
  • Loading branch information
viva-jinyi committed Oct 23, 2025
commit b2c5857a1fd757fc5e707c490bbdb1106d413721
21 changes: 7 additions & 14 deletions src/components/sidebar/tabs/AssetsSidebarTab.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -108,14 +108,19 @@ 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 { getMediaTypeFromFilename } from '@/utils/formatUtil'
import { formatDuration, getMediaTypeFromFilename } from '@/utils/formatUtil'

const activeTab = ref<'input' | 'output'>('input')
const selectedAsset = ref<AssetItem | null>(null)
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()

const inputAssets = useMediaAssets('input')
Expand Down Expand Up @@ -283,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>
5 changes: 1 addition & 4 deletions src/platform/assets/components/MediaAssetActions.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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 = () => {
Expand Down