From 13702e662db8ea53c28ce1ad269224fc55939eb2 Mon Sep 17 00:00:00 2001
From: ddCat <2695092045@qq.com>
Date: Sat, 22 Aug 2026 12:33:34 +0800
Subject: [PATCH] =?UTF-8?q?fix(canvas):=20=E7=94=BB=E5=B8=83=E5=88=A0?=
=?UTF-8?q?=E9=99=A4=20-=20=E5=88=A0=E9=99=A4=E4=BA=91=E7=AB=AF=E8=AE=B0?=
=?UTF-8?q?=E5=BD=95=E5=B9=B6=E7=AD=89=E5=BE=85=E6=9C=AC=E5=9C=B0=E6=8C=81?=
=?UTF-8?q?=E4=B9=85=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../canvas/canvas-delete-projects-dialog.tsx | 27 ++++++----
.../canvas/use-canvas-project-lifecycle.ts | 14 +++--
web/src/services/user-data-sync.ts | 18 ++++++-
...user-scoped-generation-persistence.test.ts | 52 ++++++++++++++++++-
4 files changed, 95 insertions(+), 16 deletions(-)
diff --git a/web/src/components/canvas/canvas-delete-projects-dialog.tsx b/web/src/components/canvas/canvas-delete-projects-dialog.tsx
index 9b0f5f073..f13d2f79f 100644
--- a/web/src/components/canvas/canvas-delete-projects-dialog.tsx
+++ b/web/src/components/canvas/canvas-delete-projects-dialog.tsx
@@ -1,20 +1,29 @@
-import { Button, Modal } from "antd";
+import { App, Button, Modal } from "antd";
+import { useState } from "react";
import { useAssetStore } from "@/stores/use-asset-store";
-import { useCanvasStore } from "@/stores/canvas/use-canvas-store";
import { useCanvasUiStore } from "@/stores/canvas/use-canvas-ui-store";
+import { deleteCanvasProjectsWithRemoteSync } from "@/services/user-data-sync";
export function CanvasDeleteProjectsDialog() {
+ const { message } = App.useApp();
const ids = useCanvasUiStore((state) => state.deleteProjectIds);
const setDeleteIds = useCanvasUiStore((state) => state.setDeleteProjectIds);
const removeSelectedIds = useCanvasUiStore((state) => state.removeSelectedProjectIds);
- const deleteProjects = useCanvasStore((state) => state.deleteProjects);
const cleanupImages = useAssetStore((state) => state.cleanupImages);
- const confirm = () => {
- deleteProjects(ids);
- cleanupImages();
- removeSelectedIds(ids);
- setDeleteIds([]);
+ const [deleting, setDeleting] = useState(false);
+ const confirm = async () => {
+ setDeleting(true);
+ try {
+ await deleteCanvasProjectsWithRemoteSync(ids);
+ cleanupImages();
+ removeSelectedIds(ids);
+ setDeleteIds([]);
+ } catch (error) {
+ message.error(error instanceof Error ? `删除画布失败:${error.message}` : "删除画布失败,请稍后重试");
+ } finally {
+ setDeleting(false);
+ }
};
return (
@@ -26,7 +35,7 @@ export function CanvasDeleteProjectsDialog() {
footer={
<>
-