From c9fdf9f7c0b826b5565c422847eecb5d54ec83c3 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Wed, 29 Dec 2021 00:36:04 -0500 Subject: [PATCH] auto-bind send target functions in broker. ensures listeners exist when needed --- src/main/mesh.js | 4 ++-- src/moto/broker.js | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/mesh.js b/src/main/mesh.js index d9cf33de..cd6aed82 100644 --- a/src/main/mesh.js +++ b/src/main/mesh.js @@ -55,7 +55,7 @@ function init() { space.useDefaultKeys(true); // trigger space event binding - broker.publish('space.init', { space, platform }); + broker.send.space_init({ space, platform }); // start worker moto.client.start(`/code/mesh_work?${gapp.version}`); @@ -79,7 +79,7 @@ broker.subscribe('space.init', data => { platform.setColor(platcolor); load.File.load(evt.dataTransfer.files[0]) .then(data => { - broker.publish('space.load', data); + broker.send.space_load(data); }) .catch(error => { dbug.error(error); diff --git a/src/moto/broker.js b/src/moto/broker.js index 52831f33..044f0e60 100644 --- a/src/moto/broker.js +++ b/src/moto/broker.js @@ -10,6 +10,7 @@ class Broker { constructor() { this.topics = {}; this.used = {}; + this.send = {}; } topics() { @@ -29,6 +30,9 @@ class Broker { channel = topics[topic] = []; } if (channel.indexOf(listener) < 0) { + let send = this.send; + let name = topic.replace(/\./g, '_'); + send[name] = send[name] = this.bind(topic); channel.push(listener); this.publish(".topic.add", topic); }