Autoformating and cleanup
This commit is contained in:
parent
e4a65f3077
commit
a3cd0c9fd6
@ -644,7 +644,9 @@ const ConnectionMixin = (SuperClass) => {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.connected = false;
|
||||
this.connectionPromise = new Promise(resolve => { this._connectionResolve = resolve; });
|
||||
this.connectionPromise = new Promise((resolve) => {
|
||||
this._connectionResolve = resolve;
|
||||
});
|
||||
}
|
||||
LOG(...args) {
|
||||
const dt = new Date();
|
||||
@ -787,12 +789,13 @@ const ConnectionMixin = (SuperClass) => {
|
||||
const oldID = localStorage[ID_STORAGE_KEY];
|
||||
localStorage[ID_STORAGE_KEY] = id;
|
||||
this.fireEvent("browser-mod-config-update");
|
||||
if (((_a = this.devices) === null || _a === void 0 ? void 0 : _a[oldID]) !== undefined && ((_b = this.devices) === null || _b === void 0 ? void 0 : _b[this.deviceID]) === undefined) {
|
||||
if (((_a = this.devices) === null || _a === void 0 ? void 0 : _a[oldID]) !== undefined &&
|
||||
((_b = this.devices) === null || _b === void 0 ? void 0 : _b[this.deviceID]) === undefined) {
|
||||
(async () => {
|
||||
await this.connection.sendMessage({
|
||||
type: "browser_mod/reregister",
|
||||
deviceID: oldID,
|
||||
data: Object.assign(Object.assign({}, this.devices[oldID]), { deviceID: this.deviceID })
|
||||
data: Object.assign(Object.assign({}, this.devices[oldID]), { deviceID: this.deviceID }),
|
||||
});
|
||||
})();
|
||||
}
|
||||
@ -808,7 +811,7 @@ const ScreenSaverMixin = (SuperClass) => {
|
||||
super();
|
||||
this._listeners = {};
|
||||
this._brightness = 255;
|
||||
const panel = this._panel = document.createElement("div");
|
||||
const panel = (this._panel = document.createElement("div"));
|
||||
panel.setAttribute("browser-mod", "");
|
||||
panel.attachShadow({ mode: "open" });
|
||||
const styleEl = document.createElement("style");
|
||||
@ -926,7 +929,7 @@ const MediaPlayerMixin = (SuperClass) => {
|
||||
muted: this.player.muted,
|
||||
src: this.player.src,
|
||||
state,
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -3,18 +3,21 @@ import voluptuous as vol
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from homeassistant.components.websocket_api import (
|
||||
websocket_command,
|
||||
result_message,
|
||||
event_message,
|
||||
async_register_command,
|
||||
)
|
||||
|
||||
from homeassistant.components import websocket_api
|
||||
|
||||
from .const import WS_CONNECT, WS_REGISTER, WS_UNREGISTER, WS_REREGISTER, WS_UPDATE, DOMAIN
|
||||
from .helpers import get_devices, create_entity, get_config, is_setup_complete
|
||||
from .const import (
|
||||
WS_CONNECT,
|
||||
WS_REGISTER,
|
||||
WS_UNREGISTER,
|
||||
WS_REREGISTER,
|
||||
WS_UPDATE,
|
||||
DOMAIN,
|
||||
)
|
||||
|
||||
from .coordinator import Coordinator
|
||||
from .device import getDevice, deleteDevice
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
@ -42,14 +45,11 @@ async def async_setup_connection(hass):
|
||||
dev = getDevice(hass, deviceID)
|
||||
dev.update_settings(hass, store.get_device(deviceID).asdict())
|
||||
dev.connection = (connection, msg["id"])
|
||||
await store.set_device(deviceID,
|
||||
last_seen=datetime.now(
|
||||
tz=timezone.utc
|
||||
).isoformat()
|
||||
)
|
||||
await store.set_device(
|
||||
deviceID, last_seen=datetime.now(tz=timezone.utc).isoformat()
|
||||
)
|
||||
listener(store.asdict())
|
||||
|
||||
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): WS_REGISTER,
|
||||
@ -60,12 +60,9 @@ async def async_setup_connection(hass):
|
||||
async def handle_register(hass, connection, msg):
|
||||
deviceID = msg["deviceID"]
|
||||
store = hass.data[DOMAIN]["store"]
|
||||
await store.set_device(deviceID,
|
||||
enabled=True
|
||||
)
|
||||
await store.set_device(deviceID, enabled=True)
|
||||
connection.send_result(msg["id"])
|
||||
|
||||
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): WS_UNREGISTER,
|
||||
@ -117,7 +114,6 @@ async def async_setup_connection(hass):
|
||||
deviceSettings.update(data)
|
||||
await store.set_device(deviceID, **deviceSettings)
|
||||
|
||||
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): WS_UPDATE,
|
||||
@ -129,14 +125,12 @@ async def async_setup_connection(hass):
|
||||
async def handle_update(hass, connection, msg):
|
||||
deviceID = msg["deviceID"]
|
||||
store = hass.data[DOMAIN]["store"]
|
||||
devices = hass.data[DOMAIN]["devices"]
|
||||
|
||||
if store.get_device(deviceID).enabled:
|
||||
dev = getDevice(hass, deviceID)
|
||||
dev.data.update(msg.get("data", {}))
|
||||
dev.coordinator.async_set_updated_data(dev.data)
|
||||
|
||||
|
||||
async_register_command(hass, handle_connect)
|
||||
async_register_command(hass, handle_register)
|
||||
async_register_command(hass, handle_unregister)
|
||||
|
@ -1,11 +1,13 @@
|
||||
import logging
|
||||
|
||||
from homeassistant.helpers.update_coordinator import (CoordinatorEntity, DataUpdateCoordinator, UpdateFailed)
|
||||
from homeassistant.helpers.update_coordinator import (
|
||||
DataUpdateCoordinator,
|
||||
)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class Coordinator(DataUpdateCoordinator):
|
||||
|
||||
class Coordinator(DataUpdateCoordinator):
|
||||
def __init__(self, hass, deviceID):
|
||||
super().__init__(
|
||||
hass,
|
||||
|
@ -1,78 +1,15 @@
|
||||
import logging
|
||||
|
||||
from homeassistant.helpers.entity import Entity, async_generate_entity_id
|
||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||
|
||||
from .const import (
|
||||
DOMAIN,
|
||||
DATA_DEVICES,
|
||||
DATA_ALIASES,
|
||||
DATA_ADDERS,
|
||||
CONFIG_DEVICES,
|
||||
DATA_CONFIG,
|
||||
CONFIG_PREFIX,
|
||||
CONFIG_DISABLE,
|
||||
CONFIG_DISABLE_ALL,
|
||||
DATA_SETUP_COMPLETE,
|
||||
)
|
||||
|
||||
from .coordinator import Coordinator
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def get_devices(hass):
|
||||
return hass.data[DOMAIN][DATA_DEVICES]
|
||||
|
||||
|
||||
def get_alias(hass, deviceID):
|
||||
for k, v in hass.data[DOMAIN][DATA_ALIASES].items():
|
||||
if v == deviceID:
|
||||
return k
|
||||
return None
|
||||
|
||||
|
||||
def get_config(hass, deviceID):
|
||||
config = hass.data[DOMAIN][DATA_CONFIG].get(CONFIG_DEVICES, {})
|
||||
return config.get(deviceID, config.get(deviceID.replace("-", "_"), {}))
|
||||
|
||||
|
||||
def create_entity(hass, platform, deviceID, connection):
|
||||
conf = get_config(hass, deviceID)
|
||||
if conf and (
|
||||
platform in conf.get(CONFIG_DISABLE, [])
|
||||
or CONFIG_DISABLE_ALL in conf.get(CONFIG_DISABLE, [])
|
||||
):
|
||||
return None
|
||||
if not conf and (
|
||||
platform in hass.data[DOMAIN][DATA_CONFIG].get(CONFIG_DISABLE, [])
|
||||
or CONFIG_DISABLE_ALL in hass.data[DOMAIN][DATA_CONFIG].get(CONFIG_DISABLE, [])
|
||||
):
|
||||
return None
|
||||
adder = hass.data[DOMAIN][DATA_ADDERS].get(platform)
|
||||
if not adder:
|
||||
return None
|
||||
entity = adder(hass, deviceID, connection, get_alias(hass, deviceID))
|
||||
return entity
|
||||
|
||||
|
||||
def setup_platform(hass, config, async_add_devices, platform, cls):
|
||||
if platform in hass.data[DOMAIN][DATA_ADDERS]:
|
||||
return True
|
||||
|
||||
def adder(hass, deviceID, connection, alias=None):
|
||||
entity = cls(hass, connection, deviceID, alias)
|
||||
async_add_devices([entity])
|
||||
return entity
|
||||
|
||||
hass.data[DOMAIN][DATA_ADDERS][platform] = adder
|
||||
return True
|
||||
|
||||
|
||||
def is_setup_complete(hass):
|
||||
return hass.data[DOMAIN][DATA_SETUP_COMPLETE]
|
||||
|
||||
|
||||
class BrowserModEntity(CoordinatorEntity):
|
||||
def __init__(self, coordinator, deviceID, name):
|
||||
super().__init__(coordinator)
|
||||
|
@ -1,6 +1,6 @@
|
||||
from homeassistant.components.light import LightEntity, ColorMode
|
||||
|
||||
from .helpers import setup_platform, BrowserModEntity
|
||||
from .helpers import BrowserModEntity
|
||||
from .const import DOMAIN, DATA_ADDERS
|
||||
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
import logging
|
||||
from homeassistant.components import media_source
|
||||
from homeassistant.components.media_player import (
|
||||
SUPPORT_PLAY,
|
||||
|
@ -1,8 +1,5 @@
|
||||
import logging
|
||||
import attr
|
||||
from dataclasses import dataclass
|
||||
|
||||
from homeassistant.loader import bind_hass
|
||||
|
||||
STORAGE_VERSION = 1
|
||||
STORAGE_KEY = "browser_mod.storage"
|
||||
@ -71,8 +68,8 @@ class BrowserModStore:
|
||||
|
||||
async def updated(self):
|
||||
self.dirty = True
|
||||
for l in self.listeners:
|
||||
l(attr.asdict(self.data))
|
||||
for listener in self.listeners:
|
||||
listener(attr.asdict(self.data))
|
||||
await self.save()
|
||||
|
||||
def asdict(self):
|
||||
|
@ -9,7 +9,9 @@ export const ConnectionMixin = (SuperClass) => {
|
||||
private _data;
|
||||
public connected = false;
|
||||
private _connectionResolve;
|
||||
public connectionPromise = new Promise(resolve => { this._connectionResolve = resolve; });
|
||||
public connectionPromise = new Promise((resolve) => {
|
||||
this._connectionResolve = resolve;
|
||||
});
|
||||
|
||||
LOG(...args) {
|
||||
const dt = new Date();
|
||||
@ -23,7 +25,7 @@ export const ConnectionMixin = (SuperClass) => {
|
||||
private incoming_message(msg) {
|
||||
if (msg.command) {
|
||||
this.LOG("Command:", msg);
|
||||
this.fireEvent(`command-${msg.command}`, msg)
|
||||
this.fireEvent(`command-${msg.command}`, msg);
|
||||
} else if (msg.result) {
|
||||
this.update_config(msg.result);
|
||||
}
|
||||
@ -103,7 +105,6 @@ export const ConnectionMixin = (SuperClass) => {
|
||||
})();
|
||||
}
|
||||
|
||||
|
||||
private async _reregister(newData = {}) {
|
||||
await this.connection.sendMessage({
|
||||
type: "browser_mod/reregister",
|
||||
@ -165,7 +166,10 @@ export const ConnectionMixin = (SuperClass) => {
|
||||
|
||||
this.fireEvent("browser-mod-config-update");
|
||||
|
||||
if (this.devices?.[oldID] !== undefined && this.devices?.[this.deviceID] === undefined) {
|
||||
if (
|
||||
this.devices?.[oldID] !== undefined &&
|
||||
this.devices?.[this.deviceID] === undefined
|
||||
) {
|
||||
(async () => {
|
||||
await this.connection.sendMessage({
|
||||
type: "browser_mod/reregister",
|
||||
@ -173,9 +177,9 @@ export const ConnectionMixin = (SuperClass) => {
|
||||
data: {
|
||||
...this.devices[oldID],
|
||||
deviceID: this.deviceID,
|
||||
}
|
||||
})
|
||||
})()
|
||||
},
|
||||
});
|
||||
})();
|
||||
}
|
||||
|
||||
// TODO: Send update to backend to update device
|
||||
@ -183,4 +187,4 @@ export const ConnectionMixin = (SuperClass) => {
|
||||
}
|
||||
|
||||
return BrowserModConnection;
|
||||
}
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
export const MediaPlayerMixin = (SuperClass) => {
|
||||
return class MediaPlayerMixinClass extends SuperClass {
|
||||
|
||||
public player;
|
||||
private _player_enabled;
|
||||
|
||||
@ -14,7 +13,9 @@ export const MediaPlayerMixin = (SuperClass) => {
|
||||
this.player.addEventListener(ev, () => this._player_update());
|
||||
}
|
||||
|
||||
window.addEventListener("pointerdown", () => {
|
||||
window.addEventListener(
|
||||
"pointerdown",
|
||||
() => {
|
||||
this._player_enabled = true;
|
||||
if (!this.player.ended) this.player.play();
|
||||
},
|
||||
@ -26,7 +27,9 @@ export const MediaPlayerMixin = (SuperClass) => {
|
||||
this.player.src = ev.detail.media_content_id;
|
||||
this.player.play();
|
||||
});
|
||||
this.addEventListener("command-player-pause", (ev) => this.player.pause());
|
||||
this.addEventListener("command-player-pause", (ev) =>
|
||||
this.player.pause()
|
||||
);
|
||||
this.addEventListener("command-player-stop", (ev) => {
|
||||
this.player.src = null;
|
||||
this.player.pause();
|
||||
@ -38,34 +41,30 @@ export const MediaPlayerMixin = (SuperClass) => {
|
||||
this.addEventListener("command-player-mute", (ev) => {
|
||||
if (ev.detail?.mute !== undefined)
|
||||
this.player.muted = Boolean(ev.detail.mute);
|
||||
else
|
||||
this.player.muted = !this.player.muted;
|
||||
else this.player.muted = !this.player.muted;
|
||||
});
|
||||
|
||||
this.connectionPromise.then(() => this._player_update());
|
||||
}
|
||||
|
||||
private _player_update() {
|
||||
const state =
|
||||
this._player_enabled
|
||||
const state = this._player_enabled
|
||||
? this.player.src
|
||||
? this.player.ended
|
||||
? "stopped"
|
||||
: this.player.paused
|
||||
? "paused"
|
||||
: "playing"
|
||||
? "paused"
|
||||
: "playing"
|
||||
: "stopped"
|
||||
: "unavailable"
|
||||
;
|
||||
: "unavailable";
|
||||
this.sendUpdate({
|
||||
player: {
|
||||
volume: this.player.volume,
|
||||
muted: this.player.muted,
|
||||
src: this.player.src,
|
||||
state,
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
export const ScreenSaverMixin = (SuperClass) => {
|
||||
class ScreenSaverMixinClass extends SuperClass {
|
||||
|
||||
private _panel;
|
||||
private _listeners = {};
|
||||
private _brightness = 255;
|
||||
@ -8,7 +7,7 @@ export const ScreenSaverMixin = (SuperClass) => {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
const panel = this._panel = document.createElement("div")
|
||||
const panel = (this._panel = document.createElement("div"));
|
||||
panel.setAttribute("browser-mod", "");
|
||||
panel.attachShadow({ mode: "open" });
|
||||
const styleEl = document.createElement("style");
|
||||
@ -29,7 +28,7 @@ export const ScreenSaverMixin = (SuperClass) => {
|
||||
:host([dark]) {
|
||||
background: rgba(0,0,0,1);
|
||||
}
|
||||
`
|
||||
`;
|
||||
panel.shadowRoot.appendChild(styleEl);
|
||||
document.body.appendChild(panel);
|
||||
|
||||
@ -54,10 +53,13 @@ export const ScreenSaverMixin = (SuperClass) => {
|
||||
}
|
||||
}
|
||||
|
||||
private _screen_on(ev=undefined) {
|
||||
private _screen_on(ev = undefined) {
|
||||
if (ev?.detail?.brightness) {
|
||||
this._brightness = ev.detail.brightness;
|
||||
this._panel.style.setProperty("--darkness", 1-ev.detail.brightness/255)
|
||||
this._panel.style.setProperty(
|
||||
"--darkness",
|
||||
1 - ev.detail.brightness / 255
|
||||
);
|
||||
}
|
||||
this._panel.removeAttribute("dark");
|
||||
this.sendUpdate({
|
||||
@ -67,15 +69,14 @@ export const ScreenSaverMixin = (SuperClass) => {
|
||||
|
||||
for (const ev of ["pointerdown", "pointermove", "keydown"]) {
|
||||
if (this._listeners[ev]) {
|
||||
window.removeEventListener(ev, this._listeners[ev])
|
||||
window.removeEventListener(ev, this._listeners[ev]);
|
||||
this._listeners[ev] = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return ScreenSaverMixinClass
|
||||
}
|
||||
return ScreenSaverMixinClass;
|
||||
};
|
||||
|
||||
export const BrowserModScreensaverMixin = (C) =>
|
||||
class extends C {
|
||||
|
Loading…
x
Reference in New Issue
Block a user