diff options
-rw-r--r-- | libempathy/empathy-utils.c | 38 | ||||
-rw-r--r-- | libempathy/empathy-utils.h | 3 | ||||
-rw-r--r-- | src/empathy-invite-participant-dialog.c | 32 |
3 files changed, 44 insertions, 29 deletions
diff --git a/libempathy/empathy-utils.c b/libempathy/empathy-utils.c index 24fdf97f3..172e9e182 100644 --- a/libempathy/empathy-utils.c +++ b/libempathy/empathy-utils.c @@ -992,3 +992,41 @@ empathy_account_has_uri_scheme_tel (TpAccount *account) return FALSE; } + +/* Return the TpContact on @conn associated with @individual, if any */ +TpContact * +empathy_get_tp_contact_for_individual (FolksIndividual *individual, + TpConnection *conn) +{ + TpContact *contact = NULL; + GeeSet *personas; + GeeIterator *iter; + + personas = folks_individual_get_personas (individual); + iter = gee_iterable_iterator (GEE_ITERABLE (personas)); + while (contact == NULL && gee_iterator_next (iter)) + { + TpfPersona *persona = gee_iterator_get (iter); + TpConnection *contact_conn; + TpContact *contact_cur = NULL; + + if (TPF_IS_PERSONA (persona)) + { + contact_cur = tpf_persona_get_contact (persona); + if (contact_cur != NULL) + { + contact_conn = tp_contact_get_connection (contact_cur); + + if (!tp_strdiff (tp_proxy_get_object_path (contact_conn), + tp_proxy_get_object_path (conn))) + contact = contact_cur; + } + } + + g_clear_object (&persona); + } + g_clear_object (&iter); + + return contact; +} + diff --git a/libempathy/empathy-utils.h b/libempathy/empathy-utils.h index fb25d7a99..69a7d6287 100644 --- a/libempathy/empathy-utils.h +++ b/libempathy/empathy-utils.h @@ -108,6 +108,9 @@ gchar *empathy_format_currency (gint amount, gboolean empathy_account_has_uri_scheme_tel (TpAccount *account); +TpContact * empathy_get_tp_contact_for_individual (FolksIndividual *individual, + TpConnection *conn); + /* Copied from wocky/wocky-utils.h */ #define empathy_implement_finish_void(source, tag) \ diff --git a/src/empathy-invite-participant-dialog.c b/src/empathy-invite-participant-dialog.c index ec5a275d4..9280dda32 100644 --- a/src/empathy-invite-participant-dialog.c +++ b/src/empathy-invite-participant-dialog.c @@ -14,6 +14,8 @@ #include "empathy-invite-participant-dialog.h" +#include <libempathy/empathy-utils.h> + #include <libempathy-gtk/empathy-contact-chooser.h> #include <libempathy-gtk/empathy-individual-view.h> #include <libempathy-gtk/empathy-ui-utils.h> @@ -101,39 +103,11 @@ static TpContact * get_tp_contact_for_chat (EmpathyInviteParticipantDialog *self, FolksIndividual *individual) { - TpContact *contact = NULL; TpConnection *chat_conn; - GeeSet *personas; - GeeIterator *iter; chat_conn = tp_channel_borrow_connection (TP_CHANNEL (self->priv->tp_chat)); - personas = folks_individual_get_personas (individual); - iter = gee_iterable_iterator (GEE_ITERABLE (personas)); - while (contact == FALSE && gee_iterator_next (iter)) - { - TpfPersona *persona = gee_iterator_get (iter); - TpConnection *contact_conn; - TpContact *contact_cur = NULL; - - if (TPF_IS_PERSONA (persona)) - { - contact_cur = tpf_persona_get_contact (persona); - if (contact_cur != NULL) - { - contact_conn = tp_contact_get_connection (contact_cur); - - if (!tp_strdiff (tp_proxy_get_object_path (contact_conn), - tp_proxy_get_object_path (chat_conn))) - contact = contact_cur; - } - } - - g_clear_object (&persona); - } - g_clear_object (&iter); - - return contact; + return empathy_get_tp_contact_for_individual (individual, chat_conn); } static gboolean |