diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 14017da8..34b68155 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -126,6 +126,17 @@ class SpectrumNetworkPlugin : public NetworkPlugin { } } + void handleBuddyRemovedRequest(const std::string &user, const std::string &buddyName, const std::string &groups) { + PurpleAccount *account = m_sessions[user]; + if (account) { + PurpleBuddy *buddy = purple_find_buddy(account, buddyName.c_str()); + if (buddy) { + purple_account_remove_buddy(account, buddy, purple_buddy_get_group(buddy)); + purple_blist_remove_buddy(buddy); + } + } + } + void handleBuddyUpdatedRequest(const std::string &user, const std::string &buddyName, const std::string &alias, const std::string &groups) { PurpleAccount *account = m_sessions[user]; if (account) { diff --git a/src/networkplugin.cpp b/src/networkplugin.cpp index 1d02dddf..c5bb1d0f 100644 --- a/src/networkplugin.cpp +++ b/src/networkplugin.cpp @@ -333,6 +333,9 @@ void NetworkPlugin::handleDataRead(const Swift::SafeByteArray &data) { case pbnetwork::WrapperMessage_Type_TYPE_BUDDY_CHANGED: handleBuddyChangedPayload(wrapper.payload()); break; + case pbnetwork::WrapperMessage_Type_TYPE_BUDDY_REMOVED: + handleBuddyRemovedPayload(wrapper.payload()); + break; default: return; }