From 3835ab7af6dbc3460f42d6cfa47e217dc3b78ec3 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Sun, 7 May 2017 20:16:13 +0200 Subject: [PATCH] bookmarks: Don't autojoin rooms prematurely by first waiting until chatboxes have been fetched as well. --- docs/source/developer_api.rst | 1 + src/converse-bookmarks.js | 3 ++- src/converse-muc.js | 6 +++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/source/developer_api.rst b/docs/source/developer_api.rst index 032288be3..54abda284 100644 --- a/docs/source/developer_api.rst +++ b/docs/source/developer_api.rst @@ -189,6 +189,7 @@ Converse.js has the following promises: * rosterGroupsFetched * rosterInitialized * statusInitialized +* roomsPanelRendered (only via the `converse-muc` plugin) Below is an example from `converse-muc.js `_ where the `rosterContactsFetched` promise is waited on. The method diff --git a/src/converse-bookmarks.js b/src/converse-bookmarks.js index b4614a2e7..2513af7c0 100644 --- a/src/converse-bookmarks.js +++ b/src/converse-bookmarks.js @@ -470,7 +470,8 @@ }); _converse.emit('bookmarksInitialized'); }; - _converse.on('roomsPanelRendered', initBookmarks); + $.when(_converse.api.waitUntil('chatBoxesFetched'), + _converse.api.waitUntil('roomsPanelRendered')).then(initBookmarks); var afterReconnection = function () { if (!_converse.allow_bookmarks) { diff --git a/src/converse-muc.js b/src/converse-muc.js index fc47a36d4..f3647fbd8 100755 --- a/src/converse-muc.js +++ b/src/converse-muc.js @@ -319,6 +319,10 @@ }, }); + _.extend(_converse.promises, { + 'roomsPanelRendered': new $.Deferred() + }); + _converse.createChatRoom = function (settings) { /* Creates a new chat room, making sure that certain attributes * are correct, for example that the "type" is set to @@ -385,7 +389,7 @@ }); } else { this.fetchMessages(); - _converse.emit('chatRoomOpened', that); + _converse.emit('chatRoomOpened', this); } },