468d1d27dd
- 移除未登录全页面拦截,改为浏览自由 + 功能使用时弹窗 - 修复PageTransition退出动画卡死导致黑屏的bug - CanvasPage添加加载中状态避免首次访问黑屏假死 - 全站7个工具页添加页面保活机制,切页后台任务不中断 - 修复未登录时401误触发"用户已在别处登录"弹窗 - 删除MorePage模板板块、微信登录、EcommerceTemplates/SizeTemplate路由 - 剧本评分接入DashScope qwen3.7-max直连API - 电商视频生成重构为3阶段可视管线(策划→生成图片→生成视频) - 电商视频保活增强:异步函数直接写localStorage避免卸载丢失 - Workbench侧边栏移除mode过滤,三模式共用同一对话列表 - 首页更新轮播图/背景视频、按钮跳转修正、文案优化 - AppShell顶栏新增网站备案信息按钮 - 多个页面的terminate/cancel按钮覆盖、单镜头重试、批量保存下载 Co-Authored-By: Claude Code <noreply@anthropic.com>
56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
import { create } from 'zustand';
|
|
import type { WebProjectSummary, WebCanvasWorkflow } from '../types';
|
|
import { createBlankWorkflow } from '../data/workflows';
|
|
|
|
interface ProjectState {
|
|
projects: WebProjectSummary[];
|
|
projectsLoaded: boolean;
|
|
canvasWorkflow: WebCanvasWorkflow;
|
|
currentCanvasProjectId: string | null;
|
|
pendingDeleteProject: WebProjectSummary | null;
|
|
deleteProjectSubmitting: boolean;
|
|
}
|
|
|
|
interface ProjectActions {
|
|
setProjects: (projects: WebProjectSummary[]) => void;
|
|
setProjectsLoaded: (loaded: boolean) => void;
|
|
setCanvasWorkflow: (workflow: WebCanvasWorkflow) => void;
|
|
setCurrentCanvasProjectId: (id: string | null) => void;
|
|
openDeleteProject: (project: WebProjectSummary) => void;
|
|
closeDeleteProject: () => void;
|
|
setDeleteProjectSubmitting: (submitting: boolean) => void;
|
|
clearProjectState: () => void;
|
|
}
|
|
|
|
const initialState: ProjectState = {
|
|
projects: [],
|
|
projectsLoaded: false,
|
|
canvasWorkflow: createBlankWorkflow(),
|
|
currentCanvasProjectId: null,
|
|
pendingDeleteProject: null,
|
|
deleteProjectSubmitting: false,
|
|
};
|
|
|
|
export const useProjectStore = create<ProjectState & ProjectActions>((set) => ({
|
|
...initialState,
|
|
|
|
setProjects: (projects) => set({ projects }),
|
|
|
|
setProjectsLoaded: (loaded) => set({ projectsLoaded: loaded }),
|
|
|
|
setCanvasWorkflow: (workflow) => set({ canvasWorkflow: workflow }),
|
|
|
|
setCurrentCanvasProjectId: (id) => set({ currentCanvasProjectId: id }),
|
|
|
|
openDeleteProject: (project) => set({ pendingDeleteProject: project }),
|
|
|
|
closeDeleteProject: () => set({
|
|
pendingDeleteProject: null,
|
|
deleteProjectSubmitting: false,
|
|
}),
|
|
|
|
setDeleteProjectSubmitting: (submitting) => set({ deleteProjectSubmitting: submitting }),
|
|
|
|
clearProjectState: () => set(initialState),
|
|
}));
|