summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/models/dialog_manager
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/mail/static/src/models/dialog_manager
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (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.js52
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);
+
+});