Fix updating custom smileys release-2.x.y

Wed, 25 May 2022 23:51:44 -0500

author
Belgin Știrbu <belginstirbu@hotmail.com>
date
Wed, 25 May 2022 23:51:44 -0500
branch
release-2.x.y
changeset 41405
55aa35e81e71
parent 41404
1d02278206d2
child 41412
1912d331d78c

Fix updating custom smileys

If you create a custom smiley and you send it to someone, then you update the
smiley picture and you send it again to the same person, it does not show the updated
smiley on their end, instead it shows the old picture.

Testing Done:
Updated custom smileys in Jabber on Windows and Linux and they updated accordingly.

Bugs closed: PIDGIN-17153

Reviewed at https://reviews.imfreedom.org/r/1477/

libpurple/protocols/jabber/message.c file | annotate | diff | comparison | revisions
--- a/libpurple/protocols/jabber/message.c	Wed May 25 23:51:10 2022 -0500
+++ b/libpurple/protocols/jabber/message.c	Wed May 25 23:51:44 2022 -0500
@@ -967,26 +967,20 @@
 			for (iterator = found_smileys; iterator ;
 				iterator = g_list_next(iterator)) {
 				PurpleSmiley *smiley = (PurpleSmiley *) iterator->data;
-				const gchar *shortcut = purple_smiley_get_shortcut(smiley);
-				const JabberData *data =
-					jabber_data_find_local_by_alt(shortcut);
 				PurpleStoredImage *image = purple_smiley_get_stored_image(smiley);
 
 				if (purple_imgstore_get_size(image) <= JABBER_DATA_MAX_SIZE) {
-					/* the object has not been sent before */
-					if (!data) {
-						const gchar *ext = purple_imgstore_get_extension(image);
-						JabberStream *js = jm->js;
-
-						JabberData *new_data =
-							jabber_data_create_from_data(purple_imgstore_get_data(image),
-								purple_imgstore_get_size(image),
-								jabber_message_get_mimetype_from_ext(ext), FALSE, js);
-						purple_debug_info("jabber",
-							"cache local smiley alt = %s, cid = %s\n",
-							shortcut, jabber_data_get_cid(new_data));
-						jabber_data_associate_local(new_data, shortcut);
-					}
+					const gchar *shortcut = purple_smiley_get_shortcut(smiley);
+					const gchar *ext = purple_imgstore_get_extension(image);
+					JabberStream *js = jm->js;
+					JabberData *data =
+						jabber_data_create_from_data(purple_imgstore_get_data(image),
+									     purple_imgstore_get_size(image),
+									     jabber_message_get_mimetype_from_ext(ext), FALSE, js);
+					purple_debug_info("jabber",
+							  "cache local smiley alt = %s, cid = %s\n",
+							  shortcut, jabber_data_get_cid(data));
+					jabber_data_associate_local(data, shortcut);
 					valid_smileys = g_list_append(valid_smileys, smiley);
 				} else {
 					has_too_large_smiley = TRUE;

mercurial