summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js
diff options
context:
space:
mode:
authorJulien Giannone <jgi@odoo.com>2019-04-04 09:09:57 +0000
committerJulien Giannone <jgi@odoo.com>2019-04-23 12:05:31 +0000
commite5479fcfdb76bdbf9301fb140d873483bafdb9e4 (patch)
tree70947b91f758bd02af13e9074239bf2afdfde72e /addons/mail/static/src/js
parent9b90d8727da9df6eb7ce756c4f9ffb0973e6ea65 (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.js7
-rw-r--r--addons/mail/static/src/js/discuss.js4
-rw-r--r--addons/mail/static/src/js/thread_windows/abstract_thread_window.js4
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();
});
},
/**