From a888f9aa04e3f1b438acf55609907c56e17c1511 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 24 Jan 2023 09:35:00 +0100 Subject: [PATCH] recalculate maxEntityChangeId after rollbacked transaction --- src/public/app/widgets/dialogs/recent_changes.js | 6 +++--- src/services/entity_changes.js | 7 ++++++- src/services/sql.js | 3 +++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/public/app/widgets/dialogs/recent_changes.js b/src/public/app/widgets/dialogs/recent_changes.js index 4a7158180..75b477276 100644 --- a/src/public/app/widgets/dialogs/recent_changes.js +++ b/src/public/app/widgets/dialogs/recent_changes.js @@ -95,9 +95,9 @@ export default class RecentChangesDialog extends BasicWidget { this.$widget.modal('hide'); - setTimeout(() => { - appContext.tabManager.getActiveContext().setNote(change.noteId); - }, 1000); + await ws.waitForMaxKnownEntityChangeId(); + + appContext.tabManager.getActiveContext().setNote(change.noteId); } }); diff --git a/src/services/entity_changes.js b/src/services/entity_changes.js index 0178e938d..91a51ca42 100644 --- a/src/services/entity_changes.js +++ b/src/services/entity_changes.js @@ -136,6 +136,10 @@ function fillAllEntityChanges() { }); } +function recalculateMaxEntityChangeId() { + maxEntityChangeId = sql.getValue("SELECT COALESCE(MAX(id), 0) FROM entity_changes"); +} + module.exports = { addNoteReorderingEntityChange, moveEntityChangeToTop, @@ -143,5 +147,6 @@ module.exports = { addEntityChangeWithInstanceId, fillAllEntityChanges, addEntityChangesForSector, - getMaxEntityChangeId: () => maxEntityChangeId + getMaxEntityChangeId: () => maxEntityChangeId, + recalculateMaxEntityChangeId }; diff --git a/src/services/sql.js b/src/services/sql.js index e440ff6e7..71af2394f 100644 --- a/src/services/sql.js +++ b/src/services/sql.js @@ -256,6 +256,9 @@ function transactional(func) { require('../becca/becca_loader').load(); } + // the maxEntityChangeId has been incremented during failed transaction, need to recalculate + require('./entity_changes').recalculateMaxEntityChangeId(); + throw e; } }