mirror of
https://github.com/profanity-im/profanity.git
synced 2025-02-02 15:08:15 -05:00
xep-0308: Display corrected incoming MUC messages correctly
This commit is contained in:
parent
7ad2e4761b
commit
7cd1be36f2
@ -559,7 +559,7 @@ mucwin_incoming_msg(ProfMucWin *mucwin, ProfMessage *message, GSList *mentions,
|
|||||||
win_print_them(window, THEME_ROOMTRIGGER, ch, flags, message->jid->resourcepart);
|
win_print_them(window, THEME_ROOMTRIGGER, ch, flags, message->jid->resourcepart);
|
||||||
_mucwin_print_triggers(window, message->plain, triggers);
|
_mucwin_print_triggers(window, message->plain, triggers);
|
||||||
} else {
|
} else {
|
||||||
win_println_them_message(window, ch, flags, message->jid->resourcepart, "%s", message->plain);
|
win_println_them_message(window, ch, flags, message->jid->resourcepart, message->id, message->replace_id, "%s", message->plain);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1143,8 +1143,9 @@ win_print_them(ProfWin *window, theme_item_t theme_item, char ch, int flags, con
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
win_println_them_message(ProfWin *window, char ch, int flags, const char *const them, const char *const message, ...)
|
win_println_them_message(ProfWin *window, char ch, int flags, const char *const them, const char *const id, const char *const replace_id, const char *const message, ...)
|
||||||
{
|
{
|
||||||
|
//TODO: we always use current timestamp here. instead of the message->timestamp one if available. i think somewhere else we check whether it exists first.
|
||||||
GDateTime *timestamp = g_date_time_new_now_local();
|
GDateTime *timestamp = g_date_time_new_now_local();
|
||||||
|
|
||||||
va_list arg;
|
va_list arg;
|
||||||
@ -1152,8 +1153,13 @@ win_println_them_message(ProfWin *window, char ch, int flags, const char *const
|
|||||||
GString *fmt_msg = g_string_new(NULL);
|
GString *fmt_msg = g_string_new(NULL);
|
||||||
g_string_vprintf(fmt_msg, message, arg);
|
g_string_vprintf(fmt_msg, message, arg);
|
||||||
|
|
||||||
buffer_append(window->layout->buffer, ch, 0, timestamp, flags | NO_ME, THEME_TEXT_THEM, them, fmt_msg->str, NULL, NULL);
|
if (replace_id) {
|
||||||
_win_print_internal(window, ch, 0, timestamp, flags | NO_ME, THEME_TEXT_THEM, them, fmt_msg->str, NULL);
|
_win_correct(window, fmt_msg->str, id, replace_id);
|
||||||
|
} else {
|
||||||
|
_win_printf(window, ch, 0, timestamp, flags | NO_ME, THEME_TEXT_THEM, them, id, "%s", fmt_msg->str);
|
||||||
|
}
|
||||||
|
// buffer_append(window->layout->buffer, ch, 0, timestamp, flags | NO_ME, THEME_TEXT_THEM, them, fmt_msg->str, NULL, NULL);
|
||||||
|
// _win_print_internal(window, ch, 0, timestamp, flags | NO_ME, THEME_TEXT_THEM, them, fmt_msg->str, NULL);
|
||||||
|
|
||||||
inp_nonblocking(TRUE);
|
inp_nonblocking(TRUE);
|
||||||
g_date_time_unref(timestamp);
|
g_date_time_unref(timestamp);
|
||||||
|
@ -62,7 +62,7 @@ void win_show_status_string(ProfWin *window, const char *const from,
|
|||||||
const char *const default_show);
|
const char *const default_show);
|
||||||
|
|
||||||
void win_print_them(ProfWin *window, theme_item_t theme_item, char ch, int flags, const char *const them);
|
void win_print_them(ProfWin *window, theme_item_t theme_item, char ch, int flags, const char *const them);
|
||||||
void win_println_them_message(ProfWin *window, char ch, int flags, const char *const them, const char *const message, ...);
|
void win_println_them_message(ProfWin *window, char ch, int flags, const char *const them, const char *const id, const char *const replace_id, const char *const message, ...);
|
||||||
void win_println_me_message(ProfWin *window, char ch, const char *const me, const char *const message, ...);
|
void win_println_me_message(ProfWin *window, char ch, const char *const me, const char *const message, ...);
|
||||||
|
|
||||||
void win_print_outgoing(ProfWin *window, const char ch, const char *const id, const char *const replace_id, const char *const message, ...);
|
void win_print_outgoing(ProfWin *window, const char ch, const char *const id, const char *const replace_id, const char *const message, ...);
|
||||||
|
@ -827,13 +827,23 @@ _handle_groupchat(xmpp_stanza_t *const stanza)
|
|||||||
|
|
||||||
ProfMessage *message = message_init();
|
ProfMessage *message = message_init();
|
||||||
message->jid = jid;
|
message->jid = jid;
|
||||||
|
|
||||||
if (id) {
|
if (id) {
|
||||||
message->id = strdup(id);
|
message->id = strdup(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (originid) {
|
if (originid) {
|
||||||
message->originid = strdup(originid);
|
message->originid = strdup(originid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xmpp_stanza_t *replace_id_stanza = xmpp_stanza_get_child_by_ns(stanza, STANZA_NS_LAST_MESSAGE_CORRECTION);
|
||||||
|
if (replace_id_stanza) {
|
||||||
|
const char *replace_id = xmpp_stanza_get_id(replace_id_stanza);
|
||||||
|
if (replace_id) {
|
||||||
|
message->replace_id = strdup(replace_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
message->body = xmpp_message_get_body(stanza);
|
message->body = xmpp_message_get_body(stanza);
|
||||||
|
|
||||||
// check omemo encryption
|
// check omemo encryption
|
||||||
|
Loading…
x
Reference in New Issue
Block a user