mirror of
https://github.com/imgfloat/server.git
synced 2026-02-05 03:39:26 +00:00
Shrink patch size
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user