[IMP] mail: introduce ChannelMemberListCategoryView
Task-2831082 closes odoo/odoo#91699 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
This commit is contained in:
@@ -4,11 +4,11 @@
|
||||
<t t-name="mail.ChannelMemberList" owl="1">
|
||||
<t t-if="channelMemberListView">
|
||||
<div class="o_ChannelMemberList d-flex flex-column overflow-auto bg-light" t-attf-class="{{ className }}" t-ref="root">
|
||||
<t t-if="channelMemberListView.channel.orderedOnlineMembers.length > 0">
|
||||
<ChannelMemberListCategory category="'online'" channelMemberListView="channelMemberListView"/>
|
||||
<t t-if="channelMemberListView.onlineCategoryView">
|
||||
<ChannelMemberListCategory record="channelMemberListView.onlineCategoryView" category="'online'" channelMemberListView="channelMemberListView"/>
|
||||
</t>
|
||||
<t t-if="channelMemberListView.channel.orderedOfflineMembers.length > 0">
|
||||
<ChannelMemberListCategory category="'offline'" channelMemberListView="channelMemberListView"/>
|
||||
<t t-if="channelMemberListView.offlineCategoryView">
|
||||
<ChannelMemberListCategory record="channelMemberListView.offlineCategoryView" category="'offline'" channelMemberListView="channelMemberListView"/>
|
||||
</t>
|
||||
<t t-if="channelMemberListView.channel.unknownMemberCount === 1">
|
||||
<span class="mx-2 mt-2">And 1 other member.</span>
|
||||
|
||||
+8
@@ -15,6 +15,13 @@ export class ChannelMemberListCategory extends Component {
|
||||
return this.props.channelMemberListView;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {ChannelMemberListCategoryView}
|
||||
*/
|
||||
get record() {
|
||||
return this.props.record;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Partner[]}
|
||||
*/
|
||||
@@ -57,6 +64,7 @@ Object.assign(ChannelMemberListCategory, {
|
||||
props: {
|
||||
category: String,
|
||||
channelMemberListView: Object,
|
||||
record: Object,
|
||||
},
|
||||
template: 'mail.ChannelMemberListCategory',
|
||||
});
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { registerModel } from '@mail/model/model_core';
|
||||
import { one } from '@mail/model/model_field';
|
||||
|
||||
registerModel({
|
||||
name: 'ChannelMemberListCategoryView',
|
||||
identifyingFields: [['channelMemberListViewOwnerAsOffline', 'channelMemberListViewOwnerAsOnline']],
|
||||
fields: {
|
||||
channelMemberListViewOwnerAsOffline: one('ChannelMemberListView', {
|
||||
inverse: 'offlineCategoryView',
|
||||
readonly: true,
|
||||
}),
|
||||
channelMemberListViewOwnerAsOnline: one('ChannelMemberListView', {
|
||||
inverse: 'onlineCategoryView',
|
||||
readonly: true,
|
||||
}),
|
||||
},
|
||||
});
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import { registerModel } from '@mail/model/model_core';
|
||||
import { one } from '@mail/model/model_field';
|
||||
import { clear, replace } from '@mail/model/model_field_command';
|
||||
import { clear, insertAndReplace, replace } from '@mail/model/model_field_command';
|
||||
|
||||
registerModel({
|
||||
name: 'ChannelMemberListView',
|
||||
@@ -21,6 +21,26 @@ registerModel({
|
||||
}
|
||||
return clear();
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
* @returns {FieldCommand}
|
||||
*/
|
||||
_computeOfflineCategoryView() {
|
||||
if (this.channel && this.channel.orderedOfflineMembers.length > 0) {
|
||||
return insertAndReplace();
|
||||
}
|
||||
return clear();
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
* @returns {FieldCommand}
|
||||
*/
|
||||
_computeOnlineCategoryView() {
|
||||
if (this.channel && this.channel.orderedOnlineMembers.length > 0) {
|
||||
return insertAndReplace();
|
||||
}
|
||||
return clear();
|
||||
},
|
||||
},
|
||||
fields: {
|
||||
channel: one('Thread', {
|
||||
@@ -31,6 +51,16 @@ registerModel({
|
||||
inverse: 'channelMemberListView',
|
||||
readonly: true,
|
||||
}),
|
||||
offlineCategoryView: one('ChannelMemberListCategoryView', {
|
||||
compute: '_computeOfflineCategoryView',
|
||||
inverse: 'channelMemberListViewOwnerAsOffline',
|
||||
isCausal: true,
|
||||
}),
|
||||
onlineCategoryView: one('ChannelMemberListCategoryView', {
|
||||
compute: '_computeOnlineCategoryView',
|
||||
inverse: 'channelMemberListViewOwnerAsOnline',
|
||||
isCausal: true,
|
||||
}),
|
||||
threadViewOwner: one('ThreadView', {
|
||||
inverse: 'channelMemberListView',
|
||||
readonly: true,
|
||||
|
||||
Reference in New Issue
Block a user