fix(events): defer event dispatch for team operations

Convert events.Dispatch to events.DispatchOnCommit in team and team
member CRUD. Also removes premature s.Commit() from TeamMember.Delete
since the handler manages the transaction lifecycle.

Refs #2315
This commit is contained in:
kolaente 2026-03-02 09:15:56 +01:00
parent dd7f7de518
commit 8afbdf2deb
2 changed files with 8 additions and 9 deletions

View File

@ -70,11 +70,12 @@ func (tm *TeamMember) Create(s *xorm.Session, a web.Auth) (err error) {
}
doer, _ := user2.GetFromAuth(a)
return events.Dispatch(&TeamMemberAddedEvent{
events.DispatchOnCommit(s, &TeamMemberAddedEvent{
Team: team,
Member: member,
Doer: doer,
})
return nil
}
// Delete deletes a user from a team
@ -119,17 +120,13 @@ func (tm *TeamMember) Delete(s *xorm.Session, a web.Auth) (err error) {
return err
}
err = s.Commit()
if err != nil {
return err
}
doer, _ := user2.GetFromAuth(a)
return events.Dispatch(&TeamMemberRemovedEvent{
events.DispatchOnCommit(s, &TeamMemberRemovedEvent{
Team: t,
Member: user,
Doer: doer,
})
return nil
}
func (tm *TeamMember) MembershipExists(s *xorm.Session) (exists bool, err error) {

View File

@ -213,10 +213,11 @@ func (t *Team) CreateNewTeam(s *xorm.Session, a web.Auth, firstUserShouldBeAdmin
return err
}
return events.Dispatch(&TeamCreatedEvent{
events.DispatchOnCommit(s, &TeamCreatedEvent{
Team: t,
Doer: a,
})
return nil
}
// ReadOne implements the CRUD method to get one team
@ -352,10 +353,11 @@ func (t *Team) Delete(s *xorm.Session, a web.Auth) (err error) {
return
}
return events.Dispatch(&TeamDeletedEvent{
events.DispatchOnCommit(s, &TeamDeletedEvent{
Team: t,
Doer: a,
})
return nil
}
// Update is the handler to create a team