commit 8396bf70ed01484dab4bca01e3acebd9920586d2
parent 9a1631e0c57d9e927e51740a90dc1ebd7300fb71
Author: Jacki <jacki@thejackimonster.de>
Date: Mon, 8 Jul 2024 17:35:35 +0200
Cleanup discourses of chat during profile cleanup
Signed-off-by: Jacki <jacki@thejackimonster.de>
Diffstat:
1 file changed, 23 insertions(+), 0 deletions(-)
diff --git a/src/ui/chat_entry.c b/src/ui/chat_entry.c
@@ -29,9 +29,12 @@
#include "../application.h"
#include "../contact.h"
+#include "../discourse.h"
#include "../ui.h"
+#include <glib-2.0/glib.h>
#include <gnunet/gnunet_chat_lib.h>
+#include <gnunet/gnunet_common.h>
#include <gnunet/gnunet_time_lib.h>
UI_CHAT_ENTRY_Handle*
@@ -239,6 +242,20 @@ ui_chat_entry_update(UI_CHAT_ENTRY_Handle *handle,
gtk_list_box_invalidate_sort(app->ui.messenger.chats_listbox);
}
+static enum GNUNET_GenericReturnValue
+_ui_chat_entry_delete_discourses (void *cls,
+ UNUSED struct GNUNET_CHAT_Context *context,
+ struct GNUNET_CHAT_Discourse *discourse)
+{
+ g_assert(discourse);
+
+ if (GNUNET_YES == GNUNET_CHAT_discourse_is_open(discourse))
+ GNUNET_CHAT_discourse_close(discourse);
+
+ discourse_destroy_info(discourse);
+ return GNUNET_YES;
+}
+
void
ui_chat_entry_delete(UI_CHAT_ENTRY_Handle *handle)
{
@@ -246,6 +263,12 @@ ui_chat_entry_delete(UI_CHAT_ENTRY_Handle *handle)
ui_chat_delete(handle->chat);
+ GNUNET_CHAT_context_iterate_discourses(
+ handle->context,
+ _ui_chat_entry_delete_discourses,
+ NULL
+ );
+
g_object_unref(handle->builder);
if (handle->update)