aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-tp-contact-list.c38
1 files changed, 9 insertions, 29 deletions
diff --git a/libempathy/empathy-tp-contact-list.c b/libempathy/empathy-tp-contact-list.c
index ce9c93d44..645371f74 100644
--- a/libempathy/empathy-tp-contact-list.c
+++ b/libempathy/empathy-tp-contact-list.c
@@ -277,23 +277,20 @@ tp_contact_list_group_ready_cb (TpChannel *channel,
static void
tp_contact_list_group_add_channel (EmpathyTpContactList *list,
const gchar *object_path,
- const gchar *channel_type,
- TpHandleType handle_type,
- guint handle)
+ GHashTable *properties)
{
EmpathyTpContactListPriv *priv = GET_PRIV (list);
TpChannel *channel;
+ GError *error = NULL;
- /* Only accept server-side contact groups */
- if (tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST) ||
- handle_type != TP_HANDLE_TYPE_GROUP) {
+ channel = tp_channel_new_from_properties (priv->connection,
+ object_path, properties, &error);
+ if (channel == NULL) {
+ DEBUG ("Failed to create group channel: %s", error->message);
+ g_error_free (error);
return;
}
- channel = tp_channel_new (priv->connection,
- object_path, channel_type,
- handle_type, handle, NULL);
-
/* Give the ref to the callback */
tp_channel_call_when_ready (channel,
tp_contact_list_group_ready_cb,
@@ -839,16 +836,7 @@ new_channels_cb (TpConnection *conn,
g_object_unref (channel);
}
else if (handle_type == TP_HANDLE_TYPE_GROUP) {
- TpHandle handle;
-
- handle = tp_asv_get_uint32 (properties,
- TP_IFACE_CHANNEL ".TargetHandle", NULL);
- if (handle == 0)
- return;
-
- tp_contact_list_group_add_channel (list,
- path, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST,
- TP_HANDLE_TYPE_GROUP, handle);
+ tp_contact_list_group_add_channel (list, path, properties);
}
}
}
@@ -874,7 +862,6 @@ got_channels_cb (TpProxy *conn,
GValueArray *arr = g_ptr_array_index (channels, i);
const gchar *path;
GHashTable *properties;
- TpHandle handle;
path = g_value_get_boxed (g_value_array_get_nth (arr, 0));
properties = g_value_get_boxed (g_value_array_get_nth (arr, 1));
@@ -888,14 +875,7 @@ got_channels_cb (TpProxy *conn,
TP_IFACE_CHANNEL ".TargetHandleType", NULL) != TP_HANDLE_TYPE_GROUP)
continue;
- handle = tp_asv_get_uint32 (properties, TP_IFACE_CHANNEL ".TargetHandle",
- NULL);
- if (handle == 0)
- continue;
-
- tp_contact_list_group_add_channel (list,
- path, TP_IFACE_CHANNEL_TYPE_CONTACT_LIST,
- TP_HANDLE_TYPE_GROUP, handle);
+ tp_contact_list_group_add_channel (list, path, properties);
}
}