]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-contact-manager.c
Merge branch 'crash-659118'
[empathy.git] / libempathy / empathy-contact-manager.c
index a900fa610fdd42155726f98f481cdcbeb2e135ee..8dbf6d3d5d815e9d2d56abd05e1a4a9f75e4b425 100644 (file)
@@ -436,7 +436,7 @@ account_manager_prepared_cb (GObject *source_object,
        TpAccountManager *account_manager = TP_ACCOUNT_MANAGER (source_object);
        GError *error = NULL;
 
-       if (!tp_account_manager_prepare_finish (account_manager, result, &error)) {
+       if (!tp_proxy_prepare_finish (account_manager, result, &error)) {
                DEBUG ("Failed to prepare account manager: %s", error->message);
                g_error_free (error);
                return;
@@ -578,7 +578,7 @@ empathy_contact_manager_init (EmpathyContactManager *manager)
 
        priv->account_manager = tp_account_manager_dup ();
 
-       tp_account_manager_prepare_async (priv->account_manager, NULL,
+       tp_proxy_prepare_async (priv->account_manager, NULL,
            account_manager_prepared_cb, manager);
 
        bus = tp_dbus_daemon_dup (&error);
@@ -864,6 +864,47 @@ contact_manager_remove_group (EmpathyContactList *manager,
                              (gpointer) group);
 }
 
+static void
+contact_manager_set_blocked (EmpathyContactList *manager,
+                            EmpathyContact     *contact,
+                            gboolean            blocked,
+                            gboolean            abusive)
+{
+       EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+       EmpathyContactList        *list;
+       TpConnection              *connection;
+
+       g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
+
+       connection = empathy_contact_get_connection (contact);
+       list = g_hash_table_lookup (priv->lists, connection);
+
+       if (list != NULL) {
+               empathy_contact_list_set_blocked (list, contact,
+                                                 blocked, abusive);
+       }
+}
+
+static gboolean
+contact_manager_get_blocked (EmpathyContactList *manager,
+                            EmpathyContact     *contact)
+{
+       EmpathyContactManagerPriv *priv = GET_PRIV (manager);
+       EmpathyContactList        *list;
+       TpConnection              *connection;
+
+       g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE);
+
+       connection = empathy_contact_get_connection (contact);
+       list = g_hash_table_lookup (priv->lists, connection);
+
+       if (list != NULL) {
+               return empathy_contact_list_get_blocked (list, contact);
+       } else {
+               return FALSE;
+       }
+}
+
 static void
 contact_manager_iface_init (EmpathyContactListIface *iface)
 {
@@ -880,6 +921,8 @@ contact_manager_iface_init (EmpathyContactListIface *iface)
        iface->is_favourite      = contact_manager_is_favourite;
        iface->remove_favourite  = contact_manager_remove_favourite;
        iface->add_favourite     = contact_manager_add_favourite;
+       iface->set_blocked       = contact_manager_set_blocked;
+       iface->get_blocked       = contact_manager_get_blocked;
 }
 
 EmpathyContactListFlags