From f9dcb907f046b485b4bc442448e80b2988aaf77b Mon Sep 17 00:00:00 2001 From: tsm-odoo Date: Thu, 31 Aug 2023 14:06:30 +0200 Subject: [PATCH] [IMP] im_livechat, mail: improve onchange method This commit improves the mail `onChange` method by adding the support for multiple keys. This will make the code shorter and easier to read. closes odoo/odoo#133778 Signed-off-by: Didier Debondt (did) --- .../static/src/embed/core/thread_model_patch.js | 14 +------------- .../static/src/discuss/call/common/rtc_service.js | 15 ++++----------- addons/mail/static/src/utils/common/misc.js | 8 +++++++- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/addons/im_livechat/static/src/embed/core/thread_model_patch.js b/addons/im_livechat/static/src/embed/core/thread_model_patch.js index 3782206e62d..f31bf185fd8 100644 --- a/addons/im_livechat/static/src/embed/core/thread_model_patch.js +++ b/addons/im_livechat/static/src/embed/core/thread_model_patch.js @@ -32,23 +32,11 @@ patch(Thread, { author: thread.operator, }); } - onChange(thread, "state", () => { + onChange(thread, ["state", "seen_message_id", "message_unread_counter"], () => { if (![SESSION_STATE.CLOSED, SESSION_STATE.NONE].includes(livechatService.state)) { livechatService.updateSession({ state: thread.state, - }); - } - }); - onChange(thread, "seen_message_id", () => { - if (![SESSION_STATE.CLOSED, SESSION_STATE.NONE].includes(livechatService.state)) { - livechatService.updateSession({ seen_message_id: thread.seen_message_id, - }); - } - }); - onChange(thread, "message_unread_counter", () => { - if (![SESSION_STATE.CLOSED, SESSION_STATE.NONE].includes(livechatService.state)) { - livechatService.updateSession({ channel: thread.channel, }); } diff --git a/addons/mail/static/src/discuss/call/common/rtc_service.js b/addons/mail/static/src/discuss/call/common/rtc_service.js index 0cdb25bc5e5..f8cc429580d 100644 --- a/addons/mail/static/src/discuss/call/common/rtc_service.js +++ b/addons/mail/static/src/discuss/call/common/rtc_service.js @@ -142,22 +142,15 @@ export class Rtc { this.toggleVideo("camera", true); } }); - onChange(this.userSettingsService, "edgeBlurAmount", () => { + onChange(this.userSettingsService, ["edgeBlurAmount", "backgroundBlurAmount"], () => { if (this.blurManager) { this.blurManager.edgeBlur = this.userSettingsService.edgeBlurAmount; - } - }); - onChange(this.userSettingsService, "backgroundBlurAmount", () => { - if (this.blurManager) { this.blurManager.backgroundBlur = this.userSettingsService.backgroundBlurAmount; } }); - onChange(this.userSettingsService, "voiceActivationThreshold", async () => { - await this.linkVoiceActivation(); - }); - onChange(this.userSettingsService, "usePushToTalk", async () => { - await this.linkVoiceActivation(); - }); + onChange(this.userSettingsService, ["voiceActivationThreshold", "usePushToTalk"], () => + this.linkVoiceActivation() + ); onChange(this.userSettingsService, "audioInputDeviceId", async () => { if (this.state.selfSession) { await this.resetAudioTrack({ force: true }); diff --git a/addons/mail/static/src/utils/common/misc.js b/addons/mail/static/src/utils/common/misc.js index 4b91565cb88..92cdbba480d 100644 --- a/addons/mail/static/src/utils/common/misc.js +++ b/addons/mail/static/src/utils/common/misc.js @@ -41,10 +41,16 @@ export function isDragSourceExternalFile(dataTransfer) { /** * @param {Object} target - * @param {string} key + * @param {string|string[]} key * @param {Function} callback */ export function onChange(target, key, callback) { + if (Array.isArray(key)) { + for (const k of key) { + onChange(target, k, callback); + } + return; + } const proxy = reactive(target, () => { void proxy[key]; if (proxy[key] instanceof Object) {