aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordefault <nobody@localhost>2024-12-21 17:06:01 +0100
committerdefault <nobody@localhost>2024-12-21 17:06:01 +0100
commit05d6e41710ed46526f42048dbf24cc3185ba3aa6 (patch)
tree8337159d9c0f7471eb2a5d1d89e9b3fb77becd4d
parent5ffd4435d8590d0c1f07c3d8761488eb81e88180 (diff)
If an attachment includes an icon, show it.
-rw-r--r--activitypub.c4
-rw-r--r--html.c17
2 files changed, 21 insertions, 0 deletions
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) {