commit d1f4844fba95d62806931cdd5930b692379e793b
parent 1b13bf347e3b7db242164efacaf7ac6943bcf50a
Author: Jacki <jacki@thejackimonster.de>
Date: Fri, 2 Feb 2024 01:54:41 +0100
Update tagged messages
Signed-off-by: Jacki <jacki@thejackimonster.de>
Diffstat:
3 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/src/chat/messenger.c b/src/chat/messenger.c
@@ -176,6 +176,16 @@ _chat_messenger_message(void *cls,
);
break;
}
+ case GNUNET_CHAT_KIND_TAG:
+ {
+ application_call_message_event(
+ app,
+ event_tag_message,
+ context,
+ message
+ );
+ break;
+ }
default:
break;
}
diff --git a/src/event.c b/src/event.c
@@ -712,3 +712,31 @@ event_delete_message(MESSENGER_Application *app,
enqueue_chat_entry_update(handle);
}
+
+void
+event_tag_message(MESSENGER_Application *app,
+ struct GNUNET_CHAT_Context *context,
+ const struct GNUNET_CHAT_Message *msg)
+{
+ UI_CHAT_ENTRY_Handle *handle = GNUNET_CHAT_context_get_user_pointer(context);
+
+ if ((!handle) || (!(handle->chat)))
+ return;
+
+ GList *messages = handle->chat->messages;
+
+ while (messages)
+ {
+ UI_MESSAGE_Handle *message = (UI_MESSAGE_Handle*) (messages->data);
+
+ if ((message) && (message->msg == GNUNET_CHAT_message_get_target(msg)))
+ {
+ ui_message_update(message, app, message->msg);
+ break;
+ }
+
+ messages = messages->next;
+ }
+
+ enqueue_chat_entry_update(handle);
+}
diff --git a/src/event.h b/src/event.h
@@ -140,4 +140,17 @@ event_delete_message(MESSENGER_Application *app,
struct GNUNET_CHAT_Context *context,
const struct GNUNET_CHAT_Message *msg);
+/**
+ * Event for the UI to be called whenever a message
+ * gets tagged in a given context.
+ *
+ * @param app Messenger application
+ * @param context Chat context
+ * @param msg Tag message
+ */
+void
+event_tag_message(MESSENGER_Application *app,
+ struct GNUNET_CHAT_Context *context,
+ const struct GNUNET_CHAT_Message *msg);
+
#endif /* EVENT_H_ */