mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 20:16:35 +00:00
Renames:
- bf-config → bf-server-config (config node clarity)
- bf-event-in → bf-kiosk-camera-event (specific camera trigger)
New trigger nodes (input-only, under "BetterFrame Triggers"):
- bf-trigger-display-power, bf-trigger-layout-changed,
bf-trigger-kiosk-changed, bf-trigger-camera-changed
New flow nodes:
- bf-config-get: query state by type (displays/kiosks/cameras/layouts/
entities, or by-id)
- bf-config-set: mutate via typed setters (default-layout, enabled,
priority, name)
Server-side event emission:
- shared/strip-secrets.ts: recursive password scrub
- New JSON admin endpoints: GET/POST /api/admin/{displays,kiosks,
layouts,entities}[/:id]
- Coordinator-ws fires kiosk.changed on connect/disconnect/heartbeat
- Layout/power/camera routes call nodered.forward() on state change
23 lines
862 B
JavaScript
23 lines
862 B
JavaScript
/**
|
|
* bf-server-config — shared config node holding BetterFrame server URL + admin
|
|
* API key. Every other bf-* node references one of these in its editor UI via
|
|
* the `config` field. The API key is stored as credentials so Node-RED encrypts
|
|
* it at rest.
|
|
*
|
|
* Previously named `bf-config`; renamed to disambiguate from the new
|
|
* `bf-config-get` / `bf-config-set` flow nodes.
|
|
*/
|
|
module.exports = function (RED) {
|
|
function BfServerConfigNode(n) {
|
|
RED.nodes.createNode(this, n);
|
|
this.name = n.name;
|
|
this.server_url = (n.server_url || "").replace(/\/+$/, "");
|
|
// credentials.api_key is auto-merged onto `this` by Node-RED.
|
|
this.api_key = (this.credentials && this.credentials.api_key) || "";
|
|
}
|
|
RED.nodes.registerType("bf-server-config", BfServerConfigNode, {
|
|
credentials: {
|
|
api_key: { type: "password" },
|
|
},
|
|
});
|
|
};
|