diff --git a/frappe/core/doctype/navbar_settings/navbar_settings.js b/frappe/core/doctype/navbar_settings/navbar_settings.js index acdcdf8ac7..ed7e331986 100644 --- a/frappe/core/doctype/navbar_settings/navbar_settings.js +++ b/frappe/core/doctype/navbar_settings/navbar_settings.js @@ -1,8 +1,4 @@ // Copyright (c) 2020, Frappe Technologies and contributors // For license information, please see license.txt -frappe.ui.form.on("Navbar Settings", { - after_save: function (frm) { - frappe.ui.toolbar.reset_announcement_widget(); - }, -}); +frappe.ui.form.on("Navbar Settings", {}); diff --git a/frappe/public/js/frappe/ui/toolbar/navbar.html b/frappe/public/js/frappe/ui/toolbar/navbar.html index f17203c08b..db697c5c7f 100644 --- a/frappe/public/js/frappe/ui/toolbar/navbar.html +++ b/frappe/public/js/frappe/ui/toolbar/navbar.html @@ -139,10 +139,10 @@ - {% if localStorage.getItem("show_announcement_widget") == 'true' && strip_html(localStorage.getItem("announcement_widget")) != '' %} + {% if !localStorage.getItem("dismissed_announcement_widget") && strip_html(navbar_settings.announcement_widget) != '' %}
- {{ 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