mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-26 15:06:21 +00:00
plugins_(on|pre) API now maybe returns NULL.
Instead of always returning a `strdup()`'ed version, maybe return NULL and handle this in the calling code. This is still not true for `plugins_pre_chat_message_display()`, where we return the passed `messag` in case there are no plugins, since this would require a bigger refactor of more parts. This also * merges the implementation of `sv_ev_incoming_private_message()` and `sv_ev_delayed_private_message()`, since they differed only by a single line. * untangles the `#ifdef` mess in `cl_ev_send_muc_msg_corrected()`. Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This commit is contained in:
@@ -345,7 +345,9 @@ sv_ev_room_message(ProfMessage* message)
|
||||
}
|
||||
|
||||
char* old_plain = message->plain;
|
||||
message->plain = plugins_pre_room_message_display(message->from_jid->barejid, message->from_jid->resourcepart, message->plain);
|
||||
auto_char char* plugin_msg = plugins_pre_room_message_display(message->from_jid->barejid, message->from_jid->resourcepart, message->plain);
|
||||
if (plugin_msg)
|
||||
message->plain = plugin_msg;
|
||||
|
||||
GSList* mentions = get_mentions(prefs_get_boolean(PREF_NOTIFY_MENTION_WHOLE_WORD), prefs_get_boolean(PREF_NOTIFY_MENTION_CASE_SENSITIVE), message->plain, mynick);
|
||||
gboolean mention = g_slist_length(mentions) > 0;
|
||||
@@ -409,55 +411,44 @@ sv_ev_room_message(ProfMessage* message)
|
||||
rosterwin_roster();
|
||||
|
||||
plugins_post_room_message_display(message->from_jid->barejid, message->from_jid->resourcepart, message->plain);
|
||||
free(message->plain);
|
||||
message->plain = old_plain;
|
||||
}
|
||||
|
||||
static void
|
||||
_sv_ev_private_message(ProfMessage* message)
|
||||
{
|
||||
char* old_plain = message->plain;
|
||||
auto_char char* plugin_msg = plugins_pre_priv_message_display(message->from_jid->fulljid, message->plain);
|
||||
if (plugin_msg)
|
||||
message->plain = plugin_msg;
|
||||
|
||||
ProfPrivateWin* privatewin = wins_get_private(message->from_jid->fulljid);
|
||||
if (privatewin == NULL) {
|
||||
ProfWin* window = wins_new_private(message->from_jid->fulljid);
|
||||
privatewin = (ProfPrivateWin*)window;
|
||||
}
|
||||
|
||||
_clean_incoming_message(message);
|
||||
privwin_incoming_msg(privatewin, message);
|
||||
// Intentionally skipping log to DB because we can't authenticate the sender
|
||||
chat_log_msg_in(message);
|
||||
|
||||
plugins_post_priv_message_display(message->from_jid->fulljid, message->plain);
|
||||
|
||||
message->plain = old_plain;
|
||||
}
|
||||
|
||||
void
|
||||
sv_ev_incoming_private_message(ProfMessage* message)
|
||||
{
|
||||
char* old_plain = message->plain;
|
||||
message->plain = plugins_pre_priv_message_display(message->from_jid->fulljid, message->plain);
|
||||
|
||||
ProfPrivateWin* privatewin = wins_get_private(message->from_jid->fulljid);
|
||||
if (privatewin == NULL) {
|
||||
ProfWin* window = wins_new_private(message->from_jid->fulljid);
|
||||
privatewin = (ProfPrivateWin*)window;
|
||||
}
|
||||
|
||||
_clean_incoming_message(message);
|
||||
privwin_incoming_msg(privatewin, message);
|
||||
// Intentionally skipping log to DB because we can't authenticate the sender
|
||||
chat_log_msg_in(message);
|
||||
|
||||
plugins_post_priv_message_display(message->from_jid->fulljid, message->plain);
|
||||
|
||||
free(message->plain);
|
||||
message->plain = old_plain;
|
||||
_sv_ev_private_message(message);
|
||||
rosterwin_roster();
|
||||
}
|
||||
|
||||
void
|
||||
sv_ev_delayed_private_message(ProfMessage* message)
|
||||
{
|
||||
char* old_plain = message->plain;
|
||||
message->plain = plugins_pre_priv_message_display(message->from_jid->fulljid, message->plain);
|
||||
|
||||
ProfPrivateWin* privatewin = wins_get_private(message->from_jid->fulljid);
|
||||
if (privatewin == NULL) {
|
||||
ProfWin* window = wins_new_private(message->from_jid->fulljid);
|
||||
privatewin = (ProfPrivateWin*)window;
|
||||
}
|
||||
|
||||
_clean_incoming_message(message);
|
||||
privwin_incoming_msg(privatewin, message);
|
||||
// Intentionally skipping log to DB because we can't authenticate the sender
|
||||
chat_log_msg_in(message);
|
||||
|
||||
plugins_post_priv_message_display(message->from_jid->fulljid, message->plain);
|
||||
|
||||
free(message->plain);
|
||||
message->plain = old_plain;
|
||||
_sv_ev_private_message(message);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user