diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-01-08 15:36:20 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-01-13 12:39:00 +0000 |
commit | 8289be18ff2cbd0e0d0cb72c4e7fb528635aca58 (patch) | |
tree | c849f76afb026491b30c6cb6a119fffba913632a | |
parent | 7708c7446dbc539a88c543294a59d840d6a226e1 (diff) | |
download | telepathy-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.c | 23 |
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; |