aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-tp-chat.c22
-rw-r--r--libempathy/empathy-tp-chat.h26
2 files changed, 29 insertions, 19 deletions
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index 8e8a52aca..3c4f55423 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -488,14 +488,24 @@ empathy_tp_chat_get_id (EmpathyTpChat *chat)
return priv->id;
}
- priv->id = empathy_tp_chat_build_id (priv->account, priv->tp_chan);
+ priv->id = empathy_tp_chat_build_id_for_chan (priv->account, priv->tp_chan);
return priv->id;
}
gchar *
-empathy_tp_chat_build_id (McAccount *account,
- TpChan *tp_chan)
+empathy_tp_chat_build_id (McAccount *account,
+ const gchar *contact_id)
+{
+ /* A handle name is unique only for a specific account */
+ return g_strdup_printf ("%s/%s",
+ mc_account_get_unique_name (account),
+ contact_id);
+}
+
+gchar *
+empathy_tp_chat_build_id_for_chan (McAccount *account,
+ TpChan *tp_chan)
{
MissionControl *mc;
TpConn *tp_conn;
@@ -511,6 +521,7 @@ empathy_tp_chat_build_id (McAccount *account,
tp_conn = mission_control_get_connection (mc, account, NULL);
g_object_unref (mc);
+ /* Get the handle's name */
handles = g_array_new (FALSE, FALSE, sizeof (guint));
g_array_append_val (handles, tp_chan->handle);
if (!tp_conn_inspect_handles (DBUS_G_PROXY (tp_conn),
@@ -528,10 +539,7 @@ empathy_tp_chat_build_id (McAccount *account,
return NULL;
}
- /* A handle name is unique only for a specific account */
- id = g_strdup_printf ("%s/%s",
- mc_account_get_unique_name (account),
- *names);
+ id = empathy_tp_chat_build_id (account, *names);
g_strfreev (names);
g_object_unref (tp_conn);
diff --git a/libempathy/empathy-tp-chat.h b/libempathy/empathy-tp-chat.h
index 0bd3395f2..a9278c3f1 100644
--- a/libempathy/empathy-tp-chat.h
+++ b/libempathy/empathy-tp-chat.h
@@ -55,18 +55,20 @@ struct _EmpathyTpChatClass {
GObjectClass parent_class;
};
-GType empathy_tp_chat_get_type (void) G_GNUC_CONST;
-EmpathyTpChat *empathy_tp_chat_new (McAccount *account,
- TpChan *tp_chan);
-EmpathyTpChat *empathy_tp_chat_new_with_contact (GossipContact *contact);
-void empathy_tp_chat_request_pending (EmpathyTpChat *chat);
-void empathy_tp_chat_send (EmpathyTpChat *chat,
- GossipMessage *message);
-void empathy_tp_chat_set_state (EmpathyTpChat *chat,
- TelepathyChannelChatState state);
-const gchar * empathy_tp_chat_get_id (EmpathyTpChat *chat);
-gchar * empathy_tp_chat_build_id (McAccount *account,
- TpChan *tp_chan);
+GType empathy_tp_chat_get_type (void) G_GNUC_CONST;
+EmpathyTpChat *empathy_tp_chat_new (McAccount *account,
+ TpChan *tp_chan);
+EmpathyTpChat *empathy_tp_chat_new_with_contact (GossipContact *contact);
+void empathy_tp_chat_request_pending (EmpathyTpChat *chat);
+void empathy_tp_chat_send (EmpathyTpChat *chat,
+ GossipMessage *message);
+void empathy_tp_chat_set_state (EmpathyTpChat *chat,
+ TelepathyChannelChatState state);
+const gchar * empathy_tp_chat_get_id (EmpathyTpChat *chat);
+gchar * empathy_tp_chat_build_id (McAccount *account,
+ const gchar *contact_id);
+gchar * empathy_tp_chat_build_id_for_chan (McAccount *account,
+ TpChan *tp_chan);
G_END_DECLS