fixes in event propagation

This commit is contained in:
zadam 2022-07-10 15:01:05 +02:00
parent 1ad406ced5
commit 89a4165c77
2 changed files with 15 additions and 15 deletions

View File

@ -51,7 +51,7 @@ export default class Component {
// don't create promises if not needed (optimization) // don't create promises if not needed (optimization)
return callMethodPromise && childrenPromise return callMethodPromise && childrenPromise
? Promise.all([callMethodPromise, childrenPromise]) ? Promise.all([callMethodPromise, childrenPromise])
: null; : (callMethodPromise || childrenPromise);
} }
/** @returns {Promise} */ /** @returns {Promise} */
@ -64,11 +64,15 @@ export default class Component {
const promises = []; const promises = [];
for (const child of this.children) { for (const child of this.children) {
promises.push(child.handleEvent(name, data)); const ret = child.handleEvent(name, data);
if (ret) {
promises.push(ret);
}
} }
// don't create promises if not needed (optimization) // don't create promises if not needed (optimization)
return promises.find(p => p) ? Promise.all(promises) : null; return promises.length > 0 ? Promise.all(promises) : null;
} }
/** @returns {Promise} */ /** @returns {Promise} */
@ -83,9 +87,9 @@ export default class Component {
} }
} }
async callMethod(fun, data) { callMethod(fun, data) {
if (typeof fun !== 'function') { if (typeof fun !== 'function') {
return false; return;
} }
const startTime = Date.now(); const startTime = Date.now();
@ -98,14 +102,10 @@ export default class Component {
console.log(`Call to ${fun.name} in ${this.componentId} took ${took}ms`); console.log(`Call to ${fun.name} in ${this.componentId} took ${took}ms`);
} }
if (glob.isDev) { if (glob.isDev && promise) {
await utils.timeLimit(promise, 20000, `Time limit failed on ${this.constructor.name} with ${fun.name}`); return utils.timeLimit(promise, 20000, `Time limit failed on ${this.constructor.name} with ${fun.name}`);
}
else {
// cheaper and in non-dev the extra reporting is lost anyway through reload
await promise;
} }
return true; return promise;
} }
} }

View File

@ -28,7 +28,7 @@ export default class NoteContextAwareWidget extends BasicWidget {
} }
get notePath() { get notePath() {
return this.noteContext.notePath && this.noteContext; return this.noteContext?.notePath;
} }
get hoistedNoteId() { get hoistedNoteId() {
@ -64,7 +64,7 @@ export default class NoteContextAwareWidget extends BasicWidget {
async refreshWithNote(note) {} async refreshWithNote(note) {}
async noteSwitchedEvent({noteContext, notePath}) { async noteSwitchedEvent({noteContext, notePath}) {
// if notePath does not match then the noteContext has been switched to another note in the mean time // if notePath does not match then the noteContext has been switched to another note in the meantime
if (noteContext.notePath === notePath) { if (noteContext.notePath === notePath) {
await this.noteSwitched(); await this.noteSwitched();
} }
@ -88,7 +88,7 @@ export default class NoteContextAwareWidget extends BasicWidget {
async noteSwitchedAndActivatedEvent({noteContext, notePath}) { async noteSwitchedAndActivatedEvent({noteContext, notePath}) {
this.noteContext = noteContext; this.noteContext = noteContext;
// if notePath does not match then the noteContext has been switched to another note in the mean time // if notePath does not match then the noteContext has been switched to another note in the meantime
if (this.notePath === notePath) { if (this.notePath === notePath) {
await this.refresh(); await this.refresh();
} }