diff --git a/src/main/java/dev/kruhlmann/imgfloat/model/db/imgfloat/VisualAsset.java b/src/main/java/dev/kruhlmann/imgfloat/model/db/imgfloat/VisualAsset.java index 39b088f..df6c2e0 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/model/db/imgfloat/VisualAsset.java +++ b/src/main/java/dev/kruhlmann/imgfloat/model/db/imgfloat/VisualAsset.java @@ -64,6 +64,29 @@ public class VisualAsset { } } + /** + * Returns a detached, unmanaged copy of this entity suitable for preview/simulation use. + * The copy shares the same field values but is not associated with any JPA persistence context. + */ + public VisualAsset shallowCopy() { + VisualAsset copy = new VisualAsset(); + copy.id = this.id; + copy.name = this.name; + copy.preview = this.preview; + copy.x = this.x; + copy.y = this.y; + copy.width = this.width; + copy.height = this.height; + copy.rotation = this.rotation; + copy.speed = this.speed; + copy.muted = this.muted; + copy.mediaType = this.mediaType; + copy.originalMediaType = this.originalMediaType; + copy.audioVolume = this.audioVolume; + copy.hidden = this.hidden; + return copy; + } + public String getId() { return id; } diff --git a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java index a6d2394..3e3ca8a 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java +++ b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java @@ -839,17 +839,7 @@ public class ChannelDirectoryService { visual.getAudioVolume() ); - VisualAsset previewState = new VisualAsset(); - previewState.setId(visual.getId()); - previewState.setName(visual.getName()); - previewState.setX(visual.getX()); - previewState.setY(visual.getY()); - previewState.setWidth(visual.getWidth()); - previewState.setHeight(visual.getHeight()); - previewState.setRotation(visual.getRotation()); - previewState.setSpeed(visual.getSpeed()); - previewState.setMuted(visual.isMuted()); - previewState.setAudioVolume(visual.getAudioVolume()); + VisualAsset previewState = visual.shallowCopy(); if (previewRequest.getX() != null) { previewState.setX(previewRequest.getX());