docs(canvas): explain editor entry migration gates and loading lifecycles

This commit is contained in:
2026-11-12 01:26:22 +08:00
parent 450fa3f719
commit f28a2a96bf
9 changed files with 142 additions and 1 deletions
+6
View File
@@ -1,7 +1,13 @@
/**
* 旧版画布的联合读取工具,并行取得目录元数据与v2快照。
* 它不协商canonical新模型,迁移感知的页面入口应使用canvas-entry中的分流流程。
*/
import { CANVAS_ACCEPT } from "./canvas-v2.ts";
import { decodeSnapshot, type CanvasSnapshot, type CanvasRequest } from "./canvas-sync.ts";
import { matchesRef, type Board } from "./workspace.ts";
/** 逐段编码路由引用,校验board身份和工作区,再解码快照;AbortSignal传给两次请求。
* 返回数据不直接更新UI,导航是否仍有效由调用方控制。 */
export async function loadBoardCanvas(request: CanvasRequest, workspaceRef: string, boardRef: string, signal?: AbortSignal) {
const path = `workspaces/${encodeURIComponent(workspaceRef)}/materials/${encodeURIComponent(boardRef)}`;
const [board, snapshot] = await Promise.all([request<Board>(path, { signal }), request<CanvasSnapshot>(path + "/canvas", { signal, headers: { Accept: CANVAS_ACCEPT } })]);