From 1a58bcce0811ae9837c9382ae6c1a7ee4da2e752 Mon Sep 17 00:00:00 2001 From: Hardik Prajapati Date: Thu, 10 Dec 2020 17:28:13 +0000 Subject: [PATCH] [FIX] mail: Update the kanban record on activity creation/updation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, scheduling the activity from the document chatter does not appear on the kanban record on activity button. and the 'onchange' action receives the ID of the activity that was marked as done and thus the 'Missing record' error So in this commit, on creation and done of activity reload the view to update the record on kanban card. The opportunity is taken to make a pass on all of the "reload" to add the `keepChanges` flag to prevent from losing pending changes on reload, especially useful in form view. closes odoo/odoo#63464 Taskid: 2362964 X-original-commit: 6d75304604687d873b296c630b87bc184e221018 Related: odoo/enterprise#15345 Signed-off-by: Alexandre Kühn (aku) --- addons/mail/static/src/components/activity/activity.js | 5 +++-- .../activity_mark_done_popover.js | 4 ++-- .../src/components/chatter_topbar/chatter_topbar.js | 3 +-- addons/mail/static/src/js/activity.js | 10 +++++----- .../static/src/widgets/form_renderer/form_renderer.js | 6 ++---- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/addons/mail/static/src/components/activity/activity.js b/addons/mail/static/src/components/activity/activity.js index 633c43820d6..1fd16d77464 100644 --- a/addons/mail/static/src/components/activity/activity.js +++ b/addons/mail/static/src/components/activity/activity.js @@ -153,9 +153,10 @@ class Activity extends Component { * @private * @param {MouseEvent} ev */ - _onClickCancel(ev) { + async _onClickCancel(ev) { ev.preventDefault(); - this.activity.deleteServerRecord(); + await this.activity.deleteServerRecord(); + this.trigger('reload', { keepChanges: true }); } /** diff --git a/addons/mail/static/src/components/activity_mark_done_popover/activity_mark_done_popover.js b/addons/mail/static/src/components/activity_mark_done_popover/activity_mark_done_popover.js index 51a44ce5aa1..993c5f84703 100644 --- a/addons/mail/static/src/components/activity_mark_done_popover/activity_mark_done_popover.js +++ b/addons/mail/static/src/components/activity_mark_done_popover/activity_mark_done_popover.js @@ -69,11 +69,11 @@ class ActivityMarkDonePopover extends Component { /** * @private */ - async _onClickDone() { + async _onClickDone() { await this.activity.markAsDone({ feedback: this._feedbackTextareaRef.el.value, }); - this.trigger('reload'); + this.trigger('reload', { keepChanges: true }); } /** diff --git a/addons/mail/static/src/components/chatter_topbar/chatter_topbar.js b/addons/mail/static/src/components/chatter_topbar/chatter_topbar.js index c8912d1816b..aaed5266514 100644 --- a/addons/mail/static/src/components/chatter_topbar/chatter_topbar.js +++ b/addons/mail/static/src/components/chatter_topbar/chatter_topbar.js @@ -99,8 +99,7 @@ class ChatterTopbar extends Component { action, options: { on_close: () => { - this.chatter.thread.refreshActivities(); - this.chatter.thread.refresh(); + this.trigger('reload', { keepChanges: true }); }, }, }); diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js index d7a8f6bf9b2..ae9d914f0f7 100644 --- a/addons/mail/static/src/js/activity.js +++ b/addons/mail/static/src/js/activity.js @@ -201,11 +201,11 @@ var BasicActivity = AbstractField.extend({ if (rslt_action) { self.do_action(rslt_action, { on_close: function () { - self.trigger_up('reload'); + self.trigger_up('reload', { keepChanges: true }); }, }); } else { - self.trigger_up('reload'); + self.trigger_up('reload', { keepChanges: true }); } } ); @@ -272,7 +272,7 @@ var BasicActivity = AbstractField.extend({ activityID: activity.id, attachmentIds: _.pluck(files, 'id') }).then(function () { - self.trigger_up('reload'); + self.trigger_up('reload', { keepChanges: true }); }); }); } @@ -476,7 +476,7 @@ var BasicActivity = AbstractField.extend({ }, }; return this.do_action(action, { on_close: function () { - self.trigger_up('reload'); + self.trigger_up('reload', { keepChanges: true }); } }); }, /** @@ -684,7 +684,7 @@ var KanbanActivity = BasicActivity.extend({ * @private */ _reload: function () { - this.trigger_up('reload', { db_id: this.record_id }); + this.trigger_up('reload', { db_id: this.record_id, keepChanges: true }); }, /** * @override diff --git a/addons/mail/static/src/widgets/form_renderer/form_renderer.js b/addons/mail/static/src/widgets/form_renderer/form_renderer.js index b5612971089..e4c3161c4da 100644 --- a/addons/mail/static/src/widgets/form_renderer/form_renderer.js +++ b/addons/mail/static/src/widgets/form_renderer/form_renderer.js @@ -72,16 +72,14 @@ FormRenderer.include({ this.on('o_chatter_rendered', this, ev => this._onChatterRendered(ev)); if (this.chatterFields.hasRecordReloadOnMessagePosted) { this.on('o_message_posted', this, ev => { - if(!this.state.isDirty()) { - this.trigger_up('reload') - } + this.trigger_up('reload', { keepChanges: true }); }); } if (this.chatterFields.hasRecordReloadOnAttachmentsChanged) { this.on('o_attachments_changed', this, ev => this.trigger_up('reload', { keepChanges: true })); } if (this.chatterFields.hasRecordReloadOnFollowersUpdate) { - owl.Component.env.bus.on('mail.thread:promptAddFollower-closed', this, ev => this.trigger_up('reload')); + owl.Component.env.bus.on('mail.thread:promptAddFollower-closed', this, ev => this.trigger_up('reload', { keepChanges: true })); } }, /**