diff --git a/frappe/core/doctype/user_permission/user_permission.py b/frappe/core/doctype/user_permission/user_permission.py index 57214b82e2..805242325f 100644 --- a/frappe/core/doctype/user_permission/user_permission.py +++ b/frappe/core/doctype/user_permission/user_permission.py @@ -60,6 +60,10 @@ class UserPermission(Document): frappe.throw(_("{0} has already assigned default value for {1}.").format(ref_link, self.allow)) +def send_user_permissions(bootinfo): + bootinfo.user["user_permissions"] = get_user_permissions() + + @frappe.whitelist() def get_user_permissions(user=None): """Get all users permissions for the user as a dict of doctype""" diff --git a/frappe/hooks.py b/frappe/hooks.py index 8863712b06..b1d8478966 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -427,6 +427,7 @@ after_job = [ extend_bootinfo = [ "frappe.utils.telemetry.add_bootinfo", + "frappe.core.doctype.user_permission.user_permission.send_user_permissions", ] naming_series_variables = { diff --git a/frappe/public/js/frappe/assets.js b/frappe/public/js/frappe/assets.js index dcb945bacd..6d85dd019e 100644 --- a/frappe/public/js/frappe/assets.js +++ b/frappe/public/js/frappe/assets.js @@ -32,7 +32,7 @@ frappe.assets = { // Evict cache every 2 days // Evict cache if page is reloaded within 10 seconds. Which could be user trying to // refresh if things feel broken. - if ((not_updated_since < 10000 && is_reload()) || not_updated_since > 2 * 86400000) { + if ((not_updated_since < 5000 && is_reload()) || not_updated_since > 2 * 86400000) { frappe.assets.clear_local_storage(); } } else { diff --git a/frappe/public/js/frappe/defaults.js b/frappe/public/js/frappe/defaults.js index fa92ef45f0..bca2b0dad4 100644 --- a/frappe/public/js/frappe/defaults.js +++ b/frappe/public/js/frappe/defaults.js @@ -130,4 +130,12 @@ frappe.defaults = { } }); }, + + load_user_permission_from_boot: function () { + if (frappe.boot.user.user_permissions) { + this._user_permissions = Object.assign({}, frappe.boot.user.user_permissions); + } else { + frappe.defaults.update_user_permissions(); + } + }, }; diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 0238e00f96..9af2998c72 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -277,7 +277,7 @@ frappe.Application = class Application { } load_user_permissions() { - frappe.defaults.update_user_permissions(); + frappe.defaults.load_user_permission_from_boot(); frappe.realtime.on( "update_user_permissions", diff --git a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js index 4a3c88403f..5f01edf578 100644 --- a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +++ b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js @@ -127,7 +127,6 @@ frappe.search.AwesomeBar = class AwesomeBar { } }); frappe.search.utils.setup_recent(); - frappe.tags.utils.fetch_tags(); } add_help() { diff --git a/frappe/public/js/frappe/ui/toolbar/tag_utils.js b/frappe/public/js/frappe/ui/toolbar/tag_utils.js index 29a0864036..ae1aa97670 100644 --- a/frappe/public/js/frappe/ui/toolbar/tag_utils.js +++ b/frappe/public/js/frappe/ui/toolbar/tag_utils.js @@ -8,6 +8,11 @@ frappe.tags.utils = { txt = txt.slice(1); let out = []; + if (!frappe.tags.tags) { + frappe.tags.utils.fetch_tags(); + return []; + } + for (let i in frappe.tags.tags) { let tag = frappe.tags.tags[i]; let level = frappe.search.utils.fuzzy_search(txt, tag);