diff --git a/addons/knowledge/static/src/js/knowledge_controller.js b/addons/knowledge/static/src/js/knowledge_controller.js index 4d3132f1664..61ac267665d 100644 --- a/addons/knowledge/static/src/js/knowledge_controller.js +++ b/addons/knowledge/static/src/js/knowledge_controller.js @@ -48,6 +48,19 @@ const KnowledgeArticleFormController = FormController.extend({ this._super.apply(this, arguments); this.onFieldSavedListeners = new Map(); }, + /** + * If a reload is called with param 'keepChanges', only the chatter needs + * to be updated, no need for a full reload + * + * @override + */ + reload: function (params) { + if (params && params.keepChanges) { + return this.renderer.updateChatter(); + } else { + return this._super.apply(this, arguments); + } + }, /** * @override */ diff --git a/addons/knowledge/static/src/js/knowledge_renderers.js b/addons/knowledge/static/src/js/knowledge_renderers.js index 3c55806ff84..dafadca2b37 100644 --- a/addons/knowledge/static/src/js/knowledge_renderers.js +++ b/addons/knowledge/static/src/js/knowledge_renderers.js @@ -45,6 +45,21 @@ const KnowledgeArticleFormRenderer = FormRenderer.extend(KnowledgeTreePanelMixin hasMessageIds: true, }; }, + /** + * Called when the chatter triggers a reload on the Form view with the + * param 'keepChanges=true'. In this case, we only need to update the + * chatter. + * + * @returns {Promise} + */ + updateChatter: function () { + if (this._chatterContainerComponent && this.state.res_id) { + const props = this._makeChatterContainerProps(); + return this._chatterContainerComponent.update(props); + } + this._closeChatter(); + return Promise.resolve(); + }, /** * @private */