From c67644a2e32c519fbc9cfad7e003284df57c3bb5 Mon Sep 17 00:00:00 2001 From: zadam Date: Fri, 10 Feb 2023 09:16:32 +0100 Subject: [PATCH] fix filing entity changes for deleted notes --- src/becca/becca.js | 4 ++++ src/services/entity_changes.js | 32 +++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/becca/becca.js b/src/becca/becca.js index 9456c5623..28d64d216 100644 --- a/src/becca/becca.js +++ b/src/becca/becca.js @@ -152,6 +152,10 @@ class Becca { .replace('_', '') ); + if (!(camelCaseEntityName in this)) { + throw new Error(`Unknown entity name '${camelCaseEntityName}' (original argument '${entityName}')`); + } + return this[camelCaseEntityName][entityId]; } diff --git a/src/services/entity_changes.js b/src/services/entity_changes.js index 35831dc1c..ff1492201 100644 --- a/src/services/entity_changes.js +++ b/src/services/entity_changes.js @@ -100,16 +100,38 @@ function fillEntityChanges(entityName, entityPrimaryKey, condition = '') { if (existingRows === 0) { createdCount++; - const entity = becca.getEntity(entityName, entityId); + let hash; + let utcDateChanged; + let isSynced; + + if (entityName.endsWith("_contents")) { + // FIXME: hacky, not sure if it might cause some problems + hash = "fake value"; + utcDateChanged = dateUtils.utcNowDateTime(); + isSynced = true; // contents are always synced + } else { + const entity = becca.getEntity(entityName, entityId); + + if (entity) { + hash = entity?.generateHash() || "|deleted"; + utcDateChanged = entity?.getUtcDateChanged() || dateUtils.utcNowDateTime(); + isSynced = entityName !== 'options' || !!entity?.isSynced; + } else { + // entity might be null (not present in becca) when it's deleted + // FIXME: hacky, not sure if it might cause some problems + hash = "deleted"; + utcDateChanged = dateUtils.utcNowDateTime(); + isSynced = true; // deletable (the ones with isDeleted) entities are synced + } + } - // entity might be null (not present in becca) when it's deleted addEntityChange({ entityName, entityId, - hash: entity?.generateHash() || "|deleted", + hash: hash, isErased: false, - utcDateChanged: entity?.getUtcDateChanged() || dateUtils.utcNowDateTime(), - isSynced: entityName !== 'options' || !!entity?.isSynced + utcDateChanged: utcDateChanged, + isSynced: isSynced }); } }