图生 3D 的素材库空确认不再清掉已选参考图
- src/components/image-editor/ImageCanvasGenerationDialogModel.ts:单槽对话框只在素材库确实选到了图时才做「替换」,空确认退回原行为(保留画布点选/上传的那张)。此前确认按钮不校验空选,空确认会把已有参考图直接清掉 - src/components/image-editor/projectAssetReferencePickerModel.test.ts:补空确认保留画布参考图的用例
This commit is contained in:
@@ -2265,7 +2265,8 @@ export function replaceProjectAssetPickerReferences(
|
||||
...resetFailedGenerationDialog(dialog),
|
||||
generationReferences: appendLimitedImageReferences(
|
||||
// 单槽对话框(图生 3D)里素材库选择是替换:留着画布点选的那张只会把这次选择挤掉。
|
||||
usesSingleImageReferenceSlot(dialog)
|
||||
// 但确认时一个都没选就不算「替换」,否则空确认会把画布点选/上传的那张直接清掉。
|
||||
usesSingleImageReferenceSlot(dialog) && references.length > 0
|
||||
? []
|
||||
: (dialog.generationReferences ?? []).filter(
|
||||
(reference) => !isProjectAssetPickerReference(reference),
|
||||
|
||||
@@ -272,6 +272,30 @@ describe('参考图弹窗素材筛选与快照', () => {
|
||||
expect(next).toMatchObject({ status: 'idle', composerOpen: true });
|
||||
});
|
||||
|
||||
it('keeps the 3D image-to-model source when the picker is confirmed empty', () => {
|
||||
const dialog = {
|
||||
mode: 'model3d-image-to-model',
|
||||
prompt: '',
|
||||
status: 'failed',
|
||||
errorMessage: '失败',
|
||||
composerOpen: false,
|
||||
generationReferences: [
|
||||
{
|
||||
id: 'canvas-layer-1',
|
||||
label: '画布点选',
|
||||
src: 'https://example.test/canvas.png',
|
||||
mediaType: 'image',
|
||||
},
|
||||
],
|
||||
} satisfies GenerateDialogState;
|
||||
|
||||
const next = replaceProjectAssetPickerReferences(dialog, []);
|
||||
|
||||
expect(
|
||||
next?.generationReferences?.map((reference) => reference.id),
|
||||
).toEqual(['canvas-layer-1']);
|
||||
});
|
||||
|
||||
it('leaves dialogs outside the reference-composer modes untouched', () => {
|
||||
const dialog = {
|
||||
mode: 'video',
|
||||
|
||||
Reference in New Issue
Block a user