diff --git a/pkg/models/events.go b/pkg/models/events.go index c18f4c4b0..6c0605035 100644 --- a/pkg/models/events.go +++ b/pkg/models/events.go @@ -59,3 +59,17 @@ func (t *TaskAssigneeCreatedEvent) TopicName() string { func (t *TaskAssigneeCreatedEvent) Message() interface{} { return t } + +type TaskCommentCreatedEvent struct { + Task *Task + Comment *TaskComment + Doer *user.User +} + +func (t *TaskCommentCreatedEvent) TopicName() string { + return "task.comment.created" +} + +func (t *TaskCommentCreatedEvent) Message() interface{} { + return t +} diff --git a/pkg/models/task_comments.go b/pkg/models/task_comments.go index f1c4486ee..38babdb7c 100644 --- a/pkg/models/task_comments.go +++ b/pkg/models/task_comments.go @@ -17,6 +17,7 @@ package models import ( + "code.vikunja.io/api/pkg/events" "time" "xorm.io/xorm" @@ -60,7 +61,7 @@ func (tc *TaskComment) TableName() string { // @Router /tasks/{taskID}/comments [put] func (tc *TaskComment) Create(s *xorm.Session, a web.Auth) (err error) { // Check if the task exists - _, err = GetTaskSimple(s, &Task{ID: tc.TaskID}) + task, err := GetTaskSimple(s, &Task{ID: tc.TaskID}) if err != nil { return err } @@ -70,6 +71,20 @@ func (tc *TaskComment) Create(s *xorm.Session, a web.Auth) (err error) { if err != nil { return } + + doer, err := user.GetFromAuth(a) + if err != nil { + return err + } + err = events.Publish(&TaskCommentCreatedEvent{ + Task: &task, + Comment: tc, + Doer: doer, + }) + if err != nil { + return err + } + tc.Author, err = user.GetUserByID(s, a.GetID()) return }