feat: 形态图片标记身份母版过期
This commit is contained in:
@@ -19,6 +19,33 @@ export function coverImage(form: SubjectFormAsset): SubjectImage | undefined {
|
|||||||
return primaryImage(form.images) ?? form.images.find(image => image.status === 'completed' && image.imageUrl)
|
return primaryImage(form.images) ?? form.images.find(image => image.status === 'completed' && image.imageUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 当前主体正在使用的 Identity Anchor ID。 */
|
||||||
|
export function currentIdentityAnchorId(form: SubjectFormAsset): string | undefined {
|
||||||
|
return form.subject.identity?.images[0]?.id
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 读取形态图生成时实际使用的 Identity Anchor ID。 */
|
||||||
|
export function imageIdentityAnchorId(image: SubjectImage | undefined): string | undefined {
|
||||||
|
if (!image?.rawJson) return undefined
|
||||||
|
try {
|
||||||
|
const raw = JSON.parse(image.rawJson) as { identityAnchorImageId?: unknown }
|
||||||
|
return typeof raw.identityAnchorImageId === 'string' ? raw.identityAnchorImageId : undefined
|
||||||
|
} catch {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前主形态图是否由旧 Identity Anchor 生成。
|
||||||
|
* 有当前 Anchor 但旧图没有追溯 ID,也按过期处理,避免历史图片继续进入后续 Keyframe。
|
||||||
|
*/
|
||||||
|
export function isPrimaryIdentityStale(form: SubjectFormAsset): boolean {
|
||||||
|
const anchorId = currentIdentityAnchorId(form)
|
||||||
|
const primary = primaryImage(form.images)
|
||||||
|
if (!anchorId || !primary) return false
|
||||||
|
return imageIdentityAnchorId(primary) !== anchorId
|
||||||
|
}
|
||||||
|
|
||||||
/** 查询发现后台仍在运行时也阻止重复提交,不只依赖本地 loading。 */
|
/** 查询发现后台仍在运行时也阻止重复提交,不只依赖本地 loading。 */
|
||||||
export function hasRunningImages(images: Pick<SubjectImage, 'status'>[]): boolean {
|
export function hasRunningImages(images: Pick<SubjectImage, 'status'>[]): boolean {
|
||||||
return images.some(image => image.status === 'pending' || image.status === 'generating')
|
return images.some(image => image.status === 'pending' || image.status === 'generating')
|
||||||
|
|||||||
Reference in New Issue
Block a user