diff --git a/platypush/backend/http/webapp/src/Events.vue b/platypush/backend/http/webapp/src/Events.vue index aaddf8365..080ab9067 100644 --- a/platypush/backend/http/webapp/src/Events.vue +++ b/platypush/backend/http/webapp/src/Events.vue @@ -17,6 +17,7 @@ export default { data() { return { ws: null, + initialized: false, pending: false, opened: false, timeout: null, @@ -125,6 +126,7 @@ export default { this.ws.onopen = this.onOpen this.ws.onerror = this.onError this.ws.onclose = this.onClose + this.initialized = true }, subscribe(msg) { diff --git a/platypush/backend/http/webapp/src/components/VoiceAssistant.vue b/platypush/backend/http/webapp/src/components/VoiceAssistant.vue index ff07c2c58..c7ef81371 100644 --- a/platypush/backend/http/webapp/src/components/VoiceAssistant.vue +++ b/platypush/backend/http/webapp/src/components/VoiceAssistant.vue @@ -118,7 +118,7 @@ export default { }, mounted() { - setTimeout(this.registerHandlers, 10000) + this.registerHandlers() }, } diff --git a/platypush/backend/http/webapp/src/utils/Events.vue b/platypush/backend/http/webapp/src/utils/Events.vue index caaae33d0..3037605ee 100644 --- a/platypush/backend/http/webapp/src/utils/Events.vue +++ b/platypush/backend/http/webapp/src/utils/Events.vue @@ -3,11 +3,32 @@ import { bus } from "@/bus"; export default { name: "Events", + computed: { + _eventsReady() { + return this.$root.$refs.events?.initialized + }, + }, + methods: { subscribe(handler, ...events) { - bus.emit('subscribe', { - events: events, - handler: handler, + const subFunc = () => { + bus.emit('subscribe', { + events: events, + handler: handler, + }) + } + + if (this._eventsReady) { + subFunc() + return + } + + const self = this + const unwatch = this.$watch( () => self._eventsReady, (newVal) => { + if (newVal) { + subFunc() + unwatch() + } }) }, }