Browse Source

Deliver channel submission acknowledgements to the desktop composer

master
evgeny 5 days ago
parent
commit
49e898b6f3
  1. 4
      tools/chatgui/src/mainwindow.cpp
  2. 1
      tools/chatgui/transport/gui_bridge.h
  3. 6
      tools/chatgui/transport/gui_bridge_impl.cpp

4
tools/chatgui/src/mainwindow.cpp

@ -190,6 +190,7 @@ MainWindow::~MainWindow() {
gui_bridge_set_group_avatar_result_cb(nullptr);
gui_bridge_set_feedback_changed_cb(nullptr);
gui_bridge_set_feedback_result_cb(nullptr);
gui_bridge_set_msg_submitted_cb(nullptr);
gui_bridge_set_avatar_result_cb(nullptr);
if (m_fileBrowser) delete m_fileBrowser.data();
gui_bridge_set_member_files_response_cb(nullptr);
@ -425,6 +426,9 @@ void MainWindow::setupBridgeCallbacks() {
if (GroupAvatarManager::instance()) GroupAvatarManager::instance()->onResult(data, length);
});
gui_bridge_set_msg_received_cb(onMsgReceivedCallback);
gui_bridge_set_msg_submitted_cb([](const uint8_t* data, int length) {
if (s_mainWindow && s_mainWindow->m_messageList) s_mainWindow->m_messageList->onMessageSubmitted(data, length);
});
gui_bridge_set_feedback_changed_cb([](const uint8_t* data, int length) {
if (s_mainWindow && s_mainWindow->m_messageList) s_mainWindow->m_messageList->onFeedbackChanged(data, length);
});

1
tools/chatgui/transport/gui_bridge.h

@ -246,6 +246,7 @@ 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);
void gui_bridge_set_msg_submitted_cb(gui_dm_messages_fn cb);
void gui_bridge_set_radio_mute_result_cb(gui_dm_messages_fn cb);
int gui_bridge_toggle_member_radio_mute(const char* channel_id, uint64_t node_id);
/* CHAT_EVT_ATTACHMENT_PREPARATION: target + job UUID + state. */

6
tools/chatgui/transport/gui_bridge_impl.cpp

@ -73,6 +73,7 @@ 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_dm_messages_fn g_msg_submitted_cb = nullptr;
static gui_dm_messages_fn g_radio_mute_result_cb = nullptr;
static gui_network_changed_fn g_network_changed_cb = nullptr;
static struct UASYNC* g_ua = nullptr;
@ -88,6 +89,10 @@ 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_MSG_SUBMITTED:
if (dlen != 9 || d[8] > 1) { DEBUG_ERROR(DEBUG_CATEGORY_CHAT, "invalid submission result bytes=%d", dlen); break; }
if (g_msg_submitted_cb) g_msg_submitted_cb(d, dlen);
break;
case CHAT_EVT_RADIO_MUTE_RESULT:
if (g_radio_mute_result_cb) g_radio_mute_result_cb(d, dlen);
break;
@ -597,6 +602,7 @@ void gui_bridge_set_avatar_result_cb(gui_dm_messages_fn cb) { g_avatar_result_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_msg_submitted_cb(gui_dm_messages_fn cb) { g_msg_submitted_cb = cb; }
void gui_bridge_set_radio_mute_result_cb(gui_dm_messages_fn cb) { g_radio_mute_result_cb = cb; }
int gui_bridge_toggle_member_radio_mute(const char* channel_id, uint64_t node_id) {

Loading…
Cancel
Save