Files
omniai-web/src/stores/useProjectStore.ts
T
stringadmin 468d1d27dd fix: 全站页面保活机制、登录拦截优化、UI修复与功能完善
- 移除未登录全页面拦截,改为浏览自由 + 功能使用时弹窗
- 修复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>
2026-06-03 01:39:06 +08:00

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),
}));