summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2014-01-08 15:36:20 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-01-13 12:39:00 +0000
commit8289be18ff2cbd0e0d0cb72c4e7fb528635aca58 (patch)
treec849f76afb026491b30c6cb6a119fffba913632a
parent7708c7446dbc539a88c543294a59d840d6a226e1 (diff)
downloadtelepathy-haze-8289be18ff2cbd0e0d0cb72c4e7fb528635aca58.tar.gz
contact list: implement is_blocked
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=50093 Reviewed-by: Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-rw-r--r--src/contact-list.c23
1 files changed, 23 insertions, 0 deletions
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;