diff options
| author | Sébastien Theys <seb@odoo.com> | 2020-06-26 09:32:32 +0000 |
|---|---|---|
| committer | Sébastien Theys <seb@odoo.com> | 2020-06-26 11:21:35 +0000 |
| commit | 1c058b72d83da3be1068961305577b0ad2ca1a2a (patch) | |
| tree | c6bae7618cbe91424c4174fca2e9da39610f4124 /addons/mail/static/src/utils | |
| parent | dc011d12463df07ac75931a5ad332aac12c020a4 (diff) | |
[FIX] mail: fix (inbox reply) composer event handlers (and discard)
task-2092950
closes odoo/odoo#53731
X-original-commit: c29f5776594c4d2278ce163a78d8eb917fb672c0
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/mail/static/src/utils')
| -rw-r--r-- | addons/mail/static/src/utils/utils.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/addons/mail/static/src/utils/utils.js b/addons/mail/static/src/utils/utils.js index da0855437f7..8112eeca980 100644 --- a/addons/mail/static/src/utils/utils.js +++ b/addons/mail/static/src/utils/utils.js @@ -12,6 +12,36 @@ const { //------------------------------------------------------------------------------ const classPatchMap = new WeakMap(); +const eventHandledWeakMap = new WeakMap(); + +/** + * Returns whether the given event has been handled with the given markName. + * + * @param {Event} ev + * @param {string} markName + * @returns {boolean} + */ +function isEventHandled(ev, markName) { + if (!eventHandledWeakMap.get(ev)) { + return false; + } + return eventHandledWeakMap.get(ev).includes(markName); +} + +/** + * Marks the given event as handled by the given markName. Useful to allow + * handlers in the propagation chain to make a decision based on what has + * already been done. + * + * @param {Event} ev + * @param {string} markName + */ +function markEventHandled(ev, markName) { + if (!eventHandledWeakMap.get(ev)) { + eventHandledWeakMap.set(ev, []); + } + eventHandledWeakMap.get(ev).push(markName); +} /** * Wait a task tick, so that anything in micro-task queue that can be processed @@ -117,6 +147,8 @@ function unpatchInstanceMethods(Class, patchName) { //------------------------------------------------------------------------------ return { + isEventHandled, + markEventHandled, nextTick, patchClassMethods, patchInstanceMethods, |
