From a665d193eb2558df043d6054d806d239f46d47f1 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 12 Oct 2020 22:30:30 +0200 Subject: [PATCH] same event handling note execute only once, closes #1278 --- src/services/handlers.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/services/handlers.js b/src/services/handlers.js index 5fad5bc03..035a027e1 100644 --- a/src/services/handlers.js +++ b/src/services/handlers.js @@ -6,17 +6,15 @@ const repository = require('./repository'); const Attribute = require('../entities/attribute'); function runAttachedRelations(note, relationName, originEntity) { - const runRelations = note.getRelations(relationName); + // same script note can get here with multiple ways, but execute only once + const notesToRun = new Set( + note.getRelations(relationName) + .map(relation => relation.getTargetNote()) + .filter(note => !!note) + ); - for (const relation of runRelations) { - const scriptNote = relation.getTargetNote(); - - if (scriptNote) { - scriptService.executeNoteNoException(scriptNote, { originEntity }); - } - else { - log.error(`Target note ${relation.value} of atttribute ${relation.attributeId} has not been found.`); - } + for (const noteToRun of notesToRun) { + scriptService.executeNoteNoException(noteToRun, { originEntity }); } }