Autoformating and cleanup

This commit is contained in:
Thomas Lovén 2022-07-13 23:12:15 +00:00
parent e4a65f3077
commit a3cd0c9fd6
10 changed files with 65 additions and 129 deletions

View File

@ -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,
}
},
});
}
};

View File

@ -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)

View File

@ -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,

View File

@ -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)

View File

@ -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

View File

@ -1,4 +1,3 @@
import logging
from homeassistant.components import media_source
from homeassistant.components.media_player import (
SUPPORT_PLAY,

View File

@ -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):

View File

@ -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;
}
};

View File

@ -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,
}
})
},
});
}
}
}
};
};

View File

@ -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 {