UNPKG

node-red-contrib-home-assistant-websocket

Version:
40 lines (39 loc) 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.startListeners = startListeners; const Events_1 = require("../../common/events/Events"); const const_1 = require("../../const"); const Websocket_1 = require("../../homeAssistant/Websocket"); const _1 = require("."); function startListeners(clientEvents, controller, homeAssistant, node) { const config = node.config; clientEvents.addListener(`${const_1.HA_EVENTS}:${config.eventType || 'all'}`, controller.onHaEventsAll.bind(controller)); if (config.eventType === '' || config.eventType === _1.HA_CLIENT) { const list = [ [Websocket_1.ClientEvent.StatesLoaded, controller.onClientStatesLoaded], [Websocket_1.ClientEvent.ServicesLoaded, controller.onClientServicesLoaded], [Websocket_1.ClientEvent.Running, controller.onHaEventsRunning], [Websocket_1.ClientEvent.Ready, controller.onHaEventsReady], ]; list.forEach(([event, callback]) => { clientEvents.addListener(event, callback.bind(controller)); }); } const updateEventList = () => { if (homeAssistant.isConnected) { homeAssistant.subscribeEvents(); } }; // Registering only needed event types if (homeAssistant) { homeAssistant.eventsList[node.id] = config.eventType || '__ALL__'; updateEventList(); } node.addListener(Events_1.NodeEvent.Close, (removed, done) => { if (removed) { delete homeAssistant.eventsList[node.id]; updateEventList(); } done(); }); }