feat: 完成短剧项目空间与结构化资产创作闭环 (#38)
* feat(canvas): 短剧项目空间 - 建立项目章节与画布关联 MVP * feat(canvas): 短剧项目空间 - 完善项目资产、镜头与流程闭环 Refs #30 * fix(deploy): 本地部署 - 修复前端构建并忽略本地 PostgreSQL 配置 * feat(*): 短剧项目空间 - 完成项目、章节、资产、角色与画布创作闭环 Refs #30 --------- Co-authored-by: ddCat <ddcat666@88.com>
This commit is contained in:
@@ -82,8 +82,8 @@ export function scheduleRemoteUserDataSync() {
|
||||
}, 1200);
|
||||
}
|
||||
|
||||
export async function createCanvasProjectWithRemoteSync(title: string) {
|
||||
const id = useCanvasStore.getState().createProject(title);
|
||||
export async function createCanvasProjectWithRemoteSync(title: string, projectId?: string) {
|
||||
const id = useCanvasStore.getState().createProject(title, projectId);
|
||||
if (!activeRemoteUserId) return { id, syncError: new Error("尚未建立云端同步会话") };
|
||||
try {
|
||||
await saveRemoteUserDataNow();
|
||||
@@ -94,6 +94,14 @@ export async function createCanvasProjectWithRemoteSync(title: string) {
|
||||
}
|
||||
}
|
||||
|
||||
export async function deleteAssetWithRemoteSync(id: string) {
|
||||
if (activeRemoteUserId) {
|
||||
await deleteRemoteAsset(id);
|
||||
remoteAssetVersions.delete(id);
|
||||
}
|
||||
useAssetStore.getState().removeAsset(id);
|
||||
}
|
||||
|
||||
export async function saveRemoteUserDataNow() {
|
||||
if (!activeRemoteUserId) return;
|
||||
if (syncPromise) {
|
||||
@@ -160,7 +168,7 @@ async function hydrateAssets(assets: Asset[]) {
|
||||
const dataUrl = await resolveImageUrl(asset.data.storageKey, asset.data.dataUrl);
|
||||
return { ...asset, coverUrl: shouldReplaceEphemeralUrl(asset.coverUrl) ? dataUrl : asset.coverUrl, data: { ...asset.data, dataUrl } };
|
||||
}
|
||||
if (asset.kind === "video" && asset.data.storageKey) {
|
||||
if ((asset.kind === "video" || asset.kind === "audio") && asset.data.storageKey) {
|
||||
const url = await resolveResourceOrMediaUrl(asset.data.storageKey, asset.data.url);
|
||||
return { ...asset, coverUrl: shouldReplaceEphemeralUrl(asset.coverUrl) ? url : asset.coverUrl, data: { ...asset.data, url } };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user