From afe5ac506dd169bda7e0eeabecd17d0f29c9f864 2012-03-30 15:28:49 From: HanzZ Date: 2012-03-30 15:28:49 Subject: [PATCH] Store buddy changes only when there's a real change --- diff --git a/include/transport/localbuddy.h b/include/transport/localbuddy.h index c8f811748fc2b3d14cc91a5e6b5083f0a286ee2a..16bf12c14de6ff79d81fc601d048f6ff409c5e2d 100644 --- a/include/transport/localbuddy.h +++ b/include/transport/localbuddy.h @@ -51,10 +51,20 @@ class LocalBuddy : public Buddy { } std::string getIconHash() { return m_iconHash; } - void setIconHash(const std::string &iconHash) { m_iconHash = iconHash; } + void setIconHash(const std::string &iconHash) { + bool changed = m_iconHash != iconHash; + m_iconHash = iconHash; + if (changed) + getRosterManager()->storeBuddy(this); + } std::vector getGroups() { return m_groups; } - void setGroups(const std::vector &groups) { m_groups = groups; } + void setGroups(const std::vector &groups) { + bool changed = m_groups.size() != groups.size(); + m_groups = groups; + if (changed) + getRosterManager()->storeBuddy(this); + } private: std::string m_name; diff --git a/src/buddy.cpp b/src/buddy.cpp index 55f3571339138ad4e99bbc5b9b616e9dbc339faa..5e9b30b675bc5c2665aae7769250475aff00abc0 100644 --- a/src/buddy.cpp +++ b/src/buddy.cpp @@ -148,7 +148,6 @@ void Buddy::handleBuddyChanged() { if (presence) { m_rosterManager->getUser()->getComponent()->getStanzaChannel()->sendPresence(presence); } - m_rosterManager->handleBuddyChanged(this); } void Buddy::handleVCardReceived(const std::string &id, Swift::VCard::ref vcard) { diff --git a/src/rostermanager.cpp b/src/rostermanager.cpp index ea49430b08beb5b3922ab044695c85471a6cccd0..81a453dedbcd1a4e2ec18e932a83651e15f42790 100644 --- a/src/rostermanager.cpp +++ b/src/rostermanager.cpp @@ -152,9 +152,6 @@ void RosterManager::sendBuddySubscribePresence(Buddy *buddy) { } void RosterManager::handleBuddyChanged(Buddy *buddy) { - if (m_rosterStorage) { - m_rosterStorage->storeBuddy(buddy); - } } void RosterManager::setBuddyCallback(Buddy *buddy) {