- {{ localStorage.getItem("announcement_widget") }}
+ {{ navbar_settings.announcement_widget }}
{{ frappe.utils.icon("close") }}
diff --git a/frappe/public/js/frappe/ui/toolbar/toolbar.js b/frappe/public/js/frappe/ui/toolbar/toolbar.js
index 62bcde0f43..ca7da66e72 100644
--- a/frappe/public/js/frappe/ui/toolbar/toolbar.js
+++ b/frappe/public/js/frappe/ui/toolbar/toolbar.js
@@ -6,7 +6,6 @@ frappe.provide("frappe.search");
frappe.ui.toolbar.Toolbar = class {
constructor() {
- frappe.ui.toolbar.reset_announcement_widget();
$("header").replaceWith(
frappe.render_template("navbar", {
avatar: frappe.avatar(frappe.session.user, "avatar-medium"),
@@ -59,13 +58,24 @@ frappe.ui.toolbar.Toolbar = class {
}
setup_announcement_widget() {
- if (localStorage.getItem("show_announcement_widget") == "true") {
+ let current_announcement = frappe.boot.navbar_settings.announcement_widget;
+
+ if (!current_announcement) return;
+
+ // If an unseen announcement is added, overlook dismiss flag
+ if (current_announcement != localStorage.getItem("announcement_widget")) {
+ localStorage.removeItem("dismissed_announcement_widget");
+ localStorage.setItem("announcement_widget", current_announcement);
+ }
+
+ // When an announcement is closed, add dismiss flag
+ if (!localStorage.getItem("dismissed_announcement_widget")) {
let announcement_widget = $(".announcement-widget");
let close_message = announcement_widget.find(".close-message");
close_message.on(
"click",
() =>
- localStorage.setItem("show_announcement_widget", false) ||
+ localStorage.setItem("dismissed_announcement_widget", true) ||
announcement_widget.addClass("hidden")
);
}
@@ -245,15 +255,6 @@ frappe.ui.toolbar.clear_cache = frappe.utils.throttle(function () {
});
}, 10000);
-frappe.ui.toolbar.reset_announcement_widget = function () {
- frappe.db.get_single_value("Navbar Settings", "announcement_widget").then((value) => {
- if (value != localStorage.getItem("announcement_widget")) {
- localStorage.setItem("show_announcement_widget", true);
- localStorage.setItem("announcement_widget", value);
- }
- });
-};
-
frappe.ui.toolbar.show_about = function () {
try {
frappe.ui.misc.about();
diff --git a/frappe/sessions.py b/frappe/sessions.py
index 8781e7448e..9ed4be7004 100644
--- a/frappe/sessions.py
+++ b/frappe/sessions.py
@@ -167,6 +167,7 @@ def get():
bootinfo["desk_theme"] = frappe.db.get_value("User", frappe.session.user, "desk_theme") or "Light"
bootinfo["user"]["impersonated_by"] = frappe.session.data.get("impersonated_by")
+ bootinfo["navbar_settings"] = frappe.get_cached_doc("Navbar Settings")
return bootinfo