commit c53052471e0b1e40a3251fab97be0eb16f3fa769
parent f1c3ff105a24f1c2b6d9b7dd84956c15fc1f994f
Author: default <nobody@localhost>
Date: Mon, 17 Oct 2022 11:59:11 +0200
Process :shortnames: in user names.
Diffstat:
M | html.c | | | 21 | ++++++++++++++++++++- |
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/html.c b/html.c
@@ -54,7 +54,7 @@ d_char *html_msg_icon(snac *snac, d_char *os, char *msg)
if (actor_id && valid_status(actor_get(snac, actor_id, &actor))) {
xs *name = NULL;
xs *avatar = NULL;
- char *v;
+ char *p, *v;
/* get the name */
if (xs_is_null((v = xs_dict_get(actor, "name"))) || *v == '\0') {
@@ -65,6 +65,25 @@ d_char *html_msg_icon(snac *snac, d_char *os, char *msg)
name = xs_dup(v);
+ /* replace the :shortnames: */
+ if (!xs_is_null(p = xs_dict_get(actor, "tag"))) {
+ /* iterate the tags */
+ while (xs_list_iter(&p, &v)) {
+ char *t = xs_dict_get(v, "type");
+
+ if (t && strcmp(t, "Emoji") == 0) {
+ char *n = xs_dict_get(v, "name");
+ char *i = xs_dict_get(v, "icon");
+
+ if (n && i) {
+ char *u = xs_dict_get(i, "url");
+
+ name = xs_replace_i(name, n, u);
+ }
+ }
+ }
+ }
+
/* get the avatar */
if ((v = xs_dict_get(actor, "icon")) != NULL &&
(v = xs_dict_get(v, "url")) != NULL) {