diff --git a/pkg/models/events.go b/pkg/models/events.go index 8b37fa0de..40dc1bcb7 100644 --- a/pkg/models/events.go +++ b/pkg/models/events.go @@ -28,7 +28,7 @@ import ( // TaskCreatedEvent represents an event where a task has been created type TaskCreatedEvent struct { Task *Task - Doer web.Auth + Doer *user.User } // Name defines the name for TaskCreatedEvent @@ -39,7 +39,7 @@ func (t *TaskCreatedEvent) Name() string { // TaskUpdatedEvent represents an event where a task has been updated type TaskUpdatedEvent struct { Task *Task - Doer web.Auth + Doer *user.User } // Name defines the name for TaskUpdatedEvent @@ -50,7 +50,7 @@ func (t *TaskUpdatedEvent) Name() string { // TaskDeletedEvent represents a TaskDeletedEvent event type TaskDeletedEvent struct { Task *Task - Doer web.Auth + Doer *user.User } // Name defines the name for TaskDeletedEvent @@ -62,7 +62,7 @@ func (t *TaskDeletedEvent) Name() string { type TaskAssigneeCreatedEvent struct { Task *Task Assignee *user.User - Doer web.Auth + Doer *user.User } // Name defines the name for TaskAssigneeCreatedEvent @@ -74,7 +74,7 @@ func (t *TaskAssigneeCreatedEvent) Name() string { type TaskCommentCreatedEvent struct { Task *Task Comment *TaskComment - Doer web.Auth + Doer *user.User } // Name defines the name for TaskCommentCreatedEvent @@ -126,7 +126,7 @@ func (t *NamespaceDeletedEvent) Name() string { // ListCreatedEvent represents an event where a list has been created type ListCreatedEvent struct { List *List - Doer web.Auth + Doer *user.User } // Name defines the name for ListCreatedEvent diff --git a/pkg/models/list.go b/pkg/models/list.go index c07d09f41..97cf5d903 100644 --- a/pkg/models/list.go +++ b/pkg/models/list.go @@ -627,7 +627,7 @@ func (l *List) Create(s *xorm.Session, a web.Auth) (err error) { return events.Dispatch(&ListCreatedEvent{ List: l, - Doer: a, + Doer: doer, }) } diff --git a/pkg/models/listeners.go b/pkg/models/listeners.go index 97a301866..416ea4d49 100644 --- a/pkg/models/listeners.go +++ b/pkg/models/listeners.go @@ -25,7 +25,6 @@ import ( "code.vikunja.io/api/pkg/metrics" "code.vikunja.io/api/pkg/modules/keyvalue" "code.vikunja.io/api/pkg/notifications" - "code.vikunja.io/api/pkg/user" "github.com/ThreeDotsLabs/watermill/message" ) @@ -93,11 +92,6 @@ func (s *SendTaskCommentNotification) Handle(payload message.Payload) (err error return err } - doer, is := event.Doer.(*user.User) - if !is { - return - } - sess := db.NewSession() defer sess.Close() @@ -109,12 +103,12 @@ func (s *SendTaskCommentNotification) Handle(payload message.Payload) (err error log.Debugf("Sending task comment notifications to %d subscribers for task %d", len(subscribers), event.Task.ID) for _, subscriber := range subscribers { - if subscriber.UserID == doer.ID { + if subscriber.UserID == event.Doer.ID { continue } n := &TaskCommentNotification{ - Doer: doer, + Doer: event.Doer, Task: event.Task, Comment: event.Comment, } @@ -144,11 +138,6 @@ func (s *SendTaskAssignedNotification) Handle(payload message.Payload) (err erro return err } - doer, is := event.Doer.(*user.User) - if !is { - return - } - sess := db.NewSession() defer sess.Close() @@ -160,12 +149,12 @@ func (s *SendTaskAssignedNotification) Handle(payload message.Payload) (err erro log.Debugf("Sending task assigned notifications to %d subscribers for task %d", len(subscribers), event.Task.ID) for _, subscriber := range subscribers { - if subscriber.UserID == doer.ID { + if subscriber.UserID == event.Doer.ID { continue } n := &TaskAssignedNotification{ - Doer: doer, + Doer: event.Doer, Task: event.Task, Assignee: event.Assignee, } @@ -195,11 +184,6 @@ func (s *SendTaskDeletedNotification) Handle(payload message.Payload) (err error return err } - doer, is := event.Doer.(*user.User) - if !is { - return - } - sess := db.NewSession() defer sess.Close() @@ -211,12 +195,12 @@ func (s *SendTaskDeletedNotification) Handle(payload message.Payload) (err error log.Debugf("Sending task deleted notifications to %d subscribers for task %d", len(subscribers), event.Task.ID) for _, subscriber := range subscribers { - if subscriber.UserID == doer.ID { + if subscriber.UserID == event.Doer.ID { continue } n := &TaskDeletedNotification{ - Doer: doer, + Doer: event.Doer, Task: event.Task, } err = notifications.Notify(subscriber.User, n) @@ -270,11 +254,6 @@ func (s *SendListCreatedNotification) Handle(payload message.Payload) (err error return err } - doer, is := event.Doer.(*user.User) - if !is { - return - } - sess := db.NewSession() defer sess.Close() @@ -286,12 +265,12 @@ func (s *SendListCreatedNotification) Handle(payload message.Payload) (err error log.Debugf("Sending list created notifications to %d subscribers for list %d", len(subscribers), event.List.ID) for _, subscriber := range subscribers { - if subscriber.UserID == doer.ID { + if subscriber.UserID == event.Doer.ID { continue } n := &ListCreatedNotification{ - Doer: doer, + Doer: event.Doer, List: event.List, } err = notifications.Notify(subscriber.User, n) diff --git a/pkg/models/notifications.go b/pkg/models/notifications.go index 6186c6652..a84db9b0c 100644 --- a/pkg/models/notifications.go +++ b/pkg/models/notifications.go @@ -59,6 +59,7 @@ type TaskCommentNotification struct { func (n *TaskCommentNotification) ToMail() *notifications.Mail { mail := notifications.NewMail(). + From(n.Doer.GetName() + " via Vikunja <" + config.MailerFromEmail.GetString() + ">"). Subject("Re: " + n.Task.Title) lines := bufio.NewScanner(strings.NewReader(n.Comment.Comment)) diff --git a/pkg/models/task_assignees.go b/pkg/models/task_assignees.go index d15648322..5ef8363f0 100644 --- a/pkg/models/task_assignees.go +++ b/pkg/models/task_assignees.go @@ -225,10 +225,11 @@ func (t *Task) addNewAssigneeByID(s *xorm.Session, newAssigneeID int64, list *Li return err } + doer, _ := user.GetFromAuth(auth) err = events.Dispatch(&TaskAssigneeCreatedEvent{ Task: t, Assignee: newAssignee, - Doer: auth, + Doer: doer, }) if err != nil { return err diff --git a/pkg/models/task_comments.go b/pkg/models/task_comments.go index 9bad08c7c..1924712c4 100644 --- a/pkg/models/task_comments.go +++ b/pkg/models/task_comments.go @@ -73,10 +73,11 @@ func (tc *TaskComment) Create(s *xorm.Session, a web.Auth) (err error) { return } + doer, _ := user.GetFromAuth(a) err = events.Dispatch(&TaskCommentCreatedEvent{ Task: &task, Comment: tc, - Doer: a, + Doer: doer, }) if err != nil { return err diff --git a/pkg/models/tasks.go b/pkg/models/tasks.go index 930ccdbbe..8732dcebc 100644 --- a/pkg/models/tasks.go +++ b/pkg/models/tasks.go @@ -849,9 +849,10 @@ func createTask(s *xorm.Session, t *Task, a web.Auth, updateAssignees bool) (err t.setIdentifier(l) + doer, _ := user.GetFromAuth(a) err = events.Dispatch(&TaskCreatedEvent{ Task: t, - Doer: a, + Doer: doer, }) if err != nil { return err @@ -1057,9 +1058,10 @@ func (t *Task) Update(s *xorm.Session, a web.Auth) (err error) { } t.Updated = nt.Updated + doer, _ := user.GetFromAuth(a) err = events.Dispatch(&TaskUpdatedEvent{ Task: t, - Doer: a, + Doer: doer, }) if err != nil { return err @@ -1214,9 +1216,10 @@ func (t *Task) Delete(s *xorm.Session, a web.Auth) (err error) { return err } + doer, _ := user.GetFromAuth(a) err = events.Dispatch(&TaskDeletedEvent{ Task: t, - Doer: a, + Doer: doer, }) if err != nil { return