From d7f50984b4fee54a5ab4ededffd1dca9cf33fc96 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 18 Apr 2026 15:09:48 +0800 Subject: [PATCH] Match LibTV share publish flow --- .../canvas/LiblibVideoCanvasReplica.tsx | 229 ++++++++++++++---- 1 file changed, 179 insertions(+), 50 deletions(-) diff --git a/components/canvas/LiblibVideoCanvasReplica.tsx b/components/canvas/LiblibVideoCanvasReplica.tsx index 6a40a16e1..fc371b40c 100644 --- a/components/canvas/LiblibVideoCanvasReplica.tsx +++ b/components/canvas/LiblibVideoCanvasReplica.tsx @@ -246,6 +246,8 @@ const AUDIO_SOURCE_URL = "https://liblibai-online.liblib.cloud/web/28aa80df5944499487381983a8f9bbdd/3ca0886d-d35f-4048-95bf-cc655e9c57fd.mp3"; const AUDIO_REFERENCE_IMAGE_URL = "https://liblibai-online.liblib.cloud/web/ea95cb51f3d94addbb92dc003cd33b49/1342d344-2d95-41a1-a2aa-4d20869a318c.png"; +const PUBLISH_MODAL_BG_URL = + "https://libtv-res.liblib.art/upload-images/4e7115e6ee6947b78d73e0203a85fc56/771d92a21c6dce69a97513d21ee3253fe0eedec9.png"; const STORY_SCRIPT_PROMPT = "根据我上传的剧本生成一个完整的故事脚本"; const AUDIO_TO_VIDEO_PROMPT = "根据上传的音频生成对应场景画面,镜头语言、节奏、音乐匹配情绪变化,电影级质感。"; @@ -545,7 +547,7 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib const [toolSearch, setToolSearch] = useState(""); const [isProjectLoading, setIsProjectLoading] = useState(true); const [isSaving, setIsSaving] = useState(false); - const [shareEnabled, setShareEnabled] = useState(false); + const [, setShareEnabled] = useState(false); const [publishPublic, setPublishPublic] = useState(false); const [canvasCommand, setCanvasCommand] = useState(null); const [nodeContextMenu, setNodeContextMenu] = useState(null); @@ -1167,30 +1169,14 @@ export function LiblibVideoCanvasReplica({ canvasId, isLoading = false }: Liblib ) : null} {activePanel === "share" ? ( - setActivePanel(null)} title="分享"> -
-
-
分享链接
-
复制当前画布链接,权限控制待接入。
- -
- setShareEnabled((value) => !value)} /> - -
-
+ setActivePanel(null)} + onCopyLink={() => { + void copyShareLink(); + setActivePanel(null); + }} + onPublish={() => setActivePanel("publish")} + /> ) : null} {activePanel === "publish" ? ( @@ -3025,6 +3011,59 @@ function SkillsAccessModal({ onClose }: { onClose: () => void }) { ); } +function SharePopover({ + onClose, + onCopyLink, + onPublish, +}: { + onClose: () => void; + onCopyLink: () => void; + onPublish: () => void; +}) { + return ( +
+ + +
+ + ); +} + function MemberCenterPanel() { return (
@@ -3179,48 +3218,138 @@ function PublishModal({ projectTitle: string; publishPublic: boolean; }) { - const cover = capturedWorkflows[0]?.cover || ""; return ( - -
- {cover ? ( -
- ) : null} -
- - -
- -