Merge branch 'module/messagebus' into dev
All checks were successful
Build Docker Image / Docker-Build (push) Successful in 2m36s
Build Docker Image / Clean-Registry (push) Successful in 0s

This commit is contained in:
2026-01-19 21:13:09 +01:00
38 changed files with 921 additions and 172 deletions

View File

@@ -49,11 +49,12 @@ public class ProjectModule extends BaseHandler implements ProjectService {
ModuleRegistry.add(this);
}
private void addMember(Project project, long userId) {
private UmbrellaUser addMember(Project project, long userId) {
var user = userService().loadUser(userId);
var member = new Member(user,READ_ONLY);
project.members().put(userId,member);
project.dirty(MEMBERS);
return user;
}
@Override
@@ -213,15 +214,16 @@ public class ProjectModule extends BaseHandler implements ProjectService {
private boolean patchProject(HttpExchange ex, long projectId, UmbrellaUser user) throws IOException, UmbrellaException {
var project = loadMembers(projectDb.load(projectId));
var old = project.toMap();
if (!project.hasMember(user)) throw notAmember(t(PROJECT_WITH_ID,ID,project.name()));
var old = project.toMap();
var json = json(ex);
UmbrellaUser newMember = null;
if (json.has(DROP_MEMBER) && json.get(DROP_MEMBER) instanceof Number id) dropMember(project,id.longValue());
if (json.has(MEMBERS) && json.get(MEMBERS) instanceof JSONObject memberJson) patchMembers(project,memberJson);
if (json.has(NEW_MEMBER) && json.get(NEW_MEMBER) instanceof Number num) addMember(project,num.longValue());
if (json.has(NEW_MEMBER) && json.get(NEW_MEMBER) instanceof Number num) newMember = addMember(project,num.longValue());
project = projectDb.save(project.patch(json), user);
messageBus().dispatch(new ProjectEvent(user,project, old));
messageBus().dispatch(newMember != null ? new ProjectEvent(user,project,newMember) : new ProjectEvent(user,project, old));
return sendContent(ex,project.toMap());
}

View File

@@ -7,6 +7,7 @@ import static de.srsoftware.tools.jdbc.Query.SelectQuery.ALL;
import static de.srsoftware.umbrella.core.Errors.*;
import static de.srsoftware.umbrella.core.constants.Constants.TABLE_SETTINGS;
import static de.srsoftware.umbrella.core.constants.Field.*;
import static de.srsoftware.umbrella.core.constants.Field.PROJECT;
import static de.srsoftware.umbrella.core.constants.Field.TYPE;
import static de.srsoftware.umbrella.core.constants.Text.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;