Files
odoo_source/addons/mail/static/src/model/model_field_command.js
T
Sébastien Theys 44b557777f [FIX] mail: ignore undefined in JS fields create/write
Passing a field containing `undefined` should lead to the same result as not
passing the field.

Fields that relied on `undefined` as a value have been changed to use the newly
introduced `clear` command, that resets a field to its default value (often
that is equal to `undefined`).

task-2336491

closes odoo/odoo#58314

X-original-commit: b18824485483564d2ab80f41914a3548aa528ae0
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2020-09-23 10:19:14 +00:00

46 lines
1.0 KiB
JavaScript

odoo.define('mail/static/src/model/model_field_command.js', function (require) {
'use strict';
/**
* Allows field update to detect if the value it received is a command to
* execute (in which was it will be an instance of this class) or an actual
* value to set (in all other cases).
*/
class FieldCommand {
/**
* @constructor
* @param {function} func function to call when executing this command
*/
constructor(func) {
this.func = func;
}
/**
* @param {ModelField} field
* @param {mail.model} record
* @param {options} [options]
* @returns {boolean} whether the value changed for the current field
*/
execute(field, record, options) {
return this.func(field, record, options);
}
}
/**
* Returns a clear command to give to the model manager at create/update.
*/
function clear() {
return new FieldCommand((field, record, options) =>
field.clear(record, options)
);
}
return {
// class
FieldCommand,
// shortcuts
clear,
};
});