diff options
author | default <nobody@localhost> | 2022-10-17 11:59:11 +0200 |
---|---|---|
committer | default <nobody@localhost> | 2022-10-17 11:59:11 +0200 |
commit | c53052471e0b1e40a3251fab97be0eb16f3fa769 (patch) | |
tree | e588925698d1da6c114fadc3b9d96fda7d820a48 /html.c | |
parent | f1c3ff105a24f1c2b6d9b7dd84956c15fc1f994f (diff) |
Process :shortnames: in user names.
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -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) { |