From c1048686d1c62e83c067d1febe659ca15074ffdf Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 6 Oct 2026 21:34:38 +0200 Subject: [PATCH] Route feedback state and command results to the desktop thread --- tools/chatgui/transport/gui_bridge.h | 3 +++ tools/chatgui/transport/gui_bridge_impl.cpp | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/tools/chatgui/transport/gui_bridge.h b/tools/chatgui/transport/gui_bridge.h index b5a75cfc..06e8fc5c 100644 --- a/tools/chatgui/transport/gui_bridge.h +++ b/tools/chatgui/transport/gui_bridge.h @@ -243,6 +243,9 @@ void gui_bridge_set_member_files_response_cb(gui_dm_messages_fn cb); void gui_bridge_set_member_files_transfer_cb(gui_dm_messages_fn cb); void gui_bridge_set_avatar_result_cb(gui_dm_messages_fn cb); void gui_bridge_set_group_avatar_result_cb(gui_dm_messages_fn cb); +/* Опросы/реакции: адресное изменение и коррелированный ответ команды, в GUI-потоке. */ +void gui_bridge_set_feedback_changed_cb(gui_dm_messages_fn cb); +void gui_bridge_set_feedback_result_cb(gui_dm_messages_fn cb); /* CHAT_EVT_ATTACHMENT_PREPARATION: target + job UUID + state. */ void gui_bridge_set_attachment_preparation_cb(gui_dm_messages_fn cb); diff --git a/tools/chatgui/transport/gui_bridge_impl.cpp b/tools/chatgui/transport/gui_bridge_impl.cpp index 21dbf69f..3c8560c3 100644 --- a/tools/chatgui/transport/gui_bridge_impl.cpp +++ b/tools/chatgui/transport/gui_bridge_impl.cpp @@ -70,6 +70,8 @@ static gui_dm_messages_fn g_member_files_response_cb = nullptr; static gui_dm_messages_fn g_member_files_transfer_cb = nullptr; static gui_dm_messages_fn g_avatar_result_cb = nullptr; static gui_dm_messages_fn g_group_avatar_result_cb = nullptr; +static gui_dm_messages_fn g_feedback_changed_cb = nullptr; +static gui_dm_messages_fn g_feedback_result_cb = nullptr; static gui_network_changed_fn g_network_changed_cb = nullptr; static struct UASYNC* g_ua = nullptr; static struct UTUN_INSTANCE* g_inst = nullptr; @@ -84,6 +86,12 @@ void GuiBridgeReceiver::processPost(int eventType, QByteArray data) { eventType == 16 || eventType == 17 || eventType == 24 || eventType == 25 || eventType == 31 || eventType == 33)) g_network_changed_cb(eventType); switch (eventType) { + case CHAT_EVT_FEEDBACK_CHANGED: + if (g_feedback_changed_cb) g_feedback_changed_cb(d, dlen); + break; + case CHAT_EVT_FEEDBACK_RESULT: + if (g_feedback_result_cb) g_feedback_result_cb(d, dlen); + break; case CHAT_EVT_GROUP_AVATAR_RESULT: if (g_group_avatar_result_cb) g_group_avatar_result_cb(d, dlen); break; @@ -581,6 +589,8 @@ void gui_bridge_set_member_files_response_cb(gui_dm_messages_fn cb) { g_member_f void gui_bridge_set_member_files_transfer_cb(gui_dm_messages_fn cb) { g_member_files_transfer_cb = cb; } void gui_bridge_set_avatar_result_cb(gui_dm_messages_fn cb) { g_avatar_result_cb = cb; } void gui_bridge_set_group_avatar_result_cb(gui_dm_messages_fn cb) { g_group_avatar_result_cb = cb; } +void gui_bridge_set_feedback_changed_cb(gui_dm_messages_fn cb) { g_feedback_changed_cb = cb; } +void gui_bridge_set_feedback_result_cb(gui_dm_messages_fn cb) { g_feedback_result_cb = cb; } void gui_bridge_set_dm_conv_updated_cb(gui_dm_conv_updated_fn cb) { g_dm_conv_updated_cb = cb;