diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/mail/static/src/models/dialog_manager | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/mail/static/src/models/dialog_manager')
| -rw-r--r-- | addons/mail/static/src/models/dialog_manager/dialog_manager.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/addons/mail/static/src/models/dialog_manager/dialog_manager.js b/addons/mail/static/src/models/dialog_manager/dialog_manager.js new file mode 100644 index 00000000..4d86e340 --- /dev/null +++ b/addons/mail/static/src/models/dialog_manager/dialog_manager.js @@ -0,0 +1,52 @@ +odoo.define('mail/static/src/models/dialog_manager/dialog_manager.js', function (require) { +'use strict'; + +const { registerNewModel } = require('mail/static/src/model/model_core.js'); +const { one2many } = require('mail/static/src/model/model_field.js'); + +function factory(dependencies) { + + class DialogManager extends dependencies['mail.model'] { + + //---------------------------------------------------------------------- + // Public + //---------------------------------------------------------------------- + + /** + * @param {string} modelName + * @param {Object} [recordData] + */ + open(modelName, recordData) { + if (!modelName) { + throw new Error("Dialog should have a link to a model"); + } + const Model = this.env.models[modelName]; + if (!Model) { + throw new Error(`No model exists with name ${modelName}`); + } + const record = Model.create(recordData); + const dialog = this.env.models['mail.dialog'].create({ + manager: [['link', this]], + record: [['link', record]], + }); + return dialog; + } + + } + + DialogManager.fields = { + // FIXME: dependent on implementation that uses insert order in relations!! + dialogs: one2many('mail.dialog', { + inverse: 'manager', + isCausal: true, + }), + }; + + DialogManager.modelName = 'mail.dialog_manager'; + + return DialogManager; +} + +registerNewModel('mail.dialog_manager', factory); + +}); |
