diff options
author | Michael Vetter <jubalh@iodoru.org> | 2020-02-12 14:06:00 +0100 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2020-02-14 10:17:07 +0100 |
commit | 4ec005e4c3563066e33e0cf7b87dd027489f03bc (patch) | |
tree | 2e5843c6e8941c3f0a2eb96c5364832598dcbcbb /src/event/client_events.c | |
parent | 2a7a389cb542abb8055a850ad80959e3cf855cae (diff) | |
download | profani-tty-4ec005e4c3563066e33e0cf7b87dd027489f03bc.tar.gz |
xep-0308: Implement LMC for outgoing MUC messages
Including OMEMO encrypted ones. Also rename `win_println_me_message()` to `win_print_outgoing_muc_msg() as I think it's a more descriptive name.
Diffstat (limited to 'src/event/client_events.c')
-rw-r--r-- | src/event/client_events.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/event/client_events.c b/src/event/client_events.c index d3f63455..0f50594f 100644 --- a/src/event/client_events.c +++ b/src/event/client_events.c @@ -344,24 +344,28 @@ cl_ev_send_msg(ProfChatWin *chatwin, const char *const msg, const char *const oo } void -cl_ev_send_muc_msg(ProfMucWin *mucwin, const char *const msg, const char *const oob_url) +cl_ev_send_muc_msg_corrected(ProfMucWin *mucwin, const char *const msg, const char *const oob_url, gboolean correct_last_msg) { char *plugin_msg = plugins_pre_room_message_send(mucwin->roomjid, msg); if (plugin_msg == NULL) { return; } + char *replace_id = NULL; + if (correct_last_msg) { + replace_id = mucwin->last_msg_id; + } + #ifdef HAVE_OMEMO if (mucwin->is_omemo) { - // TODO: replace_id for MUC - char *id = omemo_on_message_send((ProfWin *)mucwin, plugin_msg, FALSE, TRUE, NULL); + char *id = omemo_on_message_send((ProfWin *)mucwin, plugin_msg, FALSE, TRUE, replace_id); groupchat_log_omemo_msg_out(mucwin->roomjid, plugin_msg); - mucwin_outgoing_msg(mucwin, plugin_msg, id, PROF_MSG_ENC_OMEMO); + mucwin_outgoing_msg(mucwin, plugin_msg, id, PROF_MSG_ENC_OMEMO, replace_id); free(id); } else { - char *id = message_send_groupchat(mucwin->roomjid, plugin_msg, oob_url); + char *id = message_send_groupchat(mucwin->roomjid, plugin_msg, oob_url, replace_id); groupchat_log_msg_out(mucwin->roomjid, plugin_msg); - mucwin_outgoing_msg(mucwin, plugin_msg, id, PROF_MSG_ENC_PLAIN); + mucwin_outgoing_msg(mucwin, plugin_msg, id, PROF_MSG_ENC_PLAIN, replace_id); free(id); } @@ -371,9 +375,9 @@ cl_ev_send_muc_msg(ProfMucWin *mucwin, const char *const msg, const char *const #endif #ifndef HAVE_OMEMO - char *id = message_send_groupchat(mucwin->roomjid, plugin_msg, oob_url); + char *id = message_send_groupchat(mucwin->roomjid, plugin_msg, oob_url, replace_id); groupchat_log_msg_out(mucwin->roomjid, plugin_msg); - mucwin_outgoing_msg(mucwin, plugin_msg, id, PROF_MSG_ENC_PLAIN); + mucwin_outgoing_msg(mucwin, plugin_msg, id, PROF_MSG_ENC_PLAIN, replace_out); free(id); plugins_post_room_message_send(mucwin->roomjid, plugin_msg); @@ -383,6 +387,12 @@ cl_ev_send_muc_msg(ProfMucWin *mucwin, const char *const msg, const char *const } void +cl_ev_send_muc_msg(ProfMucWin *mucwin, const char *const msg, const char *const oob_url) +{ + cl_ev_send_muc_msg_corrected(mucwin, msg, oob_url, FALSE); +} + +void cl_ev_send_priv_msg(ProfPrivateWin *privwin, const char *const msg, const char *const oob_url) { if (privwin->occupant_offline) { |