From badeb2ebd9e3f5ded64b9e07f25e12e8dbce5a68 Mon Sep 17 00:00:00 2001 From: Igor Loskutov Date: Tue, 10 Mar 2026 00:02:58 -0400 Subject: [PATCH] fix(tracker): make Project.defaultIssueStatus optional (#10598) defaultIssueStatus is not reliably populated for all projects.Make the field optional in the type definition and guard the migration to handle undefined values. Signed-off-by: Igor Loskutov --- models/tracker/src/migration.ts | 8 +++++--- models/tracker/src/types.ts | 2 +- plugins/tracker/src/index.ts | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/models/tracker/src/migration.ts b/models/tracker/src/migration.ts index ac2f219eaa..d07660e56c 100644 --- a/models/tracker/src/migration.ts +++ b/models/tracker/src/migration.ts @@ -200,10 +200,12 @@ async function migrateDefaultStatuses (client: MigrationClient, logger: ModelLog // 1. defaultIssueStatus // 2. DocUpdateMessage:update:defaultIssueStatus for (const project of projects) { - const newDefaultIssueStatus = getNewStatus(project.defaultIssueStatus) + if (project.defaultIssueStatus != null) { + const newDefaultIssueStatus = getNewStatus(project.defaultIssueStatus) - if (project.defaultIssueStatus !== newDefaultIssueStatus) { - await client.update(DOMAIN_SPACE, { _id: project._id }, { defaultIssueStatus: newDefaultIssueStatus }) + if (project.defaultIssueStatus !== newDefaultIssueStatus) { + await client.update(DOMAIN_SPACE, { _id: project._id }, { defaultIssueStatus: newDefaultIssueStatus }) + } } const projectUpdateMessages = await client.find(DOMAIN_ACTIVITY, { diff --git a/models/tracker/src/types.ts b/models/tracker/src/types.ts index cb6dbb7786..09d3421f30 100644 --- a/models/tracker/src/types.ts +++ b/models/tracker/src/types.ts @@ -126,7 +126,7 @@ export class TProject extends TTaskProject implements Project { sequence!: number @Prop(TypeRef(tracker.class.IssueStatus), tracker.string.DefaultIssueStatus) - defaultIssueStatus!: Ref + defaultIssueStatus?: Ref @Prop(TypeRef(contact.mixin.Employee), tracker.string.DefaultAssignee) defaultAssignee!: Ref diff --git a/plugins/tracker/src/index.ts b/plugins/tracker/src/index.ts index f90a75abf3..bc1cba1152 100644 --- a/plugins/tracker/src/index.ts +++ b/plugins/tracker/src/index.ts @@ -61,7 +61,7 @@ export interface IssueStatus extends Status {} export interface Project extends TaskProject, IconProps { identifier: string // Project identifier sequence: number - defaultIssueStatus: Ref + defaultIssueStatus?: Ref defaultAssignee?: Ref defaultTimeReportDay: TimeReportDayType }