From 87c6673375cf02100a2651946c847083068b3cb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Kr=C3=BChlmann?= Date: Mon, 29 Dec 2025 13:57:40 +0100 Subject: [PATCH] Shrink patch size --- .../java/dev/kruhlmann/imgfloat/model/AssetEvent.java | 3 +++ .../java/dev/kruhlmann/imgfloat/model/AssetPatch.java | 3 +++ .../imgfloat/service/ChannelDirectoryService.java | 11 +++++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/kruhlmann/imgfloat/model/AssetEvent.java b/src/main/java/dev/kruhlmann/imgfloat/model/AssetEvent.java index fbbbeab..a91b29f 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/model/AssetEvent.java +++ b/src/main/java/dev/kruhlmann/imgfloat/model/AssetEvent.java @@ -1,5 +1,8 @@ package dev.kruhlmann.imgfloat.model; +import com.fasterxml.jackson.annotation.JsonInclude; + +@JsonInclude(JsonInclude.Include.NON_NULL) public class AssetEvent { public enum Type { CREATED, diff --git a/src/main/java/dev/kruhlmann/imgfloat/model/AssetPatch.java b/src/main/java/dev/kruhlmann/imgfloat/model/AssetPatch.java index 7b41d08..f97f04a 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/model/AssetPatch.java +++ b/src/main/java/dev/kruhlmann/imgfloat/model/AssetPatch.java @@ -1,9 +1,12 @@ package dev.kruhlmann.imgfloat.model; +import com.fasterxml.jackson.annotation.JsonInclude; + /** * Represents a partial update for an {@link Asset}. Only the fields that changed * for a given operation are populated to reduce payload sizes sent over WebSocket. */ +@JsonInclude(JsonInclude.Include.NON_NULL) public record AssetPatch( String id, Double x, diff --git a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java index 4a0aea2..d5f811f 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java +++ b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java @@ -290,11 +290,18 @@ public class ChannelDirectoryService { return assetRepository.findById(assetId) .filter(a -> normalized.equals(a.getBroadcaster())) .map(asset -> { - asset.setHidden(request.isHidden()); + boolean wasHidden = asset.isHidden(); + boolean hidden = request.isHidden(); + if (wasHidden == hidden) { + return AssetView.from(normalized, asset); + } + + asset.setHidden(hidden); assetRepository.save(asset); AssetView view = AssetView.from(normalized, asset); AssetPatch patch = AssetPatch.fromVisibility(asset); - messagingTemplate.convertAndSend(topicFor(broadcaster), AssetEvent.visibility(broadcaster, patch, view)); + AssetView payload = hidden ? null : view; + messagingTemplate.convertAndSend(topicFor(broadcaster), AssetEvent.visibility(broadcaster, patch, payload)); return view; }); }