Improve media packets

This commit is contained in:
2025-12-10 16:30:42 +01:00
parent 772f11dace
commit 519ebbaaff
5 changed files with 198 additions and 35 deletions

View File

@@ -314,15 +314,18 @@ function updateRenderState(asset) {
}
function handleEvent(event) {
const assetId = event.assetId || event?.patch?.id || event?.payload?.id;
if (event.type === 'DELETED') {
assets.delete(event.assetId);
assets.delete(assetId);
zOrderDirty = true;
clearMedia(event.assetId);
renderStates.delete(event.assetId);
loopPlaybackState.delete(event.assetId);
if (selectedAssetId === event.assetId) {
clearMedia(assetId);
renderStates.delete(assetId);
loopPlaybackState.delete(assetId);
if (selectedAssetId === assetId) {
selectedAssetId = null;
}
} else if (event.patch) {
applyPatch(assetId, event.patch);
} else if (event.payload) {
storeAsset(event.payload);
if (!event.payload.hidden) {
@@ -338,6 +341,23 @@ function handleEvent(event) {
drawAndList();
}
function applyPatch(assetId, patch) {
if (!assetId || !patch) {
return;
}
const existing = assets.get(assetId);
if (!existing) {
return;
}
const merged = { ...existing, ...patch };
if (patch.hidden) {
clearMedia(assetId);
loopPlaybackState.delete(assetId);
}
storeAsset(merged);
updateRenderState(merged);
}
function drawAndList() {
requestDraw();
renderAssetList();