diff options
author | fiaxh <git@lightrise.org> | 2022-01-08 21:35:58 +0100 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2022-01-08 21:35:58 +0100 |
commit | 975b37c498f2611bc7f13017d4491961426a8a7f (patch) | |
tree | 8cbc42c8fcfc2873166d9f3b4d5cadb99fcb5480 | |
parent | e40de726312638b1410da6e4b21d6a8ce818eddc (diff) | |
download | dino-975b37c498f2611bc7f13017d4491961426a8a7f.tar.gz dino-975b37c498f2611bc7f13017d4491961426a8a7f.zip |
Stop making superfluous requests when joining a MUC
Don't request legacy bookmarks on every muc join (when again setting autojoin) fixes #260
Don't query member/admin/owner affiliations on every MUC join
-rw-r--r-- | libdino/src/service/muc_manager.vala | 9 | ||||
-rw-r--r-- | xmpp-vala/src/module/xep/0045_muc/module.vala | 6 | ||||
-rw-r--r-- | xmpp-vala/src/module/xep/0048_bookmarks.vala | 3 |
3 files changed, 6 insertions, 12 deletions
diff --git a/libdino/src/service/muc_manager.vala b/libdino/src/service/muc_manager.vala index 05473647..a508f819 100644 --- a/libdino/src/service/muc_manager.vala +++ b/libdino/src/service/muc_manager.vala @@ -54,7 +54,8 @@ public class MucManager : StreamInteractionModule, Object { }); } - public async Muc.JoinResult? join(Account account, Jid jid, string? nick, string? password) { + // already_autojoin: Without this flag we'd be retrieving bookmarks (to check for autojoin) from the sender on every join + public async Muc.JoinResult? join(Account account, Jid jid, string? nick, string? password, bool already_autojoin = false) { XmppStream? stream = stream_interactor.get_stream(account); if (stream == null) return null; @@ -84,7 +85,7 @@ public class MucManager : StreamInteractionModule, Object { if (res.nick != null) { // Join completed enter_errors.unset(jid); - set_autojoin(account, stream, jid, nick, password); + if (!already_autojoin) set_autojoin(account, stream, jid, nick, password); stream_interactor.get_module(MessageProcessor.IDENTITY).send_unsent_muc_messages(account, jid); Conversation joined_conversation = stream_interactor.get_module(ConversationManager.IDENTITY).create_conversation(jid, account, Conversation.Type.GROUPCHAT); @@ -487,7 +488,7 @@ public class MucManager : StreamInteractionModule, Object { } } if (!is_active || !is_joined(conference.jid, account)) { - join.begin(account, conference.jid, conference.nick, conference.password); + join.begin(account, conference.jid, conference.nick, conference.password, true); } } @@ -560,7 +561,7 @@ public class MucManager : StreamInteractionModule, Object { Timeout.add_seconds(10, () => { if (joined || !mucs_todo.has_key(account) || stream_interactor.get_stream(account) != stream) return false; - join.begin(account, jid.bare_jid, jid.resourcepart, null); + join.begin(account, jid.bare_jid, jid.resourcepart, null, true); return false; }); } diff --git a/xmpp-vala/src/module/xep/0045_muc/module.vala b/xmpp-vala/src/module/xep/0045_muc/module.vala index c9445f7e..e8711742 100644 --- a/xmpp-vala/src/module/xep/0045_muc/module.vala +++ b/xmpp-vala/src/module/xep/0045_muc/module.vala @@ -342,11 +342,6 @@ public class Module : XmppStreamModule { if (status_codes.contains(StatusCode.SELF_PRESENCE)) { Jid bare_jid = presence.from.bare_jid; if (flag.get_enter_id(bare_jid) != null) { - - query_affiliation.begin(stream, bare_jid, "member"); - query_affiliation.begin(stream, bare_jid, "admin"); - query_affiliation.begin(stream, bare_jid, "owner"); - flag.finish_muc_enter(bare_jid); var join_result = new JoinResult() { nick=presence.from.resourcepart, newly_created=status_codes.contains(StatusCode.NEW_ROOM_CREATED) }; flag.enter_futures[bare_jid].set_value(join_result); @@ -458,7 +453,6 @@ public class Module : XmppStreamModule { .put_attribute("affiliation", affiliation)) ) { to=jid }; - Iq.Stanza iq_result = yield stream.get_module(Iq.Module.IDENTITY).send_iq_async(stream, iq); if (iq_result.is_error()) return null; diff --git a/xmpp-vala/src/module/xep/0048_bookmarks.vala b/xmpp-vala/src/module/xep/0048_bookmarks.vala index 90a0c2e7..46814e4a 100644 --- a/xmpp-vala/src/module/xep/0048_bookmarks.vala +++ b/xmpp-vala/src/module/xep/0048_bookmarks.vala @@ -7,7 +7,6 @@ public class Module : BookmarksProvider, XmppStreamModule { public static ModuleIdentity<Module> IDENTITY = new ModuleIdentity<Module>(NS_URI, "0048_bookmarks_module"); public async Set<Conference>? get_conferences(XmppStream stream) { - StanzaNode get_node = new StanzaNode.build("storage", NS_URI).add_self_xmlns(); StanzaNode? result_node = yield stream.get_module(PrivateXmlStorage.Module.IDENTITY).retrieve(stream, get_node); if (result_node == null) return null; @@ -38,7 +37,7 @@ public class Module : BookmarksProvider, XmppStreamModule { conference_node.put_node(new StanzaNode.build("nick", NS_URI) .put_node(new StanzaNode.text(conference.nick))); } - // TODO (?) Bookmarks 2 currently don't define a password + // TODO (?) Bookmarks 2 currently doesn't define a password storage_node.put_node(conference_node); } } |