56 lines
2.2 KiB
JavaScript
56 lines
2.2 KiB
JavaScript
|
/* @odoo-module */
|
||
|
|
||
|
import "@mail/../tests/helpers/mock_server/models/res_partner"; // ensure mail overrides are applied first
|
||
|
|
||
|
import { patch } from "@web/core/utils/patch";
|
||
|
import { MockServer } from "@web/../tests/helpers/mock_server";
|
||
|
|
||
|
patch(MockServer.prototype, {
|
||
|
/**
|
||
|
* @override
|
||
|
*/
|
||
|
_mockResPartner_GetChannelsAsMember(ids) {
|
||
|
const partner = this.getRecords("res.partner", [["id", "in", ids]])[0];
|
||
|
const members = this.getRecords("discuss.channel.member", [
|
||
|
["partner_id", "=", partner.id],
|
||
|
["is_pinned", "=", true],
|
||
|
]);
|
||
|
const livechats = this.getRecords("discuss.channel", [
|
||
|
["channel_type", "=", "livechat"],
|
||
|
["channel_member_ids", "in", members.map((member) => member.id)],
|
||
|
]);
|
||
|
return [...super._mockResPartner_GetChannelsAsMember(ids), ...livechats];
|
||
|
},
|
||
|
/**
|
||
|
* @override
|
||
|
*/
|
||
|
_mockResPartnerSearchForChannelInvite(search_term, channel_id, limit = 30) {
|
||
|
const result = super._mockResPartnerSearchForChannelInvite(search_term, channel_id, limit);
|
||
|
const [channel] = this.pyEnv["discuss.channel"].searchRead([["id", "=", channel_id]]);
|
||
|
if (channel.channel_type !== "livechat") {
|
||
|
return result;
|
||
|
}
|
||
|
const activeLivechatPartners = this.pyEnv["im_livechat.channel"]
|
||
|
.searchRead([])
|
||
|
.map(({ available_operator_ids }) => available_operator_ids)
|
||
|
.flat()
|
||
|
.map(
|
||
|
(userId) =>
|
||
|
this.pyEnv["res.users"].searchRead([["id", "=", userId]])[0].partner_id[0]
|
||
|
);
|
||
|
for (const partner of result["partners"]) {
|
||
|
partner.is_available = activeLivechatPartners.includes(partner.id);
|
||
|
if (partner.lang) {
|
||
|
partner.lang_name = this.pyEnv["res.lang"].searchRead([
|
||
|
["code", "=", partner.lang],
|
||
|
])[0].name;
|
||
|
}
|
||
|
partner.invite_by_self_count = this.pyEnv["discuss.channel.member"].searchCount([
|
||
|
["partner_id", "=", partner.id],
|
||
|
["create_uid", "=", this.pyEnv.currentUserId],
|
||
|
]);
|
||
|
}
|
||
|
return result;
|
||
|
},
|
||
|
});
|