Files
enterprise-addons/website_helpdesk_livechat/static/src/message_patch.js
T

45 lines
1.6 KiB
JavaScript

import { Message } from "@mail/core/common/message";
import { markup } from "@odoo/owl";
import { createDocumentFragmentFromContent, setElementContent } from "@web/core/utils/html";
import { patch } from "@web/core/utils/patch";
function addNewTicketsToMessage(oldMessage, newElement) {
const parsedDoc = createDocumentFragmentFromContent(oldMessage);
const loadMoreDiv = parsedDoc.querySelector(".o_load_more");
if (loadMoreDiv) {
loadMoreDiv.parentElement.removeChild(loadMoreDiv);
}
const tempContainer = parsedDoc.createElement("div");
setElementContent(tempContainer, newElement);
const bodyElement = parsedDoc.querySelector(".o_mail_notification");
while (tempContainer.firstChild) {
bodyElement.appendChild(tempContainer.firstChild);
}
return markup(parsedDoc.documentElement.outerHTML);
}
patch(Message.prototype, {
async loadMoreTickets(message, listKeywords, loadCounter) {
const ticketsHTML = await this.env.services.orm.call(
"discuss.channel",
"fetch_ticket_by_keyword",
[this.props.message.resId],
{
list_keywords: listKeywords.split(" "),
load_counter: parseInt(loadCounter),
}
);
message.body = addNewTicketsToMessage(message.body, markup(ticketsHTML));
},
onClick(ev) {
const { oeLst, oeLoadCounter, oeType } = ev.target.dataset;
if (oeType == "load") {
this.loadMoreTickets(this.props.message, oeLst, oeLoadCounter);
return;
}
super.onClick(ev);
},
});