调整图片画布路由和画布数据模型
将图片画布入口改为 /editor/canvas 新增 editor_canvas 表并关联 editor_project 默认画布 更新 project API 响应中的 canvas 快照兼容层 统一图片画布侧栏列表项和图标按钮组件 同步前端测试、SpacetimeDB bindings、技术文档和 TRACKING 记录
This commit is contained in:
@@ -8,8 +8,8 @@ use serde::{Deserialize, Serialize};
|
||||
use serde_json::{Value, json};
|
||||
use shared_kernel::build_prefixed_uuid_id;
|
||||
use spacetime_client::{
|
||||
EditorCanvasViewportRecord, EditorProjectCreateRecordInput, EditorProjectGetRecordInput,
|
||||
EditorProjectLayoutSaveRecordInput, EditorProjectRecord,
|
||||
EditorCanvasRecord, EditorCanvasViewportRecord, EditorProjectCreateRecordInput,
|
||||
EditorProjectGetRecordInput, EditorProjectLayoutSaveRecordInput, EditorProjectRecord,
|
||||
EditorProjectResourceCreateRecordInput, EditorProjectResourceRecord, SpacetimeClientError,
|
||||
};
|
||||
|
||||
@@ -120,12 +120,25 @@ pub struct EditorImageGenerationResponse {
|
||||
pub struct EditorProjectPayload {
|
||||
project_id: String,
|
||||
title: String,
|
||||
canvas: EditorCanvasPayload,
|
||||
viewport: EditorCanvasViewportPayload,
|
||||
layers: Value,
|
||||
resources: Vec<EditorProjectResourcePayload>,
|
||||
updated_at: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct EditorCanvasPayload {
|
||||
canvas_id: String,
|
||||
project_id: String,
|
||||
title: String,
|
||||
viewport: EditorCanvasViewportPayload,
|
||||
layers: Value,
|
||||
created_at: String,
|
||||
updated_at: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct EditorProjectResourcePayload {
|
||||
@@ -417,9 +430,11 @@ pub async fn edit_editor_image(
|
||||
}
|
||||
|
||||
fn editor_project_payload_from_record(record: EditorProjectRecord) -> EditorProjectPayload {
|
||||
let canvas = editor_canvas_payload_from_record(record.canvas);
|
||||
EditorProjectPayload {
|
||||
project_id: record.project_id,
|
||||
title: record.title,
|
||||
canvas,
|
||||
viewport: EditorCanvasViewportPayload {
|
||||
x: record.viewport.x,
|
||||
y: record.viewport.y,
|
||||
@@ -435,6 +450,22 @@ fn editor_project_payload_from_record(record: EditorProjectRecord) -> EditorProj
|
||||
}
|
||||
}
|
||||
|
||||
fn editor_canvas_payload_from_record(record: EditorCanvasRecord) -> EditorCanvasPayload {
|
||||
EditorCanvasPayload {
|
||||
canvas_id: record.canvas_id,
|
||||
project_id: record.project_id,
|
||||
title: record.title,
|
||||
viewport: EditorCanvasViewportPayload {
|
||||
x: record.viewport.x,
|
||||
y: record.viewport.y,
|
||||
scale: record.viewport.scale,
|
||||
},
|
||||
layers: record.layers,
|
||||
created_at: record.created_at,
|
||||
updated_at: record.updated_at,
|
||||
}
|
||||
}
|
||||
|
||||
fn editor_project_resource_payload_from_record(
|
||||
record: EditorProjectResourceRecord,
|
||||
) -> EditorProjectResourcePayload {
|
||||
|
||||
Reference in New Issue
Block a user