fix: Dont OMEMO trust check so often
a26cdf386b / #2104 added OMEMO trust status to the
title bar, but it was being re-calculated on UI refresh.
Update only on certain operations (like `/omemo trust`, new device
discoveries and even incoming OMEMO messages for example).
This commit is contained in:
@@ -431,7 +431,7 @@ _show_muc_privacy(ProfMucWin* mucwin)
|
||||
wattroff(win, bracket_attrs);
|
||||
|
||||
#ifdef HAVE_OMEMO
|
||||
if (omemo_is_jid_trusted(mucwin->roomjid)) {
|
||||
if (mucwin->omemo_trusted) {
|
||||
wprintw(win, " ");
|
||||
wattron(win, bracket_attrs);
|
||||
wprintw(win, "[");
|
||||
@@ -586,7 +586,7 @@ _show_privacy(ProfChatWin* chatwin)
|
||||
wattroff(win, bracket_attrs);
|
||||
|
||||
#ifdef HAVE_OMEMO
|
||||
if (omemo_is_jid_trusted(chatwin->barejid)) {
|
||||
if (chatwin->omemo_trusted) {
|
||||
wprintw(win, " ");
|
||||
wattron(win, bracket_attrs);
|
||||
wprintw(win, "[");
|
||||
|
||||
@@ -177,6 +177,7 @@ typedef struct prof_chat_win_t
|
||||
gboolean pgp_send;
|
||||
gboolean pgp_recv;
|
||||
gboolean is_omemo;
|
||||
gboolean omemo_trusted;
|
||||
gboolean is_ox; // XEP-0373: OpenPGP for XMPP
|
||||
char* resource_override;
|
||||
gboolean history_shown;
|
||||
@@ -201,6 +202,7 @@ typedef struct prof_muc_win_t
|
||||
gboolean showjid;
|
||||
gboolean showoffline;
|
||||
gboolean is_omemo;
|
||||
gboolean omemo_trusted;
|
||||
unsigned long memcheck;
|
||||
char* enctext;
|
||||
char* message_char;
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
|
||||
#include "config.h"
|
||||
#include "ui/window_list.h"
|
||||
#ifdef HAVE_OMEMO
|
||||
#include "omemo/omemo.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -154,6 +157,9 @@ win_create_chat(const char* const barejid)
|
||||
new_win->pgp_recv = FALSE;
|
||||
new_win->pgp_send = FALSE;
|
||||
new_win->is_omemo = FALSE;
|
||||
#ifdef HAVE_OMEMO
|
||||
new_win->omemo_trusted = omemo_is_jid_trusted(barejid);
|
||||
#endif
|
||||
new_win->is_ox = FALSE;
|
||||
new_win->history_shown = FALSE;
|
||||
new_win->unread = 0;
|
||||
@@ -217,6 +223,9 @@ win_create_muc(const char* const roomjid)
|
||||
new_win->enctext = NULL;
|
||||
new_win->message_char = NULL;
|
||||
new_win->is_omemo = FALSE;
|
||||
#ifdef HAVE_OMEMO
|
||||
new_win->omemo_trusted = omemo_is_jid_trusted(roomjid);
|
||||
#endif
|
||||
new_win->last_message = NULL;
|
||||
new_win->last_msg_id = NULL;
|
||||
new_win->has_attention = FALSE;
|
||||
|
||||
@@ -994,6 +994,31 @@ _wins_get_next_available_num(GList* used)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
wins_omemo_trust_changed(const char* const jid)
|
||||
{
|
||||
GList* curr = values;
|
||||
while (curr) {
|
||||
ProfWin* window = curr->data;
|
||||
if (window->type == WIN_CHAT) {
|
||||
ProfChatWin* chatwin = (ProfChatWin*)window;
|
||||
if (jid == NULL || strcmp(chatwin->barejid, jid) == 0) {
|
||||
#ifdef HAVE_OMEMO
|
||||
chatwin->omemo_trusted = omemo_is_jid_trusted(chatwin->barejid);
|
||||
#endif
|
||||
}
|
||||
} else if (window->type == WIN_MUC) {
|
||||
ProfMucWin* mucwin = (ProfMucWin*)window;
|
||||
if (jid == NULL || strcmp(mucwin->roomjid, jid) == 0) {
|
||||
#ifdef HAVE_OMEMO
|
||||
mucwin->omemo_trusted = omemo_is_jid_trusted(mucwin->roomjid);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
curr = g_list_next(curr);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
wins_tidy(void)
|
||||
{
|
||||
|
||||
@@ -88,6 +88,7 @@ GSList* wins_get_chat_recipients(void);
|
||||
GSList* wins_get_prune_wins(void);
|
||||
void wins_lost_connection(void);
|
||||
void wins_reestablished_connection(void);
|
||||
void wins_omemo_trust_changed(const char* const jid);
|
||||
gboolean wins_tidy(void);
|
||||
GSList* wins_create_summary(gboolean unread);
|
||||
GSList* wins_create_summary_attention();
|
||||
|
||||
Reference in New Issue
Block a user