diff --git a/addons/mail/static/src/core/common/persona_model.js b/addons/mail/static/src/core/common/persona_model.js index a94de05380b..8d57107b0d9 100644 --- a/addons/mail/static/src/core/common/persona_model.js +++ b/addons/mail/static/src/core/common/persona_model.js @@ -34,6 +34,16 @@ export class Persona extends Record { landlineNumber; /** @type {string} */ mobileNumber; + storeAsTrackedImStatus = Record.one("Store", { + /** @this {import("models").Persona} */ + compute() { + if (this.type === "partner" && this.im_status !== "im_partner" && !this.is_public) { + return this._store; + } + }, + eager: true, + inverse: "imStatusTrackedPersonas", + }); /** @type {'partner' | 'guest'} */ type; /** @type {string} */ diff --git a/addons/mail/static/src/core/common/store_service.js b/addons/mail/static/src/core/common/store_service.js index b2b0588279e..4ca136df4cb 100644 --- a/addons/mail/static/src/core/common/store_service.js +++ b/addons/mail/static/src/core/common/store_service.js @@ -74,18 +74,10 @@ export class Store extends BaseStore { users = {}; internalUserGroupId = null; imStatusTrackedPersonas = Record.many("Persona", { - compute() { - return Object.values(this.Persona?.records ?? []).filter( - (persona) => - persona.type === "partner" && - persona.im_status !== "im_partner" && - !persona.is_public - ); - }, + inverse: "storeAsTrackedImStatus", onUpdate() { this.updateImStatusRegistration(); }, - eager: true, }); hasLinkPreviewFeature = true; // messaging menu