feat: centralize output asset resolution

This commit is contained in:
Benjamin Lu
2026-01-23 16:01:07 -08:00
parent 82bc727739
commit 6f2b8d21b8
3 changed files with 47 additions and 67 deletions

View File

@@ -227,19 +227,11 @@ import { useAssetSelection } from '@/platform/assets/composables/useAssetSelecti
import { useMediaAssetActions } from '@/platform/assets/composables/useMediaAssetActions'
import { useMediaAssetFiltering } from '@/platform/assets/composables/useMediaAssetFiltering'
import { getOutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
import type { OutputAssetMetadata } from '@/platform/assets/schemas/assetMetadataSchema'
import type { AssetItem } from '@/platform/assets/schemas/assetSchema'
import type { MediaKind } from '@/platform/assets/schemas/mediaAssetSchema'
import {
mapOutputsToAssetItems,
shouldLoadFullOutputs
} from '@/platform/assets/utils/outputAssetUtil'
import { resolveOutputAssetItems } from '@/platform/assets/utils/outputAssetUtil'
import { isCloud } from '@/platform/distribution/types'
import { useSettingStore } from '@/platform/settings/settingStore'
import {
getJobDetail,
getPreviewableOutputsFromJobDetail
} from '@/services/jobOutputCache'
import { useCommandStore } from '@/stores/commandStore'
import { useDialogStore } from '@/stores/dialogStore'
import { useExecutionStore } from '@/stores/executionStore'
@@ -561,17 +553,6 @@ const handleZoomClick = (asset: AssetItem) => {
}
}
async function resolveFolderOutputs(metadata: OutputAssetMetadata) {
const outputsToDisplay = metadata.allOutputs ?? []
if (!shouldLoadFullOutputs(metadata.outputCount, outputsToDisplay.length)) {
return outputsToDisplay
}
const jobDetail = await getJobDetail(metadata.promptId)
const previewableOutputs = getPreviewableOutputsFromJobDetail(jobDetail)
return previewableOutputs.length ? previewableOutputs : outputsToDisplay
}
const enterFolderView = async (asset: AssetItem) => {
const metadata = getOutputAssetMetadata(asset.user_metadata)
if (!metadata) {
@@ -589,20 +570,16 @@ const enterFolderView = async (asset: AssetItem) => {
folderPromptId.value = promptId
folderExecutionTime.value = executionTimeInSeconds
const outputsToDisplay = await resolveFolderOutputs(metadata)
const folderItems = await resolveOutputAssetItems(metadata, {
createdAt: asset.created_at
})
if (outputsToDisplay.length === 0) {
if (folderItems.length === 0) {
console.warn('No outputs available for folder view')
return
}
folderAssets.value = mapOutputsToAssetItems({
promptId,
outputs: outputsToDisplay,
createdAt: asset.created_at,
executionTimeInSeconds,
workflow: metadata.workflow
})
folderAssets.value = folderItems
}
const exitFolderView = () => {