1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-09-22 19:45:54 -04:00

Safe last MUC message timestamp per MUC

After pasis review of my code he thinks it's better to safe the
timestamp per MUC so we can account for some problems that could occur
with timing.
This commit is contained in:
Michael Vetter 2019-06-11 06:35:03 +02:00
parent ce5a4ed77c
commit 47e55cc112
3 changed files with 10 additions and 8 deletions

View File

@ -67,7 +67,6 @@
#include "ui/ui.h"
gint _success_connections_counter = 0;
GDateTime *_last_muc_message;
void
sv_ev_login_account_success(char *account_name, gboolean secured)
@ -278,13 +277,13 @@ sv_ev_room_history(const char *const room_jid, const char *const nick,
if (_success_connections_counter == 1) {
// save timestamp of last received muc message
// so we dont display, if there was no activity in channel, once we reconnect
if (_last_muc_message) {
g_date_time_unref(_last_muc_message);
if (mucwin->last_msg_timestamp) {
g_date_time_unref(mucwin->last_msg_timestamp);
}
_last_muc_message = g_date_time_new_now_local();
mucwin->last_msg_timestamp = g_date_time_new_now_local();
}
gboolean younger = g_date_time_compare(_last_muc_message, timestamp) < 0 ? TRUE : FALSE;
gboolean younger = g_date_time_compare(mucwin->last_msg_timestamp, timestamp) < 0 ? TRUE : FALSE;
if (_success_connections_counter == 1 || younger ) {
mucwin_history(mucwin, nick, timestamp, message);
}
@ -364,10 +363,10 @@ sv_ev_room_message(const char *const room_jid, const char *const nick, const cha
}
// save timestamp of last received muc message
if (_last_muc_message) {
g_date_time_unref(_last_muc_message);
if (mucwin->last_msg_timestamp) {
g_date_time_unref(mucwin->last_msg_timestamp);
}
_last_muc_message = g_date_time_new_now_local();
mucwin->last_msg_timestamp = g_date_time_new_now_local();
if (prefs_do_room_notify(is_current, mucwin->roomjid, mynick, nick, new_message, mention, triggers != NULL)) {
Jid *jidp = jid_create(mucwin->roomjid);

View File

@ -54,6 +54,8 @@ mucwin_new(const char *const barejid)
ProfWin *window = wins_new_muc(barejid);
ProfMucWin *mucwin = (ProfMucWin *)window;
mucwin->last_msg_timestamp = NULL;
#ifdef HAVE_OMEMO
if (muc_anonymity_type(mucwin->roomjid) == MUC_ANONYMITY_TYPE_NONANONYMOUS && omemo_automatic_start(barejid)) {
omemo_start_muc_sessions(barejid);

View File

@ -173,6 +173,7 @@ typedef struct prof_muc_win_t {
char *enctext;
char *message_char;
GHashTable *sent_messages;
GDateTime *last_msg_timestamp;
} ProfMucWin;
typedef struct prof_conf_win_t ProfConfWin;