diff options
author | Kevin Smith <git@kismith.co.uk> | 2010-03-22 20:37:30 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2010-03-22 20:37:30 (GMT) |
commit | 0c377fa93ffd8538da9e71ddc71d4e8c07600a22 (patch) | |
tree | fa655b09f94cdb9018bfad4aa1de3dba2d345969 /Swift/Controllers | |
parent | 1ebd045cadb3585c846ea38c63d508e5aa6ec1e7 (diff) | |
download | swift-contrib-0c377fa93ffd8538da9e71ddc71d4e8c07600a22.zip swift-contrib-0c377fa93ffd8538da9e71ddc71d4e8c07600a22.tar.bz2 |
Can now accept roster subscriptions.
Diffstat (limited to 'Swift/Controllers')
-rw-r--r-- | Swift/Controllers/RosterController.cpp | 8 | ||||
-rw-r--r-- | Swift/Controllers/XMPPRosterController.cpp | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/Swift/Controllers/RosterController.cpp b/Swift/Controllers/RosterController.cpp index 4c55ea8..8d13057 100644 --- a/Swift/Controllers/RosterController.cpp +++ b/Swift/Controllers/RosterController.cpp @@ -142,6 +142,7 @@ void RosterController::handleIncomingPresence(boost::shared_ptr<Presence> newPre } void RosterController::handleSubscriptionRequest(const JID& jid, const String& message) { + //FIXME: If already subscribed, auto-subscribe SubscriptionRequestEvent* eventPointer = new SubscriptionRequestEvent(jid, message); eventPointer->onAccept.connect(boost::bind(&RosterController::handleSubscriptionRequestAccepted, this, eventPointer)); eventPointer->onDecline.connect(boost::bind(&RosterController::handleSubscriptionRequestDeclined, this, eventPointer)); @@ -150,11 +151,14 @@ void RosterController::handleSubscriptionRequest(const JID& jid, const String& m } void RosterController::handleSubscriptionRequestAccepted(SubscriptionRequestEvent* event) { - //FIXME: do something + presenceOracle_->confirmSubscription(event->getJID()); + if (!xmppRoster_->containsJID(event->getJID()) || xmppRoster_->getSubscriptionStateForJID(event->getJID()) == RosterItemPayload::None || xmppRoster_->getSubscriptionStateForJID(event->getJID()) == RosterItemPayload::From) { + presenceOracle_->requestSubscription(event->getJID()); + } } void RosterController::handleSubscriptionRequestDeclined(SubscriptionRequestEvent* event) { - //FIXME: do something + presenceOracle_->cancelSubscription(event->getJID()); } void RosterController::handleAvatarChanged(const JID& jid, const String&) { diff --git a/Swift/Controllers/XMPPRosterController.cpp b/Swift/Controllers/XMPPRosterController.cpp index d089cff..01e5169 100644 --- a/Swift/Controllers/XMPPRosterController.cpp +++ b/Swift/Controllers/XMPPRosterController.cpp @@ -37,7 +37,7 @@ void XMPPRosterController::handleRosterReceived(boost::shared_ptr<RosterPayload> if (item.getSubscription() == RosterItemPayload::Remove) { xmppRoster_->removeContact(item.getJID()); } else { - xmppRoster_->addContact(item.getJID(), item.getName(), item.getGroups()); + xmppRoster_->addContact(item.getJID(), item.getName(), item.getGroups(), item.getSubscription()); } } } |