diff options
author | Chandni Verma <chandniverma2112@gmail.com> | 2011-02-23 14:14:54 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-02-25 17:24:55 +0800 |
commit | 9a5d1c52d41aab250ca5bfff3373b11d876bdf1f (patch) | |
tree | a96e43bf1bc09511af28d60c005a14d3b4039d2d /libempathy | |
parent | 860c0a75da2c97bc1e91ed3b4bb958cb7e3cb934 (diff) | |
download | gsoc2013-empathy-9a5d1c52d41aab250ca5bfff3373b11d876bdf1f.tar gsoc2013-empathy-9a5d1c52d41aab250ca5bfff3373b11d876bdf1f.tar.gz gsoc2013-empathy-9a5d1c52d41aab250ca5bfff3373b11d876bdf1f.tar.bz2 gsoc2013-empathy-9a5d1c52d41aab250ca5bfff3373b11d876bdf1f.tar.lz gsoc2013-empathy-9a5d1c52d41aab250ca5bfff3373b11d876bdf1f.tar.xz gsoc2013-empathy-9a5d1c52d41aab250ca5bfff3373b11d876bdf1f.tar.zst gsoc2013-empathy-9a5d1c52d41aab250ca5bfff3373b11d876bdf1f.zip |
Updating empathy_tp_chat_leave() function in empathy-tp-chat API
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-tp-chat.c | 60 | ||||
-rw-r--r-- | libempathy/empathy-tp-chat.h | 3 |
2 files changed, 17 insertions, 46 deletions
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index e24ba84f5..20692a188 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 8511335cf..7c83bec77 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, |