diff options
| author | Julien Giannone <jgi@odoo.com> | 2019-04-04 09:09:57 +0000 |
|---|---|---|
| committer | Julien Giannone <jgi@odoo.com> | 2019-04-23 12:05:31 +0000 |
| commit | e5479fcfdb76bdbf9301fb140d873483bafdb9e4 (patch) | |
| tree | 70947b91f758bd02af13e9074239bf2afdfde72e /addons/mail/static/src/js | |
| parent | 9b90d8727da9df6eb7ce756c4f9ffb0973e6ea65 (diff) | |
[IMP] mail: prevent message loss during connection issue
Before the changes, when a message was posted (on Discuss or in
the chat window), the composer was cleared directly as it didn't
wait for the rpc response. If there was latency or a connection
loss, the message disappeared from the composer but took time to
appear in the content window or didn't appear at all and was lost.
Now, the composer waits for the rpc response and then is cleared.
Task #1957856
closes odoo/odoo#32422
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Diffstat (limited to 'addons/mail/static/src/js')
| -rw-r--r-- | addons/mail/static/src/js/composers/basic_composer.js | 7 | ||||
| -rw-r--r-- | addons/mail/static/src/js/discuss.js | 4 | ||||
| -rw-r--r-- | addons/mail/static/src/js/thread_windows/abstract_thread_window.js | 4 |
3 files changed, 10 insertions, 5 deletions
diff --git a/addons/mail/static/src/js/composers/basic_composer.js b/addons/mail/static/src/js/composers/basic_composer.js index 72936152ae5..c84296d55d1 100644 --- a/addons/mail/static/src/js/composers/basic_composer.js +++ b/addons/mail/static/src/js/composers/basic_composer.js @@ -510,9 +510,10 @@ var BasicComposer = Widget.extend({ clearTimeout(this._cannedTimeout); var self = this; this._preprocessMessage().then(function (message) { - self.trigger('post_message', message); - self._clearComposerOnSend(); - self.$input.focus(); + self.trigger('post_message', message, function() { + self._clearComposerOnSend(); + self.$input.focus(); + }); }); }, /** diff --git a/addons/mail/static/src/js/discuss.js b/addons/mail/static/src/js/discuss.js index 4e88434f86d..8acd52d99c2 100644 --- a/addons/mail/static/src/js/discuss.js +++ b/addons/mail/static/src/js/discuss.js @@ -1461,8 +1461,9 @@ var Discuss = AbstractAction.extend({ /** * @private * @param {Object} messageData + * @param {Function} callback */ - _onPostMessage: function (messageData) { + _onPostMessage: function (messageData, callback) { var self = this; var options = {}; if (this._selectedMessage) { @@ -1483,6 +1484,7 @@ var Discuss = AbstractAction.extend({ } else { self._threadWidget.scrollToBottom(); } + callback(); }); }, /** diff --git a/addons/mail/static/src/js/thread_windows/abstract_thread_window.js b/addons/mail/static/src/js/thread_windows/abstract_thread_window.js index f09b78b8d3f..0af2d1080db 100644 --- a/addons/mail/static/src/js/thread_windows/abstract_thread_window.js +++ b/addons/mail/static/src/js/thread_windows/abstract_thread_window.js @@ -394,8 +394,9 @@ var AbstractThreadWindow = Widget.extend({ * * @private * @param {Object} messageData + * @param {Function} callback */ - _postMessage: function (messageData) { + _postMessage: function (messageData, callback) { var self = this; if (!this.hasThread()) { return; @@ -403,6 +404,7 @@ var AbstractThreadWindow = Widget.extend({ this._thread.postMessage(messageData) .then(function () { self._threadWidget.scrollToBottom(); + callback(); }); }, /** |
