修复画布图层保存体积过大

画布布局不再写入图片base64正文

加载画布时从项目资源补回图层图片地址

补充大图素材保存布局回归测试
This commit is contained in:
2026-06-16 16:39:23 +08:00
parent 1d570605af
commit 94841d4360
2 changed files with 68 additions and 11 deletions

View File

@@ -1623,6 +1623,49 @@ describe('ImageCanvasEditorView', () => {
expect(createEditorAssetMock).not.toHaveBeenCalled();
});
it('saves canvas layout without embedding image payloads in layer snapshots', async () => {
loadEditorAssetLibraryMock.mockResolvedValueOnce({
folders: [
{
folderId: 'project',
label: '项目素材',
sortOrder: 0,
collapsed: false,
systemDefault: true,
},
],
assets: [
{
assetId: 'asset-data-heavy',
folderId: 'project',
label: '大图素材',
imageSrc: 'data:image/png;base64,'.concat('a'.repeat(4000)),
width: 1024,
height: 768,
sourceType: 'uploaded',
},
],
});
render(<ImageCanvasEditorView />);
await screen.findByRole('button', { name: '添加大图素材' });
fireEvent.click(screen.getByRole('button', { name: '添加大图素材' }));
await waitFor(() => {
expect(saveEditorProjectLayoutMock).toHaveBeenCalled();
});
const layoutCalls = saveEditorProjectLayoutMock.mock.calls;
const lastLayout = layoutCalls.at(-1)?.[1];
expect(lastLayout.layers).toEqual(
expect.arrayContaining([
expect.not.objectContaining({
src: expect.stringMatching(/^data:image/u),
}),
]),
);
});
it('adds an asset library image to the canvas with pointer dragging', async () => {
await renderLoadedEditor();