From e1727c98fe00b2ee02a4ebf1bcca6c43a426530e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Fri, 13 Nov 2015 11:20:15 +0100 Subject: [PATCH] [FIX] mail: prevent race conditions when joining channels it should now be impossible to join a channel several times when loading a browser tab --- addons/mail/static/src/js/chat_manager.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/mail/static/src/js/chat_manager.js b/addons/mail/static/src/js/chat_manager.js index e25016a980a..0bb36638f49 100644 --- a/addons/mail/static/src/js/chat_manager.js +++ b/addons/mail/static/src/js/chat_manager.js @@ -19,6 +19,7 @@ var ChannelModel = new Model('mail.channel', session.context); //---------------------------------------------------------------------------------- var messages = []; var channels = []; +var channel_defs = {}; var emojis = []; var emoji_substitutions = {}; var needaction_counter = 0; @@ -535,11 +536,16 @@ var chat_manager = { .then(add_channel); }, join_channel: function (channel_id, options) { - return ChannelModel + if (channel_id in channel_defs) { + return channel_defs[channel_id]; + } + var def = ChannelModel .call('channel_join_and_get_info', [[channel_id]]) .then(function (result) { add_channel(result, options); }); + channel_defs[channel_id] = def; + return def; }, unsubscribe: function (channel) {