From 20a6c53c2da2ff088802cb9bda0222cd1424af18 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Fri, 10 Jun 2022 07:21:53 +0000 Subject: [PATCH] logo as well --- supervisor/addons/model.py | 5 +++++ supervisor/api/addons.py | 15 ++++++++++----- supervisor/const.py | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/supervisor/addons/model.py b/supervisor/addons/model.py index 1c3ed1512..27dabd5d6 100644 --- a/supervisor/addons/model.py +++ b/supervisor/addons/model.py @@ -553,6 +553,11 @@ class AddonModel(CoreSysAttributes, ABC): """Return path to add-on logo.""" return Path(self.path_location, "logo.png") + @property + def path_dark_logo(self) -> Path: + """Return path to the dark variant of the add-on logo.""" + return Path(self.path_location, "dark_logo.png") + @property def path_changelog(self) -> Path: """Return path to add-on changelog.""" diff --git a/supervisor/api/addons.py b/supervisor/api/addons.py index 78de786c6..041ae5147 100644 --- a/supervisor/api/addons.py +++ b/supervisor/api/addons.py @@ -69,7 +69,7 @@ from ..const import ( ATTR_NETWORK_RX, ATTR_NETWORK_TX, ATTR_OPTIONS, - ATTR_PREFER_DARK_ICON, + ATTR_PREFER_DARK, ATTR_PRIVILEGED, ATTR_PROTECTED, ATTR_PWNED, @@ -114,9 +114,9 @@ _LOGGER: logging.Logger = logging.getLogger(__name__) SCHEMA_VERSION = vol.Schema({vol.Optional(ATTR_VERSION): str}) -SCHEMA_ICON = vol.Schema( +SCHEMA_DARK = vol.Schema( { - vol.Optional(ATTR_PREFER_DARK_ICON, default=False): bool, + vol.Optional(ATTR_PREFER_DARK, default=False): bool, } ) @@ -470,8 +470,8 @@ class APIAddons(CoreSysAttributes): if not addon.with_icon: raise APIError(f"No icon found for add-on {addon.slug}!") - body = await api_validate(SCHEMA_ICON, request) - if body[ATTR_PREFER_DARK_ICON] and addon.path_dark_icon.exists(): + body = await api_validate(SCHEMA_DARK, request) + if body[ATTR_PREFER_DARK] and addon.path_dark_icon.exists(): with addon.path_dark_icon.open("rb") as png: return png.read() @@ -485,6 +485,11 @@ class APIAddons(CoreSysAttributes): if not addon.with_logo: raise APIError(f"No logo found for add-on {addon.slug}!") + body = await api_validate(SCHEMA_DARK, request) + if body[ATTR_PREFER_DARK] and addon.path_dark_logo.exists(): + with addon.path_dark_logo.open("rb") as png: + return png.read() + with addon.path_logo.open("rb") as png: return png.read() diff --git a/supervisor/const.py b/supervisor/const.py index c7ce63ecb..69ac77edc 100644 --- a/supervisor/const.py +++ b/supervisor/const.py @@ -255,7 +255,7 @@ ATTR_PASSWORD = "password" ATTR_PORT = "port" ATTR_PORTS = "ports" ATTR_PORTS_DESCRIPTION = "ports_description" -ATTR_PREFER_DARK_ICON = "prefer_dark_icon" +ATTR_PREFER_DARK = "prefer_dark_icon" ATTR_PREFIX = "prefix" ATTR_PRIMARY = "primary" ATTR_PRIORITY = "priority"