hr/static/src/thread_service_patch.js
Данил Воробьев 1ddfcf9f6f initial commit
2024-05-03 09:32:20 +00:00

56 lines
2.0 KiB
JavaScript

/** @odoo-module */
import { _t } from "@web/core/l10n/translation";
import { ThreadService } from "@mail/core/common/thread_service";
import { patch } from "@web/core/utils/patch";
/** @type {import("@mail/core/common/thread_service").ThreadService} */
const threadServicePatch = {
async getChat(person) {
const { employeeId } = person;
if (!employeeId) {
return super.getChat(person);
}
let employee = this.store.employees[employeeId];
if (!employee) {
this.store.employees[employeeId] = { id: employeeId };
employee = this.store.employees[employeeId];
}
if (!employee.user_id && !employee.hasCheckedUser) {
employee.hasCheckedUser = true;
const [employeeData] = await this.orm.silent.read(
"hr.employee.public",
[employee.id],
["user_id", "user_partner_id"],
{
context: { active_test: false },
}
);
if (employeeData) {
employee.user_id = employeeData.user_id[0];
let user = this.store.users[employee.user_id];
if (!user) {
this.store.users[employee.user_id] = { id: employee.user_id };
user = this.store.users[employee.user_id];
}
user.partner_id = employeeData.user_partner_id[0];
this.store.Persona.insert({
displayName: employeeData.user_partner_id[1],
id: employeeData.user_partner_id[0],
type: "partner",
});
}
}
if (!employee.user_id) {
this.notificationService.add(
_t("You can only chat with employees that have a dedicated user."),
{ type: "info" }
);
return;
}
return super.getChat({ userId: employee.user_id });
},
};
patch(ThreadService.prototype, threadServicePatch);