Small cleanups to lifx services to reduce code (#135817)

This commit is contained in:
J. Nick Koston 2025-01-16 19:39:48 -10:00 committed by GitHub
parent daac986e00
commit c2b6c4b4fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -218,16 +218,16 @@ LIFX_PAINT_THEME_SCHEMA = cv.make_entity_service_schema(
} }
) )
SERVICES = ( SERVICES_SCHEMA = {
SERVICE_EFFECT_COLORLOOP, SERVICE_EFFECT_COLORLOOP: LIFX_EFFECT_COLORLOOP_SCHEMA,
SERVICE_EFFECT_FLAME, SERVICE_EFFECT_FLAME: LIFX_EFFECT_FLAME_SCHEMA,
SERVICE_EFFECT_MORPH, SERVICE_EFFECT_MORPH: LIFX_EFFECT_MORPH_SCHEMA,
SERVICE_EFFECT_MOVE, SERVICE_EFFECT_MOVE: LIFX_EFFECT_MOVE_SCHEMA,
SERVICE_EFFECT_PULSE, SERVICE_EFFECT_PULSE: LIFX_EFFECT_PULSE_SCHEMA,
SERVICE_EFFECT_SKY, SERVICE_EFFECT_SKY: LIFX_EFFECT_SKY_SCHEMA,
SERVICE_EFFECT_STOP, SERVICE_EFFECT_STOP: LIFX_EFFECT_STOP_SCHEMA,
SERVICE_PAINT_THEME, SERVICE_PAINT_THEME: LIFX_PAINT_THEME_SCHEMA,
) }
class LIFXManager: class LIFXManager:
@ -242,7 +242,7 @@ class LIFXManager:
@callback @callback
def async_unload(self) -> None: def async_unload(self) -> None:
"""Release resources.""" """Release resources."""
for service in SERVICES: for service in SERVICES_SCHEMA:
self.hass.services.async_remove(DOMAIN, service) self.hass.services.async_remove(DOMAIN, service)
@callback @callback
@ -270,72 +270,20 @@ class LIFXManager:
if all_referenced: if all_referenced:
await self.start_effect(all_referenced, service.service, **service.data) await self.start_effect(all_referenced, service.service, **service.data)
self.hass.services.async_register( for service, schema in SERVICES_SCHEMA.items():
DOMAIN, self.hass.services.async_register(
SERVICE_EFFECT_PULSE, DOMAIN, service, service_handler, schema=schema
service_handler, )
schema=LIFX_EFFECT_PULSE_SCHEMA,
)
self.hass.services.async_register(
DOMAIN,
SERVICE_EFFECT_COLORLOOP,
service_handler,
schema=LIFX_EFFECT_COLORLOOP_SCHEMA,
)
self.hass.services.async_register(
DOMAIN,
SERVICE_EFFECT_FLAME,
service_handler,
schema=LIFX_EFFECT_FLAME_SCHEMA,
)
self.hass.services.async_register(
DOMAIN,
SERVICE_EFFECT_MORPH,
service_handler,
schema=LIFX_EFFECT_MORPH_SCHEMA,
)
self.hass.services.async_register(
DOMAIN,
SERVICE_EFFECT_MOVE,
service_handler,
schema=LIFX_EFFECT_MOVE_SCHEMA,
)
self.hass.services.async_register(
DOMAIN,
SERVICE_EFFECT_SKY,
service_handler,
schema=LIFX_EFFECT_SKY_SCHEMA,
)
self.hass.services.async_register(
DOMAIN,
SERVICE_EFFECT_STOP,
service_handler,
schema=LIFX_EFFECT_STOP_SCHEMA,
)
self.hass.services.async_register(
DOMAIN,
SERVICE_PAINT_THEME,
service_handler,
schema=LIFX_PAINT_THEME_SCHEMA,
)
@staticmethod @staticmethod
def build_theme(theme_name: str = "exciting", palette: list | None = None) -> Theme: def build_theme(theme_name: str = "exciting", palette: list | None = None) -> Theme:
"""Either return the predefined theme or build one from the palette.""" """Either return the predefined theme or build one from the palette."""
if palette is not None: if palette is None:
theme = Theme() return ThemeLibrary().get_theme(theme_name)
for hsbk in palette:
theme.add_hsbk(hsbk[0], hsbk[1], hsbk[2], hsbk[3])
else:
theme = ThemeLibrary().get_theme(theme_name)
theme = Theme()
for hsbk in palette:
theme.add_hsbk(hsbk[0], hsbk[1], hsbk[2], hsbk[3])
return theme return theme
async def _start_effect_flame( async def _start_effect_flame(