Skip to content

Commit

Permalink
♻️ refactor UI creation for better maintainability
Browse files Browse the repository at this point in the history
  • Loading branch information
McPringle committed Mar 31, 2024
1 parent 47e7f83 commit 0fb93be
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions src/main/java/swiss/fihlon/apus/ui/view/MessageView.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,31 @@ public final class MessageView extends Div {

public MessageView(@NotNull final Message message) {
addClassName("message-view");
add(createTextComponent(message));
add(createImageComponents(message));
add(createDateTimeComponent(message));
}

@NotNull
private Component createTextComponent(@NotNull final Message message) {
final String messageText = Jsoup.parse(message.html()).text();
add(new Html(String.format("<div>%s</div>",
return new Html(String.format("<div>%s</div>",
messageText.length() > MAX_LENGTH ? truncateMessageText(messageText) : message.html()
)));
for (final String image : message.images()) {
add(new Image(image, image));
}
add(createDateTimeComponent(message));
));
}

@NotNull
private String truncateMessageText(@NotNull final String messageText) {
return "<p>" + messageText.substring(0, MAX_LENGTH) + TRUNC_INDICATOR + "</p>";
}

@NotNull
private Component[] createImageComponents(@NotNull final Message message) {
return message.images().stream()
.map(image -> new Image(image, image))
.toArray(Image[]::new);
}

@NotNull
private Component createDateTimeComponent(@NotNull final Message message) {
final var dateTimeComponent = new Div();
Expand Down

0 comments on commit 0fb93be

Please sign in to comment.