From e6af84df3951f55e679dafb834073f5f18c3ce54 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 26 Oct 2021 22:07:35 +0200 Subject: [PATCH] fix updating "lastAcceptedEntityId" - can't take last entityChange since they might be reordered based on update order, closes #2277 --- src/public/app/services/ws.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/public/app/services/ws.js b/src/public/app/services/ws.js index a9c841309..9db9cfdf2 100644 --- a/src/public/app/services/ws.js +++ b/src/public/app/services/ws.js @@ -68,12 +68,13 @@ async function executeFrontendUpdate(entityChanges) { frontendUpdateDataQueue.push(...entityChanges); // we set lastAcceptedEntityChangeId even before frontend update processing and send ping so that backend can start sending more updates - lastAcceptedEntityChangeId = Math.max(lastAcceptedEntityChangeId, entityChanges[entityChanges.length - 1].id); - const lastSyncEntityChange = entityChanges.slice().reverse().find(ec => ec.isSynced); + for (const entityChange of entityChanges) { + lastAcceptedEntityChangeId = Math.max(lastAcceptedEntityChangeId, entityChange.id); - if (lastSyncEntityChange) { - lastAcceptedEntityChangeSyncId = Math.max(lastAcceptedEntityChangeSyncId, lastSyncEntityChange.id); + if (entityChange.isSynced) { + lastAcceptedEntityChangeSyncId = Math.max(lastAcceptedEntityChangeSyncId, entityChange.id); + } } sendPing();