fix: use boot to store announcement

This commit is contained in:
Gursheen Anand 2024-03-29 16:23:23 +05:30
parent 2238f02cb7
commit 2c0498cbdd
4 changed files with 17 additions and 19 deletions

View file

@ -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", {});

View file

@ -139,10 +139,10 @@
</div>
</header>
{% 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) != '' %}
<div class="announcement-widget form-message p-2 m-0" style="position: relative; z-index: -1; border-radius: 0; background-color: var(--bg-blue);">
<div class="container flex justify-between align-center mx-auto">
{{ localStorage.getItem("announcement_widget") }}
{{ navbar_settings.announcement_widget }}
<div class="close-message p-0 mr-2" style="position: relative;">
{{ frappe.utils.icon("close") }}
</div>

View file

@ -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();

View file

@ -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