mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 13:39:01 +01:00 
			
		
		
		
	simplification of sync event API
This commit is contained in:
		
							parent
							
								
									81a54cd4a0
								
							
						
					
					
						commit
						25553c9e67
					
				@ -55,19 +55,23 @@ class AppContext {
 | 
			
		||||
        this.trigger('initialRenderComplete');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    trigger(name, data, sync = false) {
 | 
			
		||||
    async trigger(name, data) {
 | 
			
		||||
        this.eventReceived(name, data);
 | 
			
		||||
 | 
			
		||||
        const promises = [];
 | 
			
		||||
 | 
			
		||||
        for (const component of this.components) {
 | 
			
		||||
            component.eventReceived(name, data, sync);
 | 
			
		||||
            promises.push(component.eventReceived(name, data));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        await Promise.all(promises);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async eventReceived(name, data, sync) {
 | 
			
		||||
    async eventReceived(name, data) {
 | 
			
		||||
        const fun = this[name + 'Listener'];
 | 
			
		||||
 | 
			
		||||
        if (typeof fun === 'function') {
 | 
			
		||||
            await fun.call(this, data, sync);
 | 
			
		||||
            await fun.call(this, data);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,7 @@ class TabContext extends Component {
 | 
			
		||||
            return; // note is outside of hoisted subtree and user chose not to unhoist
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        await this.trigger('beforeNoteSwitch', {tabId: this.tabId}, true);
 | 
			
		||||
        await this.trigger('beforeNoteSwitch', {tabId: this.tabId});
 | 
			
		||||
 | 
			
		||||
        utils.closeActiveDialog();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -15,13 +15,11 @@ export default class Component {
 | 
			
		||||
        this.mutex = new Mutex();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async eventReceived(name, data, sync = false) {
 | 
			
		||||
    async eventReceived(name, data) {
 | 
			
		||||
        await this.initialized;
 | 
			
		||||
 | 
			
		||||
        const fun = this[name + 'Listener'];
 | 
			
		||||
 | 
			
		||||
        let propagateToChildren = true;
 | 
			
		||||
 | 
			
		||||
        const start = Date.now();
 | 
			
		||||
 | 
			
		||||
        if (typeof fun === 'function') {
 | 
			
		||||
@ -30,7 +28,7 @@ export default class Component {
 | 
			
		||||
            try {
 | 
			
		||||
                release = await this.mutex.acquire();
 | 
			
		||||
 | 
			
		||||
                propagateToChildren = await fun.call(this, data) !== false;
 | 
			
		||||
                await fun.call(this, data);
 | 
			
		||||
            }
 | 
			
		||||
            finally {
 | 
			
		||||
                if (release) {
 | 
			
		||||
@ -45,28 +43,20 @@ export default class Component {
 | 
			
		||||
            console.log(`Event ${name} in component ${this.componentId} took ${end-start}ms`);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (propagateToChildren) {
 | 
			
		||||
            const promise = this.triggerChildren(name, data, sync);
 | 
			
		||||
 | 
			
		||||
            if (sync) {
 | 
			
		||||
                await promise;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        await this.triggerChildren(name, data);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    trigger(name, data, sync = false) {
 | 
			
		||||
        this.appContext.trigger(name, data, sync);
 | 
			
		||||
    async trigger(name, data) {
 | 
			
		||||
        await this.appContext.trigger(name, data);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    async triggerChildren(name, data, sync = false) {
 | 
			
		||||
    async triggerChildren(name, data) {
 | 
			
		||||
        const promises = [];
 | 
			
		||||
 | 
			
		||||
        for (const child of this.children) {
 | 
			
		||||
            promises.push(child.eventReceived(name, data, sync));
 | 
			
		||||
            promises.push(child.eventReceived(name, data));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (sync) {
 | 
			
		||||
            await Promise.all(promises);
 | 
			
		||||
        }
 | 
			
		||||
        await Promise.all(promises);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -13,9 +13,9 @@ export default class SidePaneContainer extends FlexContainer {
 | 
			
		||||
        return super.isEnabled() && options.is(this.side + 'PaneVisible');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    eventReceived(name, data, sync = false) {
 | 
			
		||||
    eventReceived(name, data) {
 | 
			
		||||
        if (options.is(this.side + 'PaneVisible')) {
 | 
			
		||||
            super.eventReceived(name, data, sync);
 | 
			
		||||
            super.eventReceived(name, data);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -16,12 +16,12 @@ export default class TabCachingWidget extends TabAwareWidget {
 | 
			
		||||
        return this.$widget = $(`<div class="marker" style="display: none;">`);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    activeTabChangedListener(param) {
 | 
			
		||||
        super.activeTabChangedListener(param);
 | 
			
		||||
 | 
			
		||||
    async triggerChildren(name, data) {
 | 
			
		||||
        // stop propagation of the event to the children, individual tab widget should not know about tab switching
 | 
			
		||||
        // since they are per-tab
 | 
			
		||||
        return false;
 | 
			
		||||
        if (name !== 'activeTabChanged') {
 | 
			
		||||
            super.triggerChildren(name, data);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    refreshWithNote() {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user