aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy/empathy-utils.c38
-rw-r--r--libempathy/empathy-utils.h3
-rw-r--r--src/empathy-invite-participant-dialog.c32
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