[FIX] mail: cache online and offline getter

Before this PR online and offline cache getter where called when not needed.
This PR move the code inside the onWillRender hook to cache the results and
avoid useless computation of getters.

task-3572093

closes odoo/odoo#141750

X-original-commit: 57aa00893cc47456d5eb39f429c83c4069ab0d7e
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
This commit is contained in:
Didier (did)
2023-11-13 13:20:11 +00:00
committed by Alexandre Kühn
parent 6492739199
commit cfeef1472f
2 changed files with 11 additions and 7 deletions
@@ -3,7 +3,7 @@
import { ImStatus } from "@mail/core/common/im_status";
import { ActionPanel } from "@mail/discuss/core/common/action_panel";
import { Component, onWillUpdateProps, onWillStart, useState } from "@odoo/owl";
import { Component, onWillUpdateProps, onWillStart, useState, onWillRender } from "@odoo/owl";
import { _t } from "@web/core/l10n/translation";
import { useService } from "@web/core/utils/hooks";
@@ -23,6 +23,10 @@ export class ChannelMemberList extends Component {
this.threadService.fetchChannelMembers(nextProps.thread);
}
});
onWillRender(() => {
this.onlineMembers = this.props.thread.onlineMembers;
this.offlineMembers = this.props.thread.offlineMembers;
});
}
canOpenChatWith(member) {
@@ -4,19 +4,19 @@
<t t-name="discuss.ChannelMemberList">
<ActionPanel title="title">
<button t-on-click="() => props.openChannelInvitePanel({ keepPrevious: env.inChatWindow })" class="btn btn-secondary m-3 mt-0">Invite a User</button>
<t t-if="props.thread.onlineMembers.length > 0">
<t t-if="onlineMembers.length > 0">
<h6 class="mx-3 text-700">
Online -
<t t-esc="props.thread.onlineMembers.length"/>
<t t-esc="onlineMembers.length"/>
</h6>
<t t-foreach="props.thread.onlineMembers" t-as="member" t-key="member.id" t-call="discuss.channel_member"/>
<t t-foreach="onlineMembers" t-as="member" t-key="member.id" t-call="discuss.channel_member"/>
</t>
<t t-if="props.thread.offlineMembers.length > 0">
<t t-if="offlineMembers.length > 0">
<h6 class="mx-3 text-700">
Offline -
<t t-esc="props.thread.offlineMembers.length"/>
<t t-esc="offlineMembers.length"/>
</h6>
<t t-foreach="props.thread.offlineMembers" t-as="member" t-key="member.id" t-call="discuss.channel_member"/>
<t t-foreach="offlineMembers" t-as="member" t-key="member.id" t-call="discuss.channel_member"/>
</t>
<span t-if="props.thread.unknownMembersCount === 1" class="mx-2 mt-2">And 1 other member.</span>
<span t-if="props.thread.unknownMembersCount > 1" class="mx-2 mt-2">And <t t-esc="props.thread.unknownMembersCount"/> other members.</span>