diff --git a/activitypub.c b/activitypub.c index 4d52efa..34cc32f 100644 --- a/activitypub.c +++ b/activitypub.c @@ -258,6 +258,10 @@ xs_list *get_attachments(const xs_dict *msg) d = xs_dict_append(d, "href", href); d = xs_dict_append(d, "name", name); + const xs_dict *icon = xs_dict_get(v, "icon"); + if (xs_type(icon) == XSTYPE_DICT) + d = xs_dict_append(d, "icon", icon); + l = xs_list_append(l, d); } } diff --git a/html.c b/html.c index d85c673..4060262 100644 --- a/html.c +++ b/html.c @@ -2061,6 +2061,23 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only, if (content && xs_str_in(content, o_href) != -1) continue; + /* do this attachment include an icon? */ + const xs_dict *icon = xs_dict_get(a, "icon"); + if (xs_type(icon) == XSTYPE_DICT) { + const char *icon_mtype = xs_dict_get(icon, "mediaType"); + const char *icon_url = xs_dict_get(icon, "url"); + + if (icon_mtype && icon_url && xs_startswith(icon_mtype, "image/")) { + xs_html_add(content_attachments, + xs_html_tag("a", + xs_html_attr("href", icon_url), + xs_html_attr("target", "_blank"), + xs_html_sctag("img", + xs_html_attr("loading", "lazy"), + xs_html_attr("src", icon_url)))); + } + } + xs *href = make_url(o_href, proxy, 0); if (xs_startswith(type, "image/") || strcmp(type, "Image") == 0) {