Add enhanced announcements notification dot feature
This change adds a new option which consists of the injection of custom
CSS code to enhance the announcements notification dot shown in the
hamburger icon in the Community Console.
Change-Id: I6963017d25ba99f82ccabfde8eae45fa3280c4ec
diff --git a/docs/features.es.md b/docs/features.es.md
index a1762a9..f1c3bb0 100644
--- a/docs/features.es.md
+++ b/docs/features.es.md
@@ -126,6 +126,17 @@
![GIF que muestra cómo cambiar entre el sentido ascendente/descendente](resources/smei_sort_direction.gif)
+### Indicador de anuncios nuevos más prominente
+> **Option name:** _Muestra el punto que notifica que hay anuncios sin leer de
+manera más prominente en la Consola de la Comunidad._.
+
+Cuando esta opción está activada, el banner "Alpha" que aparece en la esquina
+superior izquierda de la Consola de la Comunidad se oculta, y el punto de
+notificación que aparece en el menú de hamburguesa cuando hay un nuevo anuncio
+se hace más grande y animado para que lo veas mejor.
+
+![GIF que muestra el punto de notificación mejorado](resources/announcement_dot.gif)
+
### Punto indicador
> **Opciones:** _Muestra si el autor del hilo ha participado en otros hilos_,
_Muestra el número de preguntas y respuestas escritas por el autor del hilo
diff --git a/docs/features.md b/docs/features.md
index c7a5a38..50ae1fc 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -119,6 +119,17 @@
![GIF showing how to switch between ascending/descending order](resources/smei_sort_direction.gif)
+### More prominent announcements dot
+> **Option name:** _Show the announcements notification dot more prominently in
+the Community Console_.
+
+When this option is enabled, the "Alpha" banner in the upper-left corner of the
+Community Console is removed, and the notification dot which appears in the
+hamburguer menu when there's a new announcement is enlarged and animated so you
+don't miss it.
+
+![GIF showing the improved notification dot](resources/announcement_dot.gif)
+
### Indicator dot
> **Option names:** _Show whether the OP has participated in other threads_,
_Show the number of questions and replies written by the OP within the last `n`
diff --git a/docs/resources/announcement_dot.gif b/docs/resources/announcement_dot.gif
new file mode 100644
index 0000000..19b248c
--- /dev/null
+++ b/docs/resources/announcement_dot.gif
Binary files differ
diff --git a/src/_locales/ca/messages.json b/src/_locales/ca/messages.json
index 87fda39..746ac61 100644
--- a/src/_locales/ca/messages.json
+++ b/src/_locales/ca/messages.json
@@ -91,6 +91,10 @@
"message": "Activa l'experiment <code class=\"help\" title=\"Aquest experiment et permet ordenar la llista de fils de la Consola de la Comunitat en ordre ascendent o descendent.\">SMEI_SORT_DIRECTION</code>.",
"description": "Feature checkbox in the options page"
},
+ "options_enhancedannouncementsdot": {
+ "message": "Mostra el punt que notifica que hi ha anuncis sense llegir d'una manera més prominent a la Consola de la Comunitat.",
+ "description": "Feature checkbox in the options page"
+ },
"options_profileindicator_header": {
"message": "Punt indicador",
"description": "Heading for the profile indicator feature options"
diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json
index 65b2640..407ba5c 100644
--- a/src/_locales/en/messages.json
+++ b/src/_locales/en/messages.json
@@ -95,6 +95,10 @@
"message": "Enable the <code class=\"help\" title=\"This experiment lets you sort the Community Console thread list in ascending or descending order.\">SMEI_SORT_DIRECTION</code> experiment.",
"description": "Feature checkbox in the options page"
},
+ "options_enhancedannouncementsdot": {
+ "message": "Show the announcements notification dot more prominently in the Community Console.",
+ "description": "Feature checkbox in the options page"
+ },
"options_profileindicator_header": {
"message": "Indicator dot",
"description": "Heading for the profile indicator feature options"
diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json
index 0e5b0a6..96b6fd9 100644
--- a/src/_locales/es/messages.json
+++ b/src/_locales/es/messages.json
@@ -91,6 +91,10 @@
"message": "Activa el experimento <code class=\"help\" title=\"Este experimento te permite ordenar la lista de hilos de la Consola de la Comunidad en orden ascendente o descendente.\">SMEI_SORT_DIRECTION</code>.",
"description": "Feature checkbox in the options page"
},
+ "options_enhancedannouncementsdot": {
+ "message": "Muestra el punto que notifica que hay anuncios sin leer de manera más prominente en la Consola de la Comunidad.",
+ "description": "Feature checkbox in the options page"
+ },
"options_profileindicator_header": {
"message": "Punto indicador",
"description": "Heading for the profile indicator feature options"
diff --git a/src/common/common.js b/src/common/common.js
index 28a86fd..663ca28 100644
--- a/src/common/common.js
+++ b/src/common/common.js
@@ -21,6 +21,7 @@
'ccdragndropfix': false,
'batchlock': false,
'smei_sortdirection': false,
+ 'enhancedannouncementsdot': false,
};
const specialOptions = [
diff --git a/src/content_scripts/console_inject.js b/src/content_scripts/console_inject.js
index 538e576..67bd409 100644
--- a/src/content_scripts/console_inject.js
+++ b/src/content_scripts/console_inject.js
@@ -397,6 +397,11 @@
'material-drawer .main-header{background: var(--TWPT-drawer-background, #fff)!important; position: sticky; top: 0; z-index: 1;}');
}
+ if (options.enhancedannouncementsdot) {
+ injectStylesheet(
+ chrome.runtime.getURL('injections/enhanced_announcements_dot.css'));
+ }
+
if (options.ccforcehidedrawer) {
var drawer = document.querySelector('material-drawer');
if (drawer !== null && drawer.classList.contains('mat-drawer-expanded')) {
diff --git a/src/injections/enhanced_announcements_dot.css b/src/injections/enhanced_announcements_dot.css
new file mode 100644
index 0000000..e2b5e67
--- /dev/null
+++ b/src/injections/enhanced_announcements_dot.css
@@ -0,0 +1,21 @@
+@keyframes TWPTAnnouncementDot {
+ from {
+ background-color: #d93025;
+ bottom: 8px;
+ }
+
+ to {
+ background-color: #e2b3b0;
+ bottom: 0px;
+ }
+}
+
+header .left-control .material-drawer-button.has-updates::after {
+ height: 10px;
+ width: 10px;
+ animation: .5s infinite alternate ease-in TWPTAnnouncementDot;
+}
+
+header .sash {
+ display: none;
+}
diff --git a/src/options/options.html b/src/options/options.html
index 15716da..62fce67 100644
--- a/src/options/options.html
+++ b/src/options/options.html
@@ -33,6 +33,7 @@
<div id="dragndrop-wrapper" class="option" hidden><input type="checkbox" id="ccdragndropfix"> <label for="ccdragndropfix" data-i18n="ccdragndropfix"></label></div>
<div class="option"><input type="checkbox" id="batchlock"> <label for="batchlock" data-i18n="batchlock"></label> <span class="experimental-label" data-i18n="experimental_label"></span></div>
<div class="option"><input type="checkbox" id="smei_sortdirection"> <label for="smei_sortdirection" data-i18n="smei_sortdirection"></label> <span class="experimental-label" data-i18n="experimental_label"></span></div>
+ <div class="option"><input type="checkbox" id="enhancedannouncementsdot"> <label for="enhancedannouncementsdot" data-i18n="enhancedannouncementsdot"></label></div>
<h4 data-i18n="profileindicator_header"></h4>
<div class="option"><input type="checkbox" id="profileindicator"> <label for="profileindicator" data-i18n="profileindicator"></label> <span class="experimental-label" data-i18n="experimental_label"></span></div>
<div class="option"><input type="checkbox" id="profileindicatoralt"> <label for="profileindicatoralt" data-i18n="profileindicatoralt"></label> <span class="experimental-label" data-i18n="experimental_label"></span></div>
diff --git a/templates/manifest.gjson b/templates/manifest.gjson
index 3ee5587..72126b9 100644
--- a/templates/manifest.gjson
+++ b/templates/manifest.gjson
@@ -70,7 +70,8 @@
"injections/profileindicator_inject.js",
"injections/profileindicator_inject.css",
"injections/ccdarktheme.css",
- "injections/batchlock_inject.js"
+ "injections/batchlock_inject.js",
+ "injections/enhanced_announcements_dot.css"
#if defined(CHROMIUM_MV3)
],
"matches": [