fix(events): defer event dispatch for task sub-entities

Convert events.Dispatch to events.DispatchOnCommit in task assignees,
comments, attachments, relations, and kanban bucket operations.

Refs #2315
This commit is contained in:
kolaente 2026-03-02 09:13:28 +01:00
parent 3eb289262f
commit fe459c9297
5 changed files with 21 additions and 21 deletions

View File

@ -240,8 +240,9 @@ func (b *TaskBucket) Update(s *xorm.Session, a web.Auth) (err error) {
}
doer, _ := user.GetFromAuth(a)
return events.Dispatch(&TaskUpdatedEvent{
events.DispatchOnCommit(s, &TaskUpdatedEvent{
Task: b.Task,
Doer: doer,
})
return nil
}

View File

@ -187,18 +187,16 @@ func (la *TaskAssginee) Delete(s *xorm.Session, a web.Auth) (err error) {
return err
}
err = events.Dispatch(&TaskAssigneeDeletedEvent{
events.DispatchOnCommit(s, &TaskAssigneeDeletedEvent{
Task: &task,
Assignee: &user.User{ID: la.UserID},
Doer: doer,
})
if err != nil {
return err
}
return events.Dispatch(&TaskUpdatedEvent{
events.DispatchOnCommit(s, &TaskUpdatedEvent{
Task: &task,
Doer: doer,
})
return nil
}
// Create adds a new assignee to a task
@ -277,21 +275,15 @@ func (t *Task) addNewAssigneeByID(s *xorm.Session, newAssigneeID int64, project
if err != nil {
return err
}
err = events.Dispatch(&TaskAssigneeCreatedEvent{
events.DispatchOnCommit(s, &TaskAssigneeCreatedEvent{
Task: &task,
Assignee: newAssignee,
Doer: doer,
})
if err != nil {
return err
}
err = events.Dispatch(&TaskUpdatedEvent{
events.DispatchOnCommit(s, &TaskUpdatedEvent{
Task: &task,
Doer: doer,
})
if err != nil {
return err
}
err = updateProjectLastUpdated(s, &Project{ID: t.ProjectID})
return

View File

@ -97,11 +97,12 @@ func (ta *TaskAttachment) NewAttachment(s *xorm.Session, f io.ReadSeeker, realna
return err
}
return events.Dispatch(&TaskAttachmentCreatedEvent{
events.DispatchOnCommit(s, &TaskAttachmentCreatedEvent{
Task: &task,
Attachment: ta,
Doer: ta.CreatedBy,
})
return nil
}
// ReadOne returns a task attachment
@ -348,11 +349,12 @@ func (ta *TaskAttachment) Delete(s *xorm.Session, a web.Auth) error {
return err
}
return events.Dispatch(&TaskAttachmentDeletedEvent{
events.DispatchOnCommit(s, &TaskAttachmentDeletedEvent{
Task: &task,
Attachment: ta,
Doer: doer,
})
return nil
}
func getTaskAttachmentsByTaskIDs(s *xorm.Session, taskIDs []int64) (attachments []*TaskAttachment, err error) {

View File

@ -99,11 +99,12 @@ func (tc *TaskComment) CreateWithTimestamps(s *xorm.Session, a web.Auth) (err er
}
}
return events.Dispatch(&TaskCommentCreatedEvent{
events.DispatchOnCommit(s, &TaskCommentCreatedEvent{
Task: &task,
Comment: tc,
Doer: tc.Author,
})
return nil
}
// Delete removes a task comment
@ -144,11 +145,12 @@ func (tc *TaskComment) Delete(s *xorm.Session, a web.Auth) error {
return err
}
return events.Dispatch(&TaskCommentDeletedEvent{
events.DispatchOnCommit(s, &TaskCommentDeletedEvent{
Task: &task,
Comment: tc,
Doer: doer,
})
return nil
}
// Update updates a task text by its ID
@ -183,11 +185,12 @@ func (tc *TaskComment) Update(s *xorm.Session, _ web.Auth) error {
return err
}
return events.Dispatch(&TaskCommentUpdatedEvent{
events.DispatchOnCommit(s, &TaskCommentUpdatedEvent{
Task: &task,
Comment: tc,
Doer: tc.Author,
})
return nil
}
func getTaskCommentSimple(s *xorm.Session, tc *TaskComment) error {

View File

@ -262,11 +262,12 @@ func (rel *TaskRelation) Create(s *xorm.Session, a web.Auth) error {
return err
}
return events.Dispatch(&TaskRelationCreatedEvent{
events.DispatchOnCommit(s, &TaskRelationCreatedEvent{
Task: &task,
Relation: rel,
Doer: doer,
})
return nil
}
// ReadOne returns a task relation
@ -343,9 +344,10 @@ func (rel *TaskRelation) Delete(s *xorm.Session, a web.Auth) error {
return err
}
return events.Dispatch(&TaskRelationDeletedEvent{
events.DispatchOnCommit(s, &TaskRelationDeletedEvent{
Task: &task,
Relation: rel,
Doer: doer,
})
return nil
}