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, Project: project,
Doer: doer, Doer: doer,
}) })
return nil
} }
// CreateNewProjectForUser creates a new inbox project for a user. To prevent import cycles, we can't do that // 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 return err
} }
err = events.Dispatch(&ProjectUpdatedEvent{ events.DispatchOnCommit(s, &ProjectUpdatedEvent{
Project: project, Project: project,
Doer: auth, Doer: auth,
}) })
if err != nil {
return err
}
l, err := GetProjectSimpleByID(s, project.ID) l, err := GetProjectSimpleByID(s, project.ID)
if err != nil { if err != nil {
@@ -1252,13 +1250,10 @@ func (p *Project) Delete(s *xorm.Session, a web.Auth) (err error) {
return return
} }
err = events.Dispatch(&ProjectDeletedEvent{ events.DispatchOnCommit(s, &ProjectDeletedEvent{
Project: fullProject, Project: fullProject,
Doer: a, Doer: a,
}) })
if err != nil {
return
}
childProjects := []*Project{} childProjects := []*Project{}
err = s.Where("parent_project_id = ?", fullProject.ID).Find(&childProjects) 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 return err
} }
err = events.Dispatch(&ProjectSharedWithTeamEvent{ events.DispatchOnCommit(s, &ProjectSharedWithTeamEvent{
Project: l, Project: l,
Team: team, Team: team,
Doer: a, Doer: a,
}) })
if err != nil {
return err
}
err = updateProjectLastUpdated(s, l) err = updateProjectLastUpdated(s, l)
return return

View File

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