diff options
author | jgeboski <jgeboski@gmail.com> | 2015-12-26 18:15:55 -0500 |
---|---|---|
committer | jgeboski <jgeboski@gmail.com> | 2015-12-26 18:15:55 -0500 |
commit | 2df83c12a660762d6793989aa781058dba0c55ac (patch) | |
tree | fe66c713812502dbcf3807c06db339ea5868619c | |
parent | 195f89e09927df6bd9193711ecdd891855054572 (diff) | |
download | bitlbee-facebook-2df83c12a660762d6793989aa781058dba0c55ac.tar.gz bitlbee-facebook-2df83c12a660762d6793989aa781058dba0c55ac.tar.bz2 bitlbee-facebook-2df83c12a660762d6793989aa781058dba0c55ac.tar.xz |
Preserve the timestamp on incoming messages
-rw-r--r-- | facebook/facebook-api.c | 7 | ||||
-rw-r--r-- | facebook/facebook-api.h | 2 | ||||
-rw-r--r-- | facebook/facebook.c | 9 |
3 files changed, 14 insertions, 4 deletions
diff --git a/facebook/facebook-api.c b/facebook/facebook-api.c index 8e55dd4..90f0fe3 100644 --- a/facebook/facebook-api.c +++ b/facebook/facebook-api.c @@ -1387,6 +1387,8 @@ fb_api_cb_publish_ms(FbApi *api, GByteArray *pload) fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, "$.deltaNewMessage.messageMetadata" ".threadKey.threadFbId"); + fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, + "$.deltaNewMessage.messageMetadata.timestamp"); fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.deltaNewMessage.body"); fb_json_values_add(values, FB_JSON_TYPE_INT, FALSE, @@ -1406,6 +1408,7 @@ fb_api_cb_publish_ms(FbApi *api, GByteArray *pload) msg.uid = fb_json_values_next_int(values, 0); oid = fb_json_values_next_int(values, 0); msg.tid = fb_json_values_next_int(values, 0); + msg.tstamp = fb_json_values_next_int(values, 0); if (msg.uid == priv->uid) { msg.flags |= FB_API_MESSAGE_FLAG_SELF; @@ -2197,6 +2200,7 @@ fb_api_cb_unread_msgs(FbHttpRequest *req, gpointer data) fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.message_sender.messaging_actor.id"); fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.message.text"); + fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.timestamp_precise"); fb_json_values_add(values, FB_JSON_TYPE_STR, FALSE, "$.sticker.id"); fb_json_values_add(values, FB_JSON_TYPE_STR, TRUE, "$.message_id"); fb_json_values_set_array(values, FALSE, "$.messages.nodes"); @@ -2213,6 +2217,9 @@ fb_api_cb_unread_msgs(FbHttpRequest *req, gpointer data) msg.uid = FB_ID_FROM_STR(str); msg.tid = tid; + str = fb_json_values_next_str(values, "0"); + msg.tstamp = g_ascii_strtoll(str, NULL, 10); + if (body != NULL) { dmsg = fb_api_message_dup(&msg, FALSE); dmsg->text = g_strdup(body); diff --git a/facebook/facebook-api.h b/facebook/facebook-api.h index 280ec60..15e4cb2 100644 --- a/facebook/facebook-api.h +++ b/facebook/facebook-api.h @@ -326,6 +326,7 @@ struct _FbApiEvent * @flags: The #FbApiMessageFlags. * @uid: The user #FbId. * @tid: The thread #FbId. + * @tstamp: The timestamp in milliseconds (UTC). * @text: The message text. * * Represents a Facebook user message. @@ -335,6 +336,7 @@ struct _FbApiMessage FbApiMessageFlags flags; FbId uid; FbId tid; + gint64 tstamp; gchar *text; }; diff --git a/facebook/facebook.c b/facebook/facebook.c index 664555e..4a82cc8 100644 --- a/facebook/facebook.c +++ b/facebook/facebook.c @@ -308,6 +308,7 @@ fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data) gboolean selfmess; gchar tid[FB_ID_STRMAX]; gchar uid[FB_ID_STRMAX]; + gint64 tstamp; GSList *l; guint32 flags; struct groupchat *gc; @@ -321,9 +322,9 @@ fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data) for (l = msgs; l != NULL; l = l->next) { msg = l->data; - FB_ID_TO_STR(msg->uid, uid); - flags = 0; + tstamp = msg->tstamp / 1000; + FB_ID_TO_STR(msg->uid, uid); if (msg->flags & FB_API_MESSAGE_FLAG_SELF) { if (!selfmess) { @@ -345,7 +346,7 @@ fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data) fb_api_read(api, msg->uid, FALSE); } - imcb_buddy_msg(ic, uid, (gchar *) msg->text, flags, 0); + imcb_buddy_msg(ic, uid, (gchar *) msg->text, flags, tstamp); continue; } @@ -362,7 +363,7 @@ fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data) fb_api_read(api, msg->tid, TRUE); } - imcb_chat_msg(gc, uid, (gchar *) msg->text, flags, 0); + imcb_chat_msg(gc, uid, (gchar *) msg->text, flags, tstamp); } } } |