mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05: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:
parent
ce5a4ed77c
commit
47e55cc112
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user