diff --git a/frappe/public/js/frappe/router.js b/frappe/public/js/frappe/router.js index 5ba9b5efec..69a2bca04d 100644 --- a/frappe/public/js/frappe/router.js +++ b/frappe/public/js/frappe/router.js @@ -469,19 +469,34 @@ frappe.router = { return encodeURIComponent(String(a)); } }).join("/"); - let private_home = frappe.workspaces[`home-${frappe.user.name.toLowerCase()}`]; - let workspace_name = private_home || frappe.workspaces["home"] ? "home" : ""; - let is_private = !!private_home; - let first_workspace = Object.keys(frappe.workspaces)[0]; - - if (!workspace_name && first_workspace) { - workspace_name = frappe.workspaces[first_workspace].title; - is_private = !frappe.workspaces[first_workspace].public; + if (path_string) { + return "/app/" + path_string; } - let default_page = (is_private ? "private/" : "") + frappe.router.slug(workspace_name); - return "/app/" + (path_string || default_page); + // Workspace + let private_home = `home-${frappe.user.name.toLowerCase()}`; + let default_page = null; + if (frappe.boot.user.default_workspace) { + default_page = frappe.router.slug(frappe.boot.user.default_workspace.name); + } else if (frappe.workspaces[private_home]) { + default_page = private_home; + } else if (frappe.workspaces["home"]) { + default_page = "home"; + } else { + // Fallback to first workspace + default_page = Object.keys(frappe.workspaces)[0]; + } + + if (frappe.workspaces[default_page]?.public == false) { + default_page = "private/" + default_page; + } + + if (default_page) { + return "/app/" + default_page; + } + + return "/app"; }, /**