17 lines
796 B
TypeScript
17 lines
796 B
TypeScript
import type { InjectionKey, ShallowRef } from 'vue'
|
|
import type { Project } from './types'
|
|
|
|
/** 由项目布局发布给应用侧栏的访问状态;不额外请求或持久化项目数据。 */
|
|
export interface ProjectAccess {
|
|
projectId: string
|
|
completed: boolean
|
|
}
|
|
|
|
/** 侧栏与项目布局共享同一份判定,初次读取和切换项目时默认锁定。 */
|
|
export const projectAccessKey: InjectionKey<ShallowRef<ProjectAccess | null>> = Symbol('project-access')
|
|
|
|
/** 仅正式项目状态 completed 解锁下游;已有部分剧集或旧 checkpoint 不代表剧本完成。 */
|
|
export function isProjectComplete(project: Pick<Project, 'id' | 'status'> | null, projectId: string): boolean {
|
|
return !!projectId && project?.id === projectId && project.status === 'completed'
|
|
}
|