diff options
author | Marius Halden <marius.h@lden.org> | 2016-04-12 17:16:45 +0200 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2016-04-12 17:16:45 +0200 |
commit | e38e05d88c33d38d39b373ce2f171e13202f9c93 (patch) | |
tree | 47d627e3a33d7239e2598372b091ab875b5125d5 | |
parent | 0d38743d484ad0860587975c9c77415d3d30d560 (diff) | |
download | bitlbee-facebook-e38e05d88c33d38d39b373ce2f171e13202f9c93.tar.gz bitlbee-facebook-e38e05d88c33d38d39b373ce2f171e13202f9c93.tar.bz2 bitlbee-facebook-e38e05d88c33d38d39b373ce2f171e13202f9c93.tar.xz |
Revert "Keep track of last message received"
This reverts commit 52460225e45b4f9583062047d6f1465738a0d061.
-rw-r--r-- | facebook/facebook.c | 75 |
1 files changed, 17 insertions, 58 deletions
diff --git a/facebook/facebook.c b/facebook/facebook.c index d3e9422..dd624b6 100644 --- a/facebook/facebook.c +++ b/facebook/facebook.c @@ -26,13 +26,10 @@ #define OPT_SELFMESSAGE 0 #endif -typedef struct { - struct { - gint new_buddy : 1, - unread_msg : 1; - } flags; - FbApiMessage last_message; -} FbBuddyData; +typedef enum { + FB_PTRBIT_NEW_BUDDY, + FB_PTRBIT_UNREAD_MSG +} FbPtrBit; static void fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data); @@ -76,7 +73,7 @@ fb_groupchat_new(struct im_connection *ic, FbId tid, const gchar *name) } gc = imcb_chat_new(ic, stid); - gc->data = g_new0(FbBuddyData, 1); + gc->data = GINT_TO_POINTER(FALSE); fb_data_add_groupchat(fata, gc); @@ -209,7 +206,6 @@ fb_cb_api_contacts(FbApi *api, GSList *users, gboolean complete, gpointer data) FbApiUser *user; FbData *fata = data; FbId muid; - FbBuddyData *fbd; gchar uid[FB_ID_STRMAX]; gint sync; GSList *l; @@ -236,8 +232,7 @@ fb_cb_api_contacts(FbApi *api, GSList *users, gboolean complete, gpointer data) imcb_rename_buddy(ic, uid, user->name); bu = imcb_buddy_by_handle(ic, uid); - fbd = bu->data; - fbd->flags.new_buddy = TRUE; + FB_UTIL_PTRBIT_SET(bu->data, FB_PTRBIT_NEW_BUDDY, TRUE); } if (!complete) { @@ -254,9 +249,8 @@ fb_cb_api_contacts(FbApi *api, GSList *users, gboolean complete, gpointer data) continue; } - fbd = bu->data; - if (fbd->flags.new_buddy) { - fbd->flags.new_buddy = FALSE; + if (FB_UTIL_PTRBIT_GET(bu->data, FB_PTRBIT_NEW_BUDDY)) { + FB_UTIL_PTRBIT_SET(bu->data, FB_PTRBIT_NEW_BUDDY, FALSE); } else { imcb_remove_buddy(ic, bu->handle, NULL); } @@ -367,7 +361,6 @@ fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data) bee_user_t *bu; FbApiMessage *msg; FbData *fata = data; - FbBuddyData *fbd; gboolean mark; gboolean selfmess; gchar *str; @@ -423,24 +416,13 @@ fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data) } if (msg->tid == 0) { - fbd = bu->data; if (mark) { fb_api_read(api, msg->uid, FALSE); } else { - fbd->flags.unread_msg = TRUE; - } - - if (msg->tstamp <= fbd->last_message.tstamp || - (msg->tstamp == fbd->last_message.tstamp && - g_strcmp0(msg->text, fbd->last_message.text) == 0)) - { - continue; + FB_UTIL_PTRBIT_SET(bu->data, FB_PTRBIT_UNREAD_MSG, TRUE); } imcb_buddy_msg(ic, uid, (gchar *) msg->text, flags, tstamp); - g_free(fbd->last_message.text); - fbd->last_message = *msg; - fbd->last_message.text = g_strdup(msg->text); continue; } @@ -456,25 +438,13 @@ fb_cb_api_messages(FbApi *api, GSList *msgs, gpointer data) } if (gc != NULL) { - fbd = gc->data; if (mark) { fb_api_read(api, msg->tid, TRUE); } else { - fbd->flags.unread_msg = TRUE; - } - - if (msg->tstamp < fbd->last_message.tstamp || - (msg->tstamp == fbd->last_message.tstamp && - msg->uid == fbd->last_message.uid && - g_strcmp0(msg->text, fbd->last_message.text) == 0)) - { - continue; + gc->data = GINT_TO_POINTER(TRUE); } imcb_chat_msg(gc, uid, (gchar *) msg->text, flags, tstamp); - g_free(fbd->last_message.text); - fbd->last_message = *msg; - fbd->last_message.text = g_strdup(msg->text); } } } @@ -800,19 +770,17 @@ fb_buddy_msg(struct im_connection *ic, char *to, char *message, int flags) FbApi *api; FbData *fata = ic->proto_data; FbId uid; - FbBuddyData *fbd; api = fb_data_get_api(fata); uid = FB_ID_FROM_STR(to); bu = bee_user_by_handle(ic->bee, ic, to); - fbd = bu->data; if (set_getbool(&acct->set, "mark_read_reply") && - (bu == NULL) && - fbd->flags.unread_msg) + (bu != NULL) && + FB_UTIL_PTRBIT_GET(bu->data, FB_PTRBIT_UNREAD_MSG)) { fb_api_read(api, uid, FALSE); - fbd->flags.unread_msg = FALSE; + FB_UTIL_PTRBIT_SET(bu->data, FB_PTRBIT_UNREAD_MSG, FALSE); } fb_api_message(api, uid, FALSE, message); @@ -895,10 +863,6 @@ static void fb_chat_leave(struct groupchat *gc) { FbData *fata = gc->ic->proto_data; - FbBuddyData *fbd = gc->data; - - g_free(fbd->last_message.text); - g_free(gc->data); fb_data_remove_groupchat(fata, gc); imcb_chat_free(gc); @@ -911,18 +875,16 @@ fb_chat_msg(struct groupchat *gc, char *message, int flags) FbApi *api; FbData *fata = gc->ic->proto_data; FbId tid; - FbBuddyData *fbd; api = fb_data_get_api(fata); tid = FB_ID_FROM_STR(gc->title); fb_api_message(api, tid, TRUE, message); - fbd = gc->data; if (set_getbool(&acct->set, "mark_read_reply") && - fbd->flags.unread_msg) + GPOINTER_TO_INT(gc->data)) { fb_api_read(api, tid, TRUE); - fbd->flags.unread_msg = FALSE; + gc->data = GINT_TO_POINTER(TRUE); } } @@ -963,16 +925,13 @@ fb_away_states(struct im_connection *ic) static void fb_buddy_data_add(struct bee_user *bu) { - bu->data = g_new0(FbBuddyData, 1); + bu->data = GINT_TO_POINTER(0); } static void fb_buddy_data_free(struct bee_user *bu) { - FbBuddyData *fbd = bu->data; - - g_free(fbd->last_message.text); - g_free(bu->data); + bu->data = NULL; } static account_t * |