From 51024a595dfb47e753018a62c6c1a85de2526638 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 31 Jan 2021 22:23:58 +0100 Subject: [PATCH] Add team member added event --- pkg/models/events.go | 14 ++++++++++++++ pkg/models/team_members.go | 19 ++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/pkg/models/events.go b/pkg/models/events.go index fff1662fb..fb225b837 100644 --- a/pkg/models/events.go +++ b/pkg/models/events.go @@ -149,3 +149,17 @@ type NamespaceSharedWithTeamEvent struct { func (n *NamespaceSharedWithTeamEvent) TopicName() string { return "namespace.shared.team" } + +///////////////// +// Team Events // +///////////////// + +type TeamMemberAddedEvent struct { + Team *Team + Member *user.User + Doer *user.User +} + +func (t *TeamMemberAddedEvent) TopicName() string { + return "team.member.added" +} diff --git a/pkg/models/team_members.go b/pkg/models/team_members.go index 665454d90..5f52a0343 100644 --- a/pkg/models/team_members.go +++ b/pkg/models/team_members.go @@ -17,6 +17,7 @@ package models import ( + "code.vikunja.io/api/pkg/events" user2 "code.vikunja.io/api/pkg/user" "code.vikunja.io/web" "xorm.io/xorm" @@ -39,9 +40,9 @@ import ( func (tm *TeamMember) Create(s *xorm.Session, a web.Auth) (err error) { // Check if the team extst - _, err = GetTeamByID(s, tm.TeamID) + team, err := GetTeamByID(s, tm.TeamID) if err != nil { - return + return err } // Check if the user exists @@ -64,7 +65,19 @@ func (tm *TeamMember) Create(s *xorm.Session, a web.Auth) (err error) { // Insert the user _, err = s.Insert(tm) - return + if err != nil { + return err + } + + doer, err := user2.GetFromAuth(a) + if err != nil { + return err + } + return events.Publish(&TeamMemberAddedEvent{ + Team: team, + Member: user, + Doer: doer, + }) } // Delete deletes a user from a team