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 <igor.loskutoff@gmail.com>
This commit is contained in:
Igor Loskutov
2026-03-10 11:02:58 +07:00
committed by GitHub
parent 9ac0914175
commit badeb2ebd9
3 changed files with 7 additions and 5 deletions
+5 -3
View File
@@ -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<DocUpdateMessage>(DOMAIN_ACTIVITY, {
+1 -1
View File
@@ -126,7 +126,7 @@ export class TProject extends TTaskProject implements Project {
sequence!: number
@Prop(TypeRef(tracker.class.IssueStatus), tracker.string.DefaultIssueStatus)
defaultIssueStatus!: Ref<IssueStatus>
defaultIssueStatus?: Ref<IssueStatus>
@Prop(TypeRef(contact.mixin.Employee), tracker.string.DefaultAssignee)
defaultAssignee!: Ref<Employee>
+1 -1
View File
@@ -61,7 +61,7 @@ export interface IssueStatus extends Status {}
export interface Project extends TaskProject, IconProps {
identifier: string // Project identifier
sequence: number
defaultIssueStatus: Ref<IssueStatus>
defaultIssueStatus?: Ref<IssueStatus>
defaultAssignee?: Ref<Employee>
defaultTimeReportDay: TimeReportDayType
}