Merge pull request #2024 from profanity-im/revert-plugins-api-breakage

Revert plugins api breakage
This commit is contained in:
Michael Vetter
2025-03-13 16:39:44 +01:00
committed by GitHub
7 changed files with 35 additions and 37 deletions

View File

@@ -515,15 +515,15 @@ plugins_on_disconnect(const char* const account_name, const char* const fulljid)
} }
char* char*
plugins_pre_chat_message_display(const char* const barejid, const char* const resource, char* message) plugins_pre_chat_message_display(const char* const barejid, const char* const resource, const char* message)
{ {
GList* values = g_hash_table_get_values(plugins); GList* values = g_hash_table_get_values(plugins);
if (!values) { if (!values) {
return message; return NULL;
} }
char* new_message = NULL; char* new_message = NULL;
char* curr_message = message; char* curr_message = strdup(message);
GList* curr = values; GList* curr = values;
while (curr) { while (curr) {
@@ -569,12 +569,10 @@ plugins_pre_chat_message_send(const char* const barejid, const char* message)
ProfPlugin* plugin = curr->data; ProfPlugin* plugin = curr->data;
if (plugin->contains_hook(plugin, "prof_pre_chat_message_send")) { if (plugin->contains_hook(plugin, "prof_pre_chat_message_send")) {
new_message = plugin->pre_chat_message_send(plugin, barejid, curr_message); new_message = plugin->pre_chat_message_send(plugin, barejid, curr_message);
free(curr_message);
if (new_message) { if (new_message) {
free(curr_message); curr_message = new_message;
curr_message = strdup(new_message);
free(new_message);
} else { } else {
free(curr_message);
g_list_free(values); g_list_free(values);
return NULL; return NULL;
@@ -617,8 +615,7 @@ plugins_pre_room_message_display(const char* const barejid, const char* const ni
new_message = plugin->pre_room_message_display(plugin, barejid, nick, curr_message); new_message = plugin->pre_room_message_display(plugin, barejid, nick, curr_message);
if (new_message) { if (new_message) {
free(curr_message); free(curr_message);
curr_message = strdup(new_message); curr_message = new_message;
free(new_message);
} }
curr = g_list_next(curr); curr = g_list_next(curr);
} }
@@ -656,12 +653,10 @@ plugins_pre_room_message_send(const char* const barejid, const char* message)
ProfPlugin* plugin = curr->data; ProfPlugin* plugin = curr->data;
if (plugin->contains_hook(plugin, "prof_pre_room_message_send")) { if (plugin->contains_hook(plugin, "prof_pre_room_message_send")) {
new_message = plugin->pre_room_message_send(plugin, barejid, curr_message); new_message = plugin->pre_room_message_send(plugin, barejid, curr_message);
free(curr_message);
if (new_message) { if (new_message) {
free(curr_message); curr_message = new_message;
curr_message = strdup(new_message);
free(new_message);
} else { } else {
free(curr_message);
g_list_free(values); g_list_free(values);
return NULL; return NULL;
@@ -728,8 +723,7 @@ plugins_pre_priv_message_display(const char* const fulljid, const char* message)
new_message = plugin->pre_priv_message_display(plugin, jidp->barejid, jidp->resourcepart, curr_message); new_message = plugin->pre_priv_message_display(plugin, jidp->barejid, jidp->resourcepart, curr_message);
if (new_message) { if (new_message) {
free(curr_message); free(curr_message);
curr_message = strdup(new_message); curr_message = new_message;
free(new_message);
} }
curr = g_list_next(curr); curr = g_list_next(curr);
} }
@@ -769,12 +763,10 @@ plugins_pre_priv_message_send(const char* const fulljid, const char* const messa
ProfPlugin* plugin = curr->data; ProfPlugin* plugin = curr->data;
if (plugin->contains_hook(plugin, "prof_pre_priv_message_send")) { if (plugin->contains_hook(plugin, "prof_pre_priv_message_send")) {
new_message = plugin->pre_priv_message_send(plugin, jidp->barejid, jidp->resourcepart, curr_message); new_message = plugin->pre_priv_message_send(plugin, jidp->barejid, jidp->resourcepart, curr_message);
free(curr_message);
if (new_message) { if (new_message) {
free(curr_message); curr_message = new_message;
curr_message = strdup(new_message);
free(new_message);
} else { } else {
free(curr_message);
g_list_free(values); g_list_free(values);
return NULL; return NULL;
@@ -820,8 +812,7 @@ plugins_on_message_stanza_send(const char* const text)
new_stanza = plugin->on_message_stanza_send(plugin, curr_stanza); new_stanza = plugin->on_message_stanza_send(plugin, curr_stanza);
if (new_stanza) { if (new_stanza) {
free(curr_stanza); free(curr_stanza);
curr_stanza = strdup(new_stanza); curr_stanza = new_stanza;
free(new_stanza);
} }
curr = g_list_next(curr); curr = g_list_next(curr);
} }
@@ -867,8 +858,7 @@ plugins_on_presence_stanza_send(const char* const text)
new_stanza = plugin->on_presence_stanza_send(plugin, curr_stanza); new_stanza = plugin->on_presence_stanza_send(plugin, curr_stanza);
if (new_stanza) { if (new_stanza) {
free(curr_stanza); free(curr_stanza);
curr_stanza = strdup(new_stanza); curr_stanza = new_stanza;
free(new_stanza);
} }
curr = g_list_next(curr); curr = g_list_next(curr);
} }
@@ -914,8 +904,7 @@ plugins_on_iq_stanza_send(const char* const text)
new_stanza = plugin->on_iq_stanza_send(plugin, curr_stanza); new_stanza = plugin->on_iq_stanza_send(plugin, curr_stanza);
if (new_stanza) { if (new_stanza) {
free(curr_stanza); free(curr_stanza);
curr_stanza = strdup(new_stanza); curr_stanza = new_stanza;
free(new_stanza);
} }
curr = g_list_next(curr); curr = g_list_next(curr);
} }

View File

@@ -132,7 +132,7 @@ void plugins_on_start(void);
void plugins_on_connect(const char* const account_name, const char* const fulljid); void plugins_on_connect(const char* const account_name, const char* const fulljid);
void plugins_on_disconnect(const char* const account_name, const char* const fulljid); void plugins_on_disconnect(const char* const account_name, const char* const fulljid);
char* plugins_pre_chat_message_display(const char* const barejid, const char* const resource, char* message); char* plugins_pre_chat_message_display(const char* const barejid, const char* const resource, const char* message);
void plugins_post_chat_message_display(const char* const barejid, const char* const resource, const char* message); void plugins_post_chat_message_display(const char* const barejid, const char* const resource, const char* message);
char* plugins_pre_chat_message_send(const char* const barejid, const char* message); char* plugins_pre_chat_message_send(const char* const barejid, const char* message);
void plugins_post_chat_message_send(const char* const barejid, const char* message); void plugins_post_chat_message_send(const char* const barejid, const char* message);

View File

@@ -307,9 +307,9 @@ chatwin_incoming_msg(ProfChatWin* chatwin, ProfMessage* message, gboolean win_cr
} }
char* old_plain = message->plain; char* old_plain = message->plain;
auto_char char* new_plain = plugins_pre_chat_message_display(message->from_jid->barejid, message->from_jid->resourcepart, message->plain);
auto_char char* new_plain = plugins_pre_chat_message_display(message->from_jid->barejid, message->from_jid->resourcepart, strdup(message->plain)); if (new_plain)
message->plain = new_plain; message->plain = new_plain;
gboolean show_message = true; gboolean show_message = true;
@@ -403,7 +403,7 @@ chatwin_incoming_msg(ProfChatWin* chatwin, ProfMessage* message, gboolean win_cr
} }
void void
chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, char* id, prof_enc_t enc_mode, chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, const char* id, prof_enc_t enc_mode,
gboolean request_receipt, const char* const replace_id) gboolean request_receipt, const char* const replace_id)
{ {
assert(chatwin != NULL); assert(chatwin != NULL);
@@ -414,7 +414,8 @@ chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, char* id,
auto_char char* enc_char = get_enc_char(enc_mode, chatwin->outgoing_char); auto_char char* enc_char = get_enc_char(enc_mode, chatwin->outgoing_char);
const Jid* myjid = connection_get_jid(); const Jid* myjid = connection_get_jid();
auto_char char* display_message = plugins_pre_chat_message_display(myjid->barejid, myjid->resourcepart, strdup(message)); auto_char char* plugin_message = plugins_pre_chat_message_display(myjid->barejid, myjid->resourcepart, message);
const char* display_message = plugin_message ?: message;
if (request_receipt && id) { if (request_receipt && id) {
win_print_outgoing_with_receipt((ProfWin*)chatwin, enc_char, "me", display_message, id, replace_id); win_print_outgoing_with_receipt((ProfWin*)chatwin, enc_char, "me", display_message, id, replace_id);
@@ -565,8 +566,12 @@ _chatwin_history(ProfChatWin* chatwin, const char* const contact_barejid)
while (curr) { while (curr) {
ProfMessage* msg = curr->data; ProfMessage* msg = curr->data;
msg->plain = plugins_pre_chat_message_display(msg->from_jid->barejid, msg->from_jid->resourcepart, msg->plain); char* old_plain = msg->plain;
auto_char char* plugin_msg = plugins_pre_chat_message_display(msg->from_jid->barejid, msg->from_jid->resourcepart, msg->plain);
if (plugin_msg)
msg->plain = plugin_msg;
win_print_history((ProfWin*)chatwin, msg); win_print_history((ProfWin*)chatwin, msg);
msg->plain = old_plain;
curr = g_slist_next(curr); curr = g_slist_next(curr);
} }
chatwin->history_shown = TRUE; chatwin->history_shown = TRUE;
@@ -591,12 +596,16 @@ chatwin_db_history(ProfChatWin* chatwin, const char* start_time, char* end_time,
while (curr) { while (curr) {
ProfMessage* msg = curr->data; ProfMessage* msg = curr->data;
msg->plain = plugins_pre_chat_message_display(msg->from_jid->barejid, msg->from_jid->resourcepart, msg->plain); char* old_plain = msg->plain;
auto_char char* plugin_msg = plugins_pre_chat_message_display(msg->from_jid->barejid, msg->from_jid->resourcepart, msg->plain);
if (plugin_msg)
msg->plain = plugin_msg;
if (flip) { if (flip) {
win_print_old_history((ProfWin*)chatwin, msg); win_print_old_history((ProfWin*)chatwin, msg);
} else { } else {
win_print_history((ProfWin*)chatwin, msg); win_print_history((ProfWin*)chatwin, msg);
} }
msg->plain = old_plain;
curr = g_slist_next(curr); curr = g_slist_next(curr);
} }

View File

@@ -127,7 +127,7 @@ ProfChatWin* chatwin_new(const char* const barejid);
void chatwin_incoming_msg(ProfChatWin* chatwin, ProfMessage* message, gboolean win_created); void chatwin_incoming_msg(ProfChatWin* chatwin, ProfMessage* message, gboolean win_created);
void chatwin_receipt_received(ProfChatWin* chatwin, const char* const id); void chatwin_receipt_received(ProfChatWin* chatwin, const char* const id);
void chatwin_recipient_gone(ProfChatWin* chatwin); void chatwin_recipient_gone(ProfChatWin* chatwin);
void chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, char* id, prof_enc_t enc_mode, gboolean request_receipt, const char* const replace_id); void chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, const char* id, prof_enc_t enc_mode, gboolean request_receipt, const char* const replace_id);
void chatwin_outgoing_carbon(ProfChatWin* chatwin, ProfMessage* message); void chatwin_outgoing_carbon(ProfChatWin* chatwin, ProfMessage* message);
void chatwin_contact_online(ProfChatWin* chatwin, Resource* resource, GDateTime* last_activity); void chatwin_contact_online(ProfChatWin* chatwin, Resource* resource, GDateTime* last_activity);
void chatwin_contact_offline(ProfChatWin* chatwin, char* resource, char* status); void chatwin_contact_offline(ProfChatWin* chatwin, char* resource, char* status);

View File

@@ -1617,7 +1617,7 @@ win_print_http_transfer(ProfWin* window, const char* const message, char* id)
} }
void void
win_print_outgoing_with_receipt(ProfWin* window, const char* show_char, const char* const from, const char* const message, char* id, const char* const replace_id) win_print_outgoing_with_receipt(ProfWin* window, const char* show_char, const char* const from, const char* const message, const char* id, const char* const replace_id)
{ {
GDateTime* time = g_date_time_new_now_local(); GDateTime* time = g_date_time_new_now_local();

View File

@@ -65,7 +65,7 @@ void win_show_status_string(ProfWin* window, const char* const from,
void win_print_them(ProfWin* window, theme_item_t theme_item, const char* const show_char, int flags, const char* const them); void win_print_them(ProfWin* window, theme_item_t theme_item, const char* const show_char, int flags, const char* const them);
void win_print_incoming(ProfWin* window, const char* const from, ProfMessage* message); void win_print_incoming(ProfWin* window, const char* const from, ProfMessage* message);
void win_print_outgoing(ProfWin* window, const char* show_char, const char* const id, const char* const replace_id, const char* const message); void win_print_outgoing(ProfWin* window, const char* show_char, const char* const id, const char* const replace_id, const char* const message);
void win_print_outgoing_with_receipt(ProfWin* window, const char* show_char, const char* const from, const char* const message, char* id, const char* const replace_id); void win_print_outgoing_with_receipt(ProfWin* window, const char* show_char, const char* const from, const char* const message, const char* id, const char* const replace_id);
void win_println_incoming_muc_msg(ProfWin* window, char* show_char, int flags, const ProfMessage* const message); void win_println_incoming_muc_msg(ProfWin* window, char* show_char, int flags, const ProfMessage* const message);
void win_print_outgoing_muc_msg(ProfWin* window, char* show_char, const char* const me, const char* const id, const char* const replace_id, const char* const message); void win_print_outgoing_muc_msg(ProfWin* window, char* show_char, const char* const me, const char* const id, const char* const replace_id, const char* const message);
void win_print_history(ProfWin* window, const ProfMessage* const message); void win_print_history(ProfWin* window, const ProfMessage* const message);

View File

@@ -277,7 +277,7 @@ chatwin_recipient_gone(ProfChatWin* chatwin)
} }
void void
chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, char* id, prof_enc_t enc_mode, gboolean request_receipt, const char* const replace_id) chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, const char* id, prof_enc_t enc_mode, gboolean request_receipt, const char* const replace_id)
{ {
} }
void void