Shrink patch size

This commit is contained in:
2025-12-29 13:57:40 +01:00
parent 45da9b5bd3
commit 87c6673375
3 changed files with 15 additions and 2 deletions

View File

@@ -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,

View File

@@ -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,

View File

@@ -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;
});
}