From afe5ac506dd169bda7e0eeabecd17d0f29c9f864 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Fri, 30 Mar 2012 15:28:49 +0200 Subject: [PATCH] Store buddy changes only when there's a real change --- include/transport/localbuddy.h | 14 ++++++++++++-- src/buddy.cpp | 1 - src/rostermanager.cpp | 3 --- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/include/transport/localbuddy.h b/include/transport/localbuddy.h index c8f81174..16bf12c1 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 55f35713..5e9b30b6 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 ea49430b..81a453de 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) {