diff --git a/src/client/presencemanager.cpp b/src/client/presencemanager.cpp index 9a735de5babbbb6bda3ccc72a9d4d47fb9d52f7a..01c6e349eacf4904fd105a998f16c67109eefd35 100644 --- a/src/client/presencemanager.cpp +++ b/src/client/presencemanager.cpp @@ -121,7 +121,9 @@ getSubscriptions(const std::string& accountID) if (auto sipaccount = jami::Manager::instance().getAccount<SIPAccount>(accountID)) { if (auto pres = sipaccount->getPresence()) { - for (const auto& s : pres->getClientSubscriptions()) { + auto subs = pres->getClientSubscriptions(); + ret.reserve(subs.size()); + for (const auto& s : subs) { ret.push_back({ {DRing::Presence::BUDDY_KEY, s->getURI()}, {DRing::Presence::STATUS_KEY, s->isPresent() ? DRing::Presence::ONLINE_KEY : DRing::Presence::OFFLINE_KEY}, @@ -131,11 +133,13 @@ getSubscriptions(const std::string& accountID) } else JAMI_ERR("Presence not initialized"); } else if (auto ringaccount = jami::Manager::instance().getAccount<jami::JamiAccount>(accountID)) { - for (const auto& tracked_id : ringaccount->getTrackedBuddyPresence()) { + const auto& trackedBuddies = ringaccount->getTrackedBuddyPresence(); + ret.reserve(trackedBuddies.size()); + for (const auto& tracked_id : trackedBuddies) { ret.push_back({ - {DRing::Presence::BUDDY_KEY, tracked_id.first}, - {DRing::Presence::STATUS_KEY, tracked_id.second ? DRing::Presence::ONLINE_KEY : DRing::Presence::OFFLINE_KEY} - }); + {DRing::Presence::BUDDY_KEY, tracked_id.first}, + {DRing::Presence::STATUS_KEY, tracked_id.second ? DRing::Presence::ONLINE_KEY : DRing::Presence::OFFLINE_KEY} + }); } } else JAMI_ERR("Could not find account %s.", accountID.c_str()); @@ -155,6 +159,9 @@ setSubscriptions(const std::string& accountID, const std::vector<std::string>& u pres->subscribeClient(u, true); } else JAMI_ERR("Presence not initialized"); + } else if (auto ringaccount = jami::Manager::instance().getAccount<jami::JamiAccount>(accountID)) { + for (const auto &u : uris) + ringaccount->trackBuddyPresence(u, true); } else JAMI_ERR("Could not find account %s.", accountID.c_str()); }