[next] telepathy-haze: contact list: implement is_blocked

Simon McVittie smcv at kemper.freedesktop.org
Mon Jan 13 05:10:33 PST 2014


Module: telepathy-haze
Branch: next
Commit: 8289be18ff2cbd0e0d0cb72c4e7fb528635aca58
URL:    http://cgit.freedesktop.org/telepathy/telepathy-haze/commit/?id=8289be18ff2cbd0e0d0cb72c4e7fb528635aca58

Author: Simon McVittie <simon.mcvittie at collabora.co.uk>
Date:   Wed Jan  8 15:36:20 2014 +0000

contact list: implement is_blocked

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=50093
Reviewed-by: Guillaume Desmottes <guillaume.desmottes at collabora.co.uk>

---

 src/contact-list.c |   23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/contact-list.c b/src/contact-list.c
index 7397c1d..ac19443 100644
--- a/src/contact-list.c
+++ b/src/contact-list.c
@@ -1213,6 +1213,28 @@ haze_contact_list_mutable_groups_init (
   /* assume default: groups are stored persistently */
 }
 
+static gboolean
+is_blocked (TpBaseContactList *cl,
+    TpHandle contact)
+{
+  HazeContactList *self = HAZE_CONTACT_LIST (cl);
+  PurpleAccount *account = self->priv->conn->account;
+  TpBaseConnection *base_conn = TP_BASE_CONNECTION (self->priv->conn);
+  TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (base_conn,
+      TP_HANDLE_TYPE_CONTACT);
+  GSList *l;
+
+  for (l = account->deny; l != NULL; l = l->next)
+    {
+      TpHandle denied = tp_handle_ensure (contact_repo, l->data, NULL, NULL);
+
+      if (denied == contact)
+        return TRUE;
+    }
+
+  return FALSE;
+}
+
 static TpHandleSet *
 dup_blocked_contacts (TpBaseContactList *cl)
 {
@@ -1295,6 +1317,7 @@ static void
 haze_contact_list_blockable_init(
     TpBlockableContactListInterface *vtable)
 {
+  vtable->is_blocked = is_blocked;
   vtable->dup_blocked_contacts = dup_blocked_contacts;
   vtable->block_contacts_async = block_contacts_async;
   vtable->unblock_contacts_async = unblock_contacts_async;



More information about the telepathy-commits mailing list