diff --git a/src/Logic/Tags/TagUtils.ts b/src/Logic/Tags/TagUtils.ts index 91ce6c5e1d..f319f13162 100644 --- a/src/Logic/Tags/TagUtils.ts +++ b/src/Logic/Tags/TagUtils.ts @@ -98,7 +98,7 @@ export class TagUtils { "Invalid type to flatten the multiAnswer: key is a regex too", tagsFilter ) - throw "Invalid type to FlattenMultiAnswer" + throw "Invalid type to FlattenMultiAnswer: key is a regex too" } const keystr = key if (keyValues[keystr] === undefined) { @@ -109,7 +109,10 @@ export class TagUtils { } console.error("Invalid type to flatten the multiAnswer", tagsFilter) - throw "Invalid type to FlattenMultiAnswer" + throw ( + "Invalid type to FlattenMultiAnswer, not one of RegexTag, Tag or And: " + + tagsFilter.asHumanString(false, false, {}) + ) } return keyValues } diff --git a/src/Logic/UIEventSource.ts b/src/Logic/UIEventSource.ts index 39db7dd4e5..b726465391 100644 --- a/src/Logic/UIEventSource.ts +++ b/src/Logic/UIEventSource.ts @@ -357,14 +357,18 @@ class ListenerTracker { let toDelete = undefined let startTime = new Date().getTime() / 1000 for (const callback of this._callbacks) { - if (callback(data) === true) { - // This callback wants to be deleted - // Note: it has to return precisely true in order to avoid accidental deletions - if (toDelete === undefined) { - toDelete = [callback] - } else { - toDelete.push(callback) + try { + if (callback(data) === true) { + // This callback wants to be deleted + // Note: it has to return precisely true in order to avoid accidental deletions + if (toDelete === undefined) { + toDelete = [callback] + } else { + toDelete.push(callback) + } } + } catch (e) { + console.error("Got an error while running a callback:", e) } } let endTime = new Date().getTime() / 1000 diff --git a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte index 216468f1b8..9e031f169b 100644 --- a/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte +++ b/src/UI/Popup/TagRendering/TagRenderingQuestion.svelte @@ -54,6 +54,7 @@ if ( confg.mappings?.length > 0 && + confg.multiAnswer && (checkedMappings === undefined || checkedMappings?.length < confg.mappings.length + (confg.freeform ? 1 : 0)) ) {