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; package dev.kruhlmann.imgfloat.model;
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AssetEvent { public class AssetEvent {
public enum Type { public enum Type {
CREATED, CREATED,

View File

@@ -1,9 +1,12 @@
package dev.kruhlmann.imgfloat.model; package dev.kruhlmann.imgfloat.model;
import com.fasterxml.jackson.annotation.JsonInclude;
/** /**
* Represents a partial update for an {@link Asset}. Only the fields that changed * 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. * for a given operation are populated to reduce payload sizes sent over WebSocket.
*/ */
@JsonInclude(JsonInclude.Include.NON_NULL)
public record AssetPatch( public record AssetPatch(
String id, String id,
Double x, Double x,

View File

@@ -290,11 +290,18 @@ public class ChannelDirectoryService {
return assetRepository.findById(assetId) return assetRepository.findById(assetId)
.filter(a -> normalized.equals(a.getBroadcaster())) .filter(a -> normalized.equals(a.getBroadcaster()))
.map(asset -> { .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); assetRepository.save(asset);
AssetView view = AssetView.from(normalized, asset); AssetView view = AssetView.from(normalized, asset);
AssetPatch patch = AssetPatch.fromVisibility(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; return view;
}); });
} }