fix(events): defer event dispatch for project operations

Convert events.Dispatch to events.DispatchOnCommit in project CRUD,
project-user sharing, and project-team sharing.

Refs #2315
This commit is contained in:
kolaente
2026-03-02 09:14:49 +01:00
parent fe459c9297
commit dd7f7de518
3 changed files with 6 additions and 17 deletions

View File

@@ -918,10 +918,11 @@ func CreateProject(s *xorm.Session, project *Project, auth web.Auth, createBackl
}
}
return events.Dispatch(&ProjectCreatedEvent{
events.DispatchOnCommit(s, &ProjectCreatedEvent{
Project: project,
Doer: doer,
})
return nil
}
// CreateNewProjectForUser creates a new inbox project for a user. To prevent import cycles, we can't do that
@@ -1018,13 +1019,10 @@ func UpdateProject(s *xorm.Session, project *Project, auth web.Auth, updateProje
return err
}
err = events.Dispatch(&ProjectUpdatedEvent{
events.DispatchOnCommit(s, &ProjectUpdatedEvent{
Project: project,
Doer: auth,
})
if err != nil {
return err
}
l, err := GetProjectSimpleByID(s, project.ID)
if err != nil {
@@ -1252,13 +1250,10 @@ func (p *Project) Delete(s *xorm.Session, a web.Auth) (err error) {
return
}
err = events.Dispatch(&ProjectDeletedEvent{
events.DispatchOnCommit(s, &ProjectDeletedEvent{
Project: fullProject,
Doer: a,
})
if err != nil {
return
}
childProjects := []*Project{}
err = s.Where("parent_project_id = ?", fullProject.ID).Find(&childProjects)

View File

@@ -109,14 +109,11 @@ func (tl *TeamProject) Create(s *xorm.Session, a web.Auth) (err error) {
return err
}
err = events.Dispatch(&ProjectSharedWithTeamEvent{
events.DispatchOnCommit(s, &ProjectSharedWithTeamEvent{
Project: l,
Team: team,
Doer: a,
})
if err != nil {
return err
}
err = updateProjectLastUpdated(s, l)
return

View File

@@ -115,14 +115,11 @@ func (lu *ProjectUser) Create(s *xorm.Session, a web.Auth) (err error) {
return err
}
err = events.Dispatch(&ProjectSharedWithUserEvent{
events.DispatchOnCommit(s, &ProjectSharedWithUserEvent{
Project: l,
User: u,
Doer: a,
})
if err != nil {
return err
}
err = updateProjectLastUpdated(s, l)
return