From a857904b63d3fe86aae47b6ac2bc39f88d6f2b6a Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Thu, 27 Jan 2022 10:39:45 +0100
Subject: [PATCH] Support marking PWA icons as maskable

---
 CHANGELOG.rst               |  5 +++++
 aleksis/core/preferences.py | 11 +++++++++++
 aleksis/core/views.py       |  1 +
 3 files changed, 17 insertions(+)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 3b4a70be3..a89ede4e3 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_.
 Unreleased
 ----------
 
+Changed
+~~~~~~~
+
+* PWA icons can now be marked maskable
+
 Fixed
 ~~~~~
 
diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py
index fe29f220f..f1fb0227e 100644
--- a/aleksis/core/preferences.py
+++ b/aleksis/core/preferences.py
@@ -112,6 +112,17 @@ class PWAIcon(PublicFilePreferenceMixin, FilePreference):
     required = False
 
 
+@site_preferences_registry.register
+class PWAIconMaskable(BooleanPreference):
+    """PWA icon is maskable."""
+
+    section = theme
+    name = "pwa_icon_maskable"
+    verbose_name = _("PWA-Icon is maskable")
+    default = True
+    required = False
+
+
 @site_preferences_registry.register
 class MailOutName(StringPreference):
     """Mail out name of your AlekSIS instance."""
diff --git a/aleksis/core/views.py b/aleksis/core/views.py
index ec38875ad..539807bf1 100644
--- a/aleksis/core/views.py
+++ b/aleksis/core/views.py
@@ -175,6 +175,7 @@ class ManifestView(View):
             {
                 "src": favicon_img.faviconImage.url,
                 "sizes": f"{favicon_img.size}x{favicon_img.size}",
+                "purpose": "maskable" if prefs["theme__pwa_icon_maskable"] else "any",
             }
             for favicon_img in pwa_imgs
         ]
-- 
GitLab