preparing display of selcted message

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-01-17 21:03:50 +01:00
parent b176cd1f6b
commit 8422dce031
4 changed files with 74 additions and 5 deletions

View File

@@ -115,7 +115,14 @@ public class MessageSystem extends BaseHandler implements PostBox, EventListener
return switch (head){
case null -> listMessages(ex,user.get());
case SETTINGS -> getSettings(ex,user.get());
default -> super.doGet(path,ex);
default -> {
try {
yield getMessage(ex,user.get(),Integer.parseInt(head));
} catch (NumberFormatException ignored) {
}
yield super.doGet(path, ex);
}
};
} catch (NumberFormatException e){
return sendContent(ex,HTTP_BAD_REQUEST,"Invalid project id");
@@ -124,6 +131,25 @@ public class MessageSystem extends BaseHandler implements PostBox, EventListener
}
}
private boolean getMessage(HttpExchange ex, UmbrellaUser user, int hash) throws IOException {
var envelope = queue.stream()
.filter(msg -> msg.isFor(user))
.filter(msg -> msg.hashCode() == hash)
.findFirst();
if (envelope.isPresent()) {
var message = envelope.get().message();
var sender = message.sender().name();
var subject = message.subject().translate(user.language());
var body = message.body().translate(user.language());
return sendContent(ex,Map.of(
SENDER,sender,
SUBJECT,subject,
BODY,body
));
}
return notFound(ex);
}
@Override
public boolean doPatch(Path path, HttpExchange ex) throws IOException {
addCors(ex);
@@ -170,7 +196,8 @@ public class MessageSystem extends BaseHandler implements PostBox, EventListener
var sender = envelope.message().sender().name();
var subject = envelope.message().subject().translate(lang);
var time = envelope.time().format(TIME_FORMATTER);
return new JSONObject(Map.of(SENDER,sender,SUBJECT,subject,TIMESTAMP,time));
var hash = envelope.hashCode();
return new JSONObject(Map.of(SENDER,sender,SUBJECT,subject,TIMESTAMP,time,HASH,hash));
}
@Override