From bbfac9115500405095210f046dbccef913d03e04 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Fri, 12 Jan 2018 21:13:46 +0100 Subject: Fix certain Slack specific issues (using host-based workarounds) --- libdino/src/service/muc_manager.vala | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'libdino/src/service/muc_manager.vala') diff --git a/libdino/src/service/muc_manager.vala b/libdino/src/service/muc_manager.vala index 4689bdcf..23c234a4 100644 --- a/libdino/src/service/muc_manager.vala +++ b/libdino/src/service/muc_manager.vala @@ -226,9 +226,13 @@ public class MucManager : StreamInteractionModule, Object { private void on_stream_negotiated(Account account, XmppStream stream) { stream.get_module(Xep.Bookmarks.Module.IDENTITY).get_conferences(stream, (stream, conferences) => { - foreach (Xep.Bookmarks.Conference bookmark in conferences) { - if (bookmark.autojoin) { - join(account, bookmark.jid, bookmark.nick, bookmark.password); + if (conferences == null) { + join_all_active(account); + } else { + foreach (Xep.Bookmarks.Conference bookmark in conferences) { + if (bookmark.autojoin) { + join(account, bookmark.jid, bookmark.nick, bookmark.password); + } } } }); @@ -255,6 +259,15 @@ public class MucManager : StreamInteractionModule, Object { } } + private void join_all_active(Account account) { + Gee.List conversations = stream_interactor.get_module(ConversationManager.IDENTITY).get_active_conversations(account); + foreach (Conversation conversation in conversations) { + if (conversation.type_ == Conversation.Type.GROUPCHAT && conversation.nickname != null) { + join(account, conversation.counterpart, conversation.nickname, null); + } + } + } + private void sync_autojoin_active(Account account, Gee.List conferences) { Gee.List conversations = stream_interactor.get_module(ConversationManager.IDENTITY).get_active_conversations(account); leave_non_autojoin(account, conferences, conversations); -- cgit v1.3