From b8d92b5ff261291e2c1c2aa860983831e389b648 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 21 Mar 2026 03:01:55 -0700 Subject: [PATCH] feat: fire FRIENDLIST_UPDATE and IGNORELIST_UPDATE events Fire FRIENDLIST_UPDATE from all three friend list packet handlers: - SMSG_FRIEND_LIST (Classic format) - SMSG_CONTACT_LIST (WotLK format) - SMSG_FRIEND_STATUS (add/remove/online/offline updates) Fire IGNORELIST_UPDATE when SMSG_CONTACT_LIST includes ignore entries. These events are used by social addons to refresh their UI when the friend/ignore list changes. --- src/game/game_handler.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/game/game_handler.cpp b/src/game/game_handler.cpp index 757cc379..b3a681a3 100644 --- a/src/game/game_handler.cpp +++ b/src/game/game_handler.cpp @@ -24215,6 +24215,7 @@ void GameHandler::handleFriendList(network::Packet& packet) { entry.classId = classId; contacts_.push_back(std::move(entry)); } + if (addonEventCallback_) addonEventCallback_("FRIENDLIST_UPDATE", {}); } void GameHandler::handleContactList(network::Packet& packet) { @@ -24278,6 +24279,11 @@ void GameHandler::handleContactList(network::Packet& packet) { } LOG_INFO("SMSG_CONTACT_LIST: mask=", lastContactListMask_, " count=", lastContactListCount_); + if (addonEventCallback_) { + addonEventCallback_("FRIENDLIST_UPDATE", {}); + if (lastContactListMask_ & 0x2) // ignore list + addonEventCallback_("IGNORELIST_UPDATE", {}); + } } void GameHandler::handleFriendStatus(network::Packet& packet) { @@ -24361,6 +24367,7 @@ void GameHandler::handleFriendStatus(network::Packet& packet) { } LOG_INFO("Friend status update: ", playerName, " status=", (int)data.status); + if (addonEventCallback_) addonEventCallback_("FRIENDLIST_UPDATE", {}); } void GameHandler::handleRandomRoll(network::Packet& packet) {