libpurple/protocols/jabber/presence.c

changeset 41514
a96768bacb59
parent 41248
f655ed7072b7
child 41784
f864fee87775
--- a/libpurple/protocols/jabber/presence.c	Mon Aug 22 21:49:41 2022 -0500
+++ b/libpurple/protocols/jabber/presence.c	Mon Aug 22 22:05:55 2022 -0500
@@ -346,7 +346,9 @@
 	char *who;
 };
 
-static void authorize_add_cb(const char *message, gpointer data)
+static void
+authorize_add_cb(G_GNUC_UNUSED PurpleAuthorizationRequest *request,
+                 gpointer data)
 {
 	struct _jabber_add_permit *jap = data;
 
@@ -359,7 +361,9 @@
 	g_free(jap);
 }
 
-static void deny_add_cb(const char *message, gpointer data)
+static void
+deny_add_cb(G_GNUC_UNUSED PurpleAuthorizationRequest *request,
+            const char *message, gpointer data)
 {
 	struct _jabber_add_permit *jap = data;
 
@@ -927,6 +931,9 @@
 		struct _jabber_add_permit *jap = g_new0(struct _jabber_add_permit, 1);
 		gboolean onlist = FALSE;
 		PurpleAccount *account;
+		PurpleAuthorizationRequest *request = NULL;
+		PurpleNotification *notification = NULL;
+		PurpleNotificationManager *manager = NULL;
 		PurpleBuddy *buddy;
 		PurpleXmlNode *nick;
 
@@ -945,8 +952,18 @@
 		jap->who = g_strdup(presence.from);
 		jap->js = js;
 
-		purple_account_request_authorization(account, presence.from, NULL, presence.nickname,
-				NULL, onlist, authorize_add_cb, deny_add_cb, jap);
+		request = purple_authorization_request_new(account, presence.from);
+		purple_authorization_request_set_alias(request, presence.nickname);
+		purple_authorization_request_set_add(request, !onlist);
+		g_signal_connect(request, "accepted", G_CALLBACK(authorize_add_cb),
+		                 jap);
+		g_signal_connect(request, "denied", G_CALLBACK(deny_add_cb), jap);
+
+		notification = purple_notification_new_from_authorization_request(request);
+		manager = purple_notification_manager_get_default();
+		purple_notification_manager_add(manager, notification);
+
+		g_object_unref(notification);
 
 		goto out;
 	} else if (presence.type == JABBER_PRESENCE_SUBSCRIBED) {

mercurial