added isBeingDeleted to be able to recognize that note is being deleted while still leaving it accessible

This commit is contained in:
zadam 2022-12-06 16:11:43 +01:00
parent aec2c2d5cd
commit d64b575e60
3 changed files with 11 additions and 5 deletions

View file

@ -113,7 +113,13 @@ class Attribute extends AbstractEntity {
* @returns {Note|null}
*/
getNote() {
return this.becca.getNote(this.noteId);
const note = this.becca.getNote(this.noteId);
if (!note) {
throw new Error(`Note '${this.noteId}' of attribute '${this.attributeId}', type '${this.type}', name '${this.name}' does not exist.`);
}
return note;
}
/**

View file

@ -187,9 +187,7 @@ class Branch extends AbstractEntity {
log.info("Deleting note " + note.noteId);
// marking note as deleted as a signal to event handlers that the note is being deleted
// (isDeleted is being checked against becca)
delete this.becca.notes[note.noteId];
this.becca.notes[note.noteId].isBeingDeleted = true;
for (const attribute of note.getOwnedAttributes()) {
attribute.markAsDeleted(deleteId);

View file

@ -72,6 +72,8 @@ class Note extends AbstractEntity {
this.utcDateCreated = utcDateCreated || dateUtils.utcNowDateTime();
/** @type {string} */
this.utcDateModified = utcDateModified;
/** @type {boolean} - set during the deletion operation, before it is completed (removed from becca completely) */
this.isBeingDeleted = false;
// ------ Derived attributes ------
@ -1327,7 +1329,7 @@ class Note extends AbstractEntity {
}
get isDeleted() {
return !(this.noteId in this.becca.notes);
return !(this.noteId in this.becca.notes) || this.isBeingDeleted;
}
/**