support for XEP-0172
This commit is contained in:
parent
2ae5cba932
commit
9c48437b09
2 changed files with 16 additions and 9 deletions
|
@ -204,7 +204,9 @@ void RosterManager::sendBuddySubscribePresence(Buddy *buddy) {
|
|||
response->setTo(m_user->getJID());
|
||||
response->setFrom(buddy->getJID());
|
||||
response->setType(Swift::Presence::Subscribe);
|
||||
// TODO: NICKNAME
|
||||
if (!buddy->getAlias().empty()) {
|
||||
response->addPayload(boost::make_shared<Swift::Nickname>(buddy->getAlias()));
|
||||
}
|
||||
m_component->getStanzaChannel()->sendPresence(response);
|
||||
}
|
||||
|
||||
|
@ -231,14 +233,7 @@ void RosterManager::setBuddyCallback(Buddy *buddy) {
|
|||
sendBuddyRosterPush(buddy);
|
||||
}
|
||||
else {
|
||||
// Send RIE only if there's resource which supports it.
|
||||
std::vector<Swift::JID> jidWithRIE = m_user->getJIDWithFeature("http://jabber.org/protocol/rosterx");
|
||||
if (!jidWithRIE.empty()) {
|
||||
m_RIETimer->start();
|
||||
}
|
||||
else {
|
||||
sendBuddySubscribePresence(buddy);
|
||||
}
|
||||
m_RIETimer->start();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ class RosterManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
|
|||
CPPUNIT_TEST(setBuddy);
|
||||
CPPUNIT_TEST(sendCurrentPresences);
|
||||
CPPUNIT_TEST(sendCurrentPresence);
|
||||
CPPUNIT_TEST(sendBuddySubscribePresence);
|
||||
CPPUNIT_TEST(removeBuddy);
|
||||
CPPUNIT_TEST(subscribeExistingBuddy);
|
||||
CPPUNIT_TEST(subscribeNewBuddy);
|
||||
|
@ -59,6 +60,17 @@ class RosterManagerTest : public CPPUNIT_NS :: TestFixture, public BasicTest {
|
|||
m_buddy = buddy->getName();
|
||||
}
|
||||
|
||||
void sendBuddySubscribePresence() {
|
||||
add2Buddies();
|
||||
received.clear();
|
||||
User *user = userManager->getUser("user@localhost");
|
||||
user->getRosterManager()->sendBuddySubscribePresence(user->getRosterManager()->getBuddy("buddy1"));
|
||||
CPPUNIT_ASSERT_EQUAL(1, (int) received.size());
|
||||
CPPUNIT_ASSERT(getStanza(received[0])->getPayload<Swift::Nickname>());
|
||||
CPPUNIT_ASSERT_EQUAL(std::string("Buddy 1"), getStanza(received[0])->getPayload<Swift::Nickname>()->getNickname());
|
||||
|
||||
}
|
||||
|
||||
void setBuddy() {
|
||||
add2Buddies();
|
||||
CPPUNIT_ASSERT_EQUAL(2, (int) received.size());
|
||||
|
|
Loading…
Add table
Reference in a new issue