aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-tp-chat.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-04-15 21:17:07 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2011-04-21 10:25:29 +0800
commit9ebc1143eb2917b95ffd1922621c4d3971d2ac38 (patch)
tree439ebc4c69c4ab77f703198c749ab000bcaf2f94 /libempathy/empathy-tp-chat.c
parentd13d80a35e631dca9aa71e7419d08b4094d075f8 (diff)
downloadgsoc2013-empathy-9ebc1143eb2917b95ffd1922621c4d3971d2ac38.tar
gsoc2013-empathy-9ebc1143eb2917b95ffd1922621c4d3971d2ac38.tar.gz
gsoc2013-empathy-9ebc1143eb2917b95ffd1922621c4d3971d2ac38.tar.bz2
gsoc2013-empathy-9ebc1143eb2917b95ffd1922621c4d3971d2ac38.tar.lz
gsoc2013-empathy-9ebc1143eb2917b95ffd1922621c4d3971d2ac38.tar.xz
gsoc2013-empathy-9ebc1143eb2917b95ffd1922621c4d3971d2ac38.tar.zst
gsoc2013-empathy-9ebc1143eb2917b95ffd1922621c4d3971d2ac38.zip
factor out empathy_message_new_from_tp_message
Diffstat (limited to 'libempathy/empathy-tp-chat.c')
-rw-r--r--libempathy/empathy-tp-chat.c83
1 files changed, 15 insertions, 68 deletions
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index 656f4a9d0..17ddf2701 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -282,38 +282,30 @@ tp_chat_got_sender_cb (TpConnection *connection,
static void
tp_chat_build_message (EmpathyTpChat *chat,
- gboolean incoming,
- guint id,
- guint type,
- guint timestamp,
- guint from_handle,
- const gchar *message_body,
- TpChannelTextMessageFlags flags)
+ TpMessage *msg,
+ gboolean incoming)
{
EmpathyTpChatPriv *priv;
EmpathyMessage *message;
+ TpContact *sender;
priv = GET_PRIV (chat);
- message = empathy_message_new (message_body);
- empathy_message_set_tptype (message, type);
+ message = empathy_message_new_from_tp_message (msg, incoming);
+ /* FIXME: this is actually a lie for incoming messages. */
empathy_message_set_receiver (message, priv->user);
- empathy_message_set_timestamp (message, timestamp);
- empathy_message_set_id (message, id);
- empathy_message_set_incoming (message, incoming);
- empathy_message_set_flags (message, flags);
-
- if (flags & TP_CHANNEL_TEXT_MESSAGE_FLAG_SCROLLBACK)
- empathy_message_set_is_backlog (message, TRUE);
g_queue_push_tail (priv->messages_queue, message);
- if (from_handle == 0) {
+ sender = tp_signalled_message_get_sender (msg);
+ g_assert (sender != NULL);
+
+ if (tp_contact_get_handle (sender) == 0) {
empathy_message_set_sender (message, priv->user);
tp_chat_emit_queued_messages (chat);
} else {
empathy_tp_contact_factory_get_from_handle (priv->connection,
- from_handle,
+ tp_contact_get_handle (sender),
tp_chat_got_sender_cb,
message, NULL, G_OBJECT (chat));
}
@@ -325,20 +317,9 @@ message_received_cb (TpTextChannel *channel,
EmpathyTpChat *chat)
{
EmpathyTpChatPriv *priv = GET_PRIV (chat);
- guint message_id;
gchar *message_body;
- TpContact *sender;
- TpHandle from_handle;
- TpChannelTextMessageFlags message_flags;
-
- message_id = tp_asv_get_uint32 (tp_message_peek (message, 0),
- "pending-message-id", NULL);
- sender = tp_signalled_message_get_sender (message);
- g_assert (sender != NULL);
- from_handle = tp_contact_get_handle (sender);
-
- message_body = tp_message_to_text (message, &message_flags);
+ message_body = tp_message_to_text (message, NULL);
DEBUG ("Message received from channel %s: %s",
tp_proxy_get_object_path (channel), message_body);
@@ -351,14 +332,7 @@ message_received_cb (TpTextChannel *channel,
return;
}
- tp_chat_build_message (chat,
- TRUE,
- message_id,
- tp_message_get_message_type (message),
- tp_message_get_received_timestamp (message),
- from_handle,
- message_body,
- message_flags);
+ tp_chat_build_message (chat, message, TRUE);
g_free (message_body);
}
@@ -376,14 +350,7 @@ message_sent_cb (TpTextChannel *channel,
DEBUG ("Message sent: %s", message_body);
- tp_chat_build_message (chat,
- FALSE,
- 0,
- tp_message_get_message_type (message),
- tp_message_get_received_timestamp (message),
- 0,
- message_body,
- 0);
+ tp_chat_build_message (chat, message, FALSE);
g_free (message_body);
}
@@ -478,21 +445,8 @@ list_pending_messages (EmpathyTpChat *self)
for (l = messages; l != NULL; l = g_list_next (l)) {
TpMessage *message = l->data;
gchar *message_body;
- guint message_id;
- guint from_handle;
- guint message_flags;
- TpContact *sender;
-
- /* FIXME: this is pretty low level, ideally we shouldn't have to use the
- * ID directly but we don't use TpTextChannel's ack API everywhere yet. */
- message_id = tp_asv_get_uint32 (tp_message_peek (message, 0),
- "pending-message-id", NULL);
-
- sender = tp_signalled_message_get_sender (message);
- g_assert (sender != NULL);
- from_handle = tp_contact_get_handle (sender);
- message_body = tp_message_to_text (message, &message_flags);
+ message_body = tp_message_to_text (message, NULL);
DEBUG ("Message pending: %s", message_body);
@@ -504,14 +458,7 @@ list_pending_messages (EmpathyTpChat *self)
continue;
}
- tp_chat_build_message (self,
- TRUE,
- message_id,
- tp_message_get_message_type (message),
- tp_message_get_received_timestamp (message),
- from_handle,
- message_body,
- message_flags);
+ tp_chat_build_message (self, message, TRUE);
g_free (message_body);
}