diff --git a/addons/mail/static/src/core/messaging_service.js b/addons/mail/static/src/core/messaging_service.js index 24e75229da4..77b9ae65884 100644 --- a/addons/mail/static/src/core/messaging_service.js +++ b/addons/mail/static/src/core/messaging_service.js @@ -759,22 +759,14 @@ export const messagingService = { start(env, services) { // compute initial discuss thread if not on public page if (!services["mail.store"].inPublicPage) { - let threadLocalId = createLocalId("mail.box", "inbox"); - const activeId = services.router.current.hash.active_id; - if (typeof activeId === "number") { - threadLocalId = createLocalId("discuss.channel", activeId); + const activeId = services.router.current.hash.active_id ?? "mail.box_inbox"; + let [model, id] = + typeof activeId === "number" ? ["discuss.channel", activeId] : activeId.split("_"); + if (model === "mail.channel") { + // legacy format (sent in old emails, shared links, ...) + model = "discuss.channel"; } - if (typeof activeId === "string" && activeId.startsWith("mail.box_")) { - threadLocalId = createLocalId("mail.box", activeId.slice(9)); - } - // legacy format (sent in old emails, shared links, ...) - if (typeof activeId === "string" && activeId.startsWith("mail.channel_")) { - threadLocalId = createLocalId("discuss.channel", parseInt(activeId.slice(13), 10)); - } - if (typeof activeId === "string" && activeId.startsWith("discuss.channel_")) { - threadLocalId = createLocalId("discuss.channel", parseInt(activeId.slice(13), 10)); - } - services["mail.store"].discuss.threadLocalId = threadLocalId; + services["mail.store"].discuss.threadLocalId = createLocalId(model, id); } const messaging = new Messaging(env, services); messaging.initialize(); diff --git a/addons/mail/static/src/core/store_service.js b/addons/mail/static/src/core/store_service.js index 44a4be149d2..f54ed42007b 100644 --- a/addons/mail/static/src/core/store_service.js +++ b/addons/mail/static/src/core/store_service.js @@ -155,9 +155,7 @@ export const storeService = { if (!res.isSmall) { res.discuss.activeTab = "all"; } else { - res.discuss.activeTab = res.discuss.threadLocalId - ? res.threads[res.discuss.threadLocalId].type - : "all"; + res.discuss.activeTab = res.threads[res.discuss.threadLocalId]?.type ?? "all"; } }); return res;