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>
46 lines
1.0 KiB
JavaScript
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,
|
|
};
|
|
|
|
});
|