diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-04-16 09:11:15 (GMT) |
|---|---|---|
| committer | Richard Maudsley <richard.maudsley@isode.com> | 2014-04-25 09:26:47 (GMT) |
| commit | 4c29d43177cb49625f7c6e731c9618b175071141 (patch) | |
| tree | b08f17551fd219b7ede17043162166f59fbbafbd | |
| parent | b42a5c5849813fe8db3bd3889378a53238cc36f7 (diff) | |
| download | swift-contrib-4c29d43177cb49625f7c6e731c9618b175071141.zip swift-contrib-4c29d43177cb49625f7c6e731c9618b175071141.tar.bz2 | |
Fix MUC invite being treated like impromptu MUC invite.
Change-Id: Iec52f9fabfdcfc3a83681a10d7e0d5f0de2b4ee2
| -rw-r--r-- | Swift/Controllers/Chat/AutoAcceptMUCInviteDecider.h | 14 | ||||
| -rw-r--r-- | Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.cpp | 8 |
2 files changed, 16 insertions, 6 deletions
diff --git a/Swift/Controllers/Chat/AutoAcceptMUCInviteDecider.h b/Swift/Controllers/Chat/AutoAcceptMUCInviteDecider.h index 0f85a8a..d6e069f 100644 --- a/Swift/Controllers/Chat/AutoAcceptMUCInviteDecider.h +++ b/Swift/Controllers/Chat/AutoAcceptMUCInviteDecider.h @@ -1,31 +1,41 @@ /* * Copyright (c) 2013 Tobias Markmann * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + #pragma once #include <Swiften/Roster/XMPPRoster.h> #include <Swiften/Elements/MUCInvitationPayload.h> #include <Swift/Controllers/Settings/SettingsProvider.h> #include <Swift/Controllers/SettingConstants.h> namespace Swift { class AutoAcceptMUCInviteDecider { public: AutoAcceptMUCInviteDecider(const JID& domain, XMPPRoster* roster, SettingsProvider* settings) : domain_(domain), roster_(roster), settings_(settings) { } bool isAutoAcceptedInvite(const JID& from, MUCInvitationPayload::ref invite) { - if (!invite->getIsImpromptu() && !invite->getIsContinuation()) { - return false; + if (!invite->getIsImpromptu()) { + return false; /* always ask the user for normal MUC invites */ + } + + if (invite->getIsContinuation()) { + return true; } std::string auto_accept_mode = settings_->getSetting(SettingConstants::INVITE_AUTO_ACCEPT_MODE); if (auto_accept_mode == "no") { return false; } else if (auto_accept_mode == "presence") { return roster_->getSubscriptionStateForJID(from) == RosterItemPayload::From || roster_->getSubscriptionStateForJID(from) == RosterItemPayload::Both; } else if (auto_accept_mode == "domain") { return roster_->getSubscriptionStateForJID(from) == RosterItemPayload::From || roster_->getSubscriptionStateForJID(from) == RosterItemPayload::Both || from.getDomain() == domain_; diff --git a/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.cpp b/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.cpp index c1cf33d..90590ee 100644 --- a/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.cpp +++ b/Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.cpp @@ -1,23 +1,23 @@ /* - * Copyright (c) 2011 Kevin Smith + * Copyright (c) 2011-2014 Kevin Smith * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include <Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.h> - - +#include <Swiften/Parser/Tree/NullParserElement.h> namespace Swift { void MUCInvitationPayloadParser::handleTree(ParserElement::ref root) { MUCInvitationPayload::ref invite = getPayloadInternal(); invite->setIsContinuation(root->getAttributes().getBoolAttribute("continue", false)); invite->setJID(JID(root->getAttributes().getAttribute("jid"))); invite->setPassword(root->getAttributes().getAttribute("password")); invite->setReason(root->getAttributes().getAttribute("reason")); invite->setThread(root->getAttributes().getAttribute("thread")); - invite->setIsImpromptu(root->getChild("impromptu", "http://swift.im/impromptu") ? true : false); + ParserElement::ref impromptuNode = root->getChild("impromptu", "http://swift.im/impromptu"); + invite->setIsImpromptu(!boost::dynamic_pointer_cast<NullParserElement>(impromptuNode)); } } |
Swift