UNPKG

node-red-contrib-smartnora

Version:

Google Smart Home integration via Smart Nora https://smart-nora.eu/

36 lines (35 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FirebaseSceneDevice = void 0; const database_1 = require("firebase/database"); const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); const __1 = require(".."); const device_1 = require("./device"); class FirebaseSceneDevice extends device_1.FirebaseDevice { constructor(cloudId, sync, device, logger, disableValidationErrors) { super(cloudId, sync, device, logger, disableValidationErrors); this.pendingScene = (0, database_1.child)(this.noraSpecific, 'pendingScene'); this.activateSceneLocal$ = new rxjs_1.Subject(); this.activateScene$ = (0, rxjs_1.merge)(new rxjs_1.Observable(observer => (0, database_1.onValue)(this.pendingScene, s => { const value = s.val(); if (value) { observer.next(value); } })).pipe((0, operators_1.switchMap)(async (v) => { await (0, database_1.remove)(this.pendingScene); return v; })), this.activateSceneLocal$).pipe((0, __1.singleton)()); } async executeCommand(command, params) { var _a; if (command === 'action.devices.commands.ActivateScene') { this.activateSceneLocal$.next({ deactivate: (_a = params === null || params === void 0 ? void 0 : params.deactivate) !== null && _a !== void 0 ? _a : false }); return this.device.state; } else { return await super.executeCommand(command, params); } } } exports.FirebaseSceneDevice = FirebaseSceneDevice;