[empathy] Updating empathy_tp_chat_leave() function in empathy-tp-chat API



commit 9a5d1c52d41aab250ca5bfff3373b11d876bdf1f
Author: Chandni Verma <chandniverma2112 gmail com>
Date:   Wed Feb 23 11:44:54 2011 +0530

    Updating empathy_tp_chat_leave() function in empathy-tp-chat API

 libempathy-gtk/empathy-chat.c |    2 +-
 libempathy/empathy-tp-chat.c  |   60 ++++++++++------------------------------
 libempathy/empathy-tp-chat.h  |    3 +-
 src/empathy-event-manager.c   |    2 +-
 4 files changed, 19 insertions(+), 48 deletions(-)
---
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index b8e8789..fbe2425 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -2765,7 +2765,7 @@ chat_finalize (GObject *object)
 			chat_members_changed_cb, chat);
 		g_signal_handlers_disconnect_by_func (priv->tp_chat,
 			chat_remote_contact_changed_cb, chat);
-		empathy_tp_chat_leave (priv->tp_chat);
+		empathy_tp_chat_leave (priv->tp_chat, "");
 		g_object_unref (priv->tp_chat);
 	}
 	if (priv->account) {
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index e24ba84..20692a1 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -1185,7 +1185,7 @@ tp_chat_got_remote_contact_cb (TpConnection            *connection,
 
 	if (error) {
 		DEBUG ("Error: %s", error->message);
-		empathy_tp_chat_leave (EMPATHY_TP_CHAT (chat));
+		empathy_tp_chat_leave (EMPATHY_TP_CHAT (chat), "");
 		return;
 	}
 
@@ -1206,7 +1206,7 @@ tp_chat_got_self_contact_cb (TpConnection            *connection,
 
 	if (error) {
 		DEBUG ("Error: %s", error->message);
-		empathy_tp_chat_leave (EMPATHY_TP_CHAT (chat));
+		empathy_tp_chat_leave (EMPATHY_TP_CHAT (chat), "");
 		return;
 	}
 
@@ -1557,16 +1557,6 @@ empathy_tp_chat_new (TpAccount *account,
 			     NULL);
 }
 
-static void
-empathy_tp_chat_close (EmpathyTpChat *chat) {
-	EmpathyTpChatPriv *priv = GET_PRIV (chat);
-
-	/* If there are still messages left, it'll come back..
-	 * We loose the ordering of sent messages though */
-	tp_cli_channel_call_close (priv->channel, -1, tp_chat_async_cb,
-		"closing channel", NULL, NULL);
-}
-
 const gchar *
 empathy_tp_chat_get_id (EmpathyTpChat *chat)
 {
@@ -1867,47 +1857,27 @@ empathy_tp_chat_can_add_contact (EmpathyTpChat *self)
 }
 
 static void
-leave_remove_members_cb (TpChannel *proxy,
-			 const GError *error,
-			 gpointer user_data,
-			 GObject *weak_object)
+tp_channel_leave_async_cb (GObject *source_object,
+        GAsyncResult *res,
+        gpointer user_data)
 {
-	EmpathyTpChat *self = user_data;
-
-	if (error == NULL)
-		return;
+	GError *error = NULL;
 
-	DEBUG ("RemoveMembers failed (%s); closing the channel", error->message);
-	empathy_tp_chat_close (self);
+	if (!tp_channel_leave_finish (TP_CHANNEL (source_object), res, &error)) {
+		DEBUG ("Could not leave channel properly: (%s); closing the channel",
+			error->message);
+		g_error_free (error);
+	}
 }
 
 void
-empathy_tp_chat_leave (EmpathyTpChat *self)
+empathy_tp_chat_leave (EmpathyTpChat *self,
+		const gchar *message)
 {
 	EmpathyTpChatPriv *priv = GET_PRIV (self);
-	TpHandle self_handle;
-	GArray *array;
-
-	if (!tp_proxy_has_interface_by_id (priv->channel,
-		TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP)) {
-		empathy_tp_chat_close (self);
-		return;
-	}
-
-	self_handle = tp_channel_group_get_self_handle (priv->channel);
-	if (self_handle == 0) {
-		/* we are not member of the channel */
-		empathy_tp_chat_close (self);
-		return;
-	}
-
-	array = g_array_sized_new (FALSE, FALSE, sizeof (TpHandle), 1);
-	g_array_insert_val (array, 0, self_handle);
-
-	tp_cli_channel_interface_group_call_remove_members (priv->channel, -1, array,
-		"", leave_remove_members_cb, self, NULL, G_OBJECT (self));
 
-	g_array_free (array, TRUE);
+	tp_channel_leave_async (priv->channel, TP_CHANNEL_GROUP_CHANGE_REASON_NONE,
+		message, tp_channel_leave_async_cb, self);
 }
 
 static void
diff --git a/libempathy/empathy-tp-chat.h b/libempathy/empathy-tp-chat.h
index 8511335..7c83bec 100644
--- a/libempathy/empathy-tp-chat.h
+++ b/libempathy/empathy-tp-chat.h
@@ -100,7 +100,8 @@ gboolean       empathy_tp_chat_provide_password_finish (EmpathyTpChat *chat,
 							GError **error);
 gboolean       empathy_tp_chat_can_add_contact (EmpathyTpChat *self);
 
-void           empathy_tp_chat_leave                (EmpathyTpChat      *chat);
+void           empathy_tp_chat_leave                (EmpathyTpChat      *chat,
+						       const gchar *message);
 void           empathy_tp_chat_join                 (EmpathyTpChat      *chat);
 
 gboolean       empathy_tp_chat_is_invited           (EmpathyTpChat      *chat,
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 9699a3a..599a6a4 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -409,7 +409,7 @@ reject_channel_claim_cb (GObject *source,
     }
   else if (EMPATHY_IS_TP_CHAT (user_data))
     {
-      empathy_tp_chat_leave (user_data);
+      empathy_tp_chat_leave (user_data, "");
     }
   else if (EMPATHY_IS_TP_FILE (user_data))
     {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]