diff --git a/include/transport/networkplugin.h b/include/transport/networkplugin.h index f94509e148f714c3a1b00f0611370669b45c05b6..f31a556a770d6af1a15ec0dccd47b5f8d5ba6ba0 100644 --- a/include/transport/networkplugin.h +++ b/include/transport/networkplugin.h @@ -68,6 +68,7 @@ class NetworkPlugin { virtual void handleLogoutRequest(const std::string &user, const std::string &legacyName) = 0; virtual void handleMessageSendRequest(const std::string &user, const std::string &legacyName, const std::string &message) = 0; virtual void handleVCardRequest(const std::string &/*user*/, const std::string &/*legacyName*/, unsigned int /*id*/) {} + virtual void handleVCardUpdatedRequest(const std::string &/*user*/, const std::string &/*photo*/) {} virtual void handleJoinRoomRequest(const std::string &/*user*/, const std::string &/*room*/, const std::string &/*nickname*/, const std::string &/*pasword*/) {} virtual void handleLeaveRoomRequest(const std::string &/*user*/, const std::string &/*room*/) {} virtual void handleStatusChangeRequest(const std::string &/*user*/, int status, const std::string &statusMessage) {} diff --git a/src/networkplugin.cpp b/src/networkplugin.cpp index 11733cd1555a8f3fd8263245cc619db7f6a9ab1a..a3d9ed1633ad22365dc2fcf8e240b1d0164fca98 100644 --- a/src/networkplugin.cpp +++ b/src/networkplugin.cpp @@ -311,7 +311,12 @@ void NetworkPlugin::handleVCardPayload(const std::string &data) { return; } - handleVCardRequest(payload.username(), payload.buddyname(), payload.id()); + if (payload.has_photo()) { + handleVCardUpdatedRequest(payload.username(), payload.photo()); + } + else if (!payload.buddyname().empty()) { + handleVCardRequest(payload.username(), payload.buddyname(), payload.id()); + } } void NetworkPlugin::handleBuddyChangedPayload(const std::string &data) {