Task-2985304 closes odoo/odoo#100765 X-original-commit: e267d52cc4380c3acf7d2f9c9abf1acb59a598c1 Related: odoo/enterprise#31606 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
import { registerModel } from '@mail/model/model_core';
|
|
import { attr, one } from '@mail/model/model_field';
|
|
import { clear } from '@mail/model/model_field_command';
|
|
import { isEventHandled } from '@mail/utils/utils';
|
|
|
|
registerModel({
|
|
name: 'ChannelMemberView',
|
|
recordMethods: {
|
|
/**
|
|
* Handles click on channel member in the member list of this channel.
|
|
*
|
|
* @param {MouseEvent} ev
|
|
*/
|
|
onClickMember(ev) {
|
|
if (isEventHandled(ev, 'PersonaImStatusIcon.Click') || !this.channelMember.persona.partner) {
|
|
return;
|
|
}
|
|
this.channelMember.persona.partner.openChat();
|
|
},
|
|
},
|
|
fields: {
|
|
channelMemberListCategoryViewOwner: one('ChannelMemberListCategoryView', {
|
|
identifying: true,
|
|
inverse: 'channelMemberViews',
|
|
}),
|
|
channelMember: one('ChannelMember', {
|
|
identifying: true,
|
|
inverse: 'channelMemberViews',
|
|
}),
|
|
hasOpenChat: attr({
|
|
compute() {
|
|
return this.channelMember.persona.partner ? true : false;
|
|
},
|
|
}),
|
|
memberTitleText: attr({
|
|
compute() {
|
|
return this.hasOpenChat ? this.env._t("Open chat") : '';
|
|
},
|
|
}),
|
|
personaImStatusIconView: one('PersonaImStatusIconView', {
|
|
compute() {
|
|
if (this.channelMember.persona.guest && this.channelMember.persona.guest.im_status) {
|
|
return {};
|
|
}
|
|
return this.channelMember.persona.partner && this.channelMember.persona.partner.isImStatusSet ? {} : clear();
|
|
},
|
|
inverse: 'channelMemberViewOwner',
|
|
}),
|
|
},
|
|
});
|