From 1ad4a936496868e770b709f33390c5abce0487da Mon Sep 17 00:00:00 2001 From: default Date: Mon, 20 Nov 2023 20:28:20 +0100 Subject: html_actor_icon() uses xs_html. --- html.c | 78 ++++++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 33 deletions(-) (limited to 'html.c') diff --git a/html.c b/html.c index 5195ba7..43973e8 100644 --- a/html.c +++ b/html.c @@ -95,7 +95,7 @@ xs_str *actor_name(xs_dict *actor) xs_str *html_actor_icon(xs_dict *actor, const char *date, const char *udate, const char *url, int priv) { - xs_str *s = xs_str_new(NULL); + xs_html *actor_icon = xs_html_tag("p", NULL); xs *avatar = NULL; char *v; @@ -111,31 +111,45 @@ xs_str *html_actor_icon(xs_dict *actor, const char *date, if (avatar == NULL) avatar = xs_fmt("data:image/png;base64, %s", default_avatar_base64()); - { - xs *s1 = xs_fmt("

\"\"/\n", avatar); - s = xs_str_cat(s, s1); - } + xs_html_add(actor_icon, + xs_html_sctag("img", + xs_html_attr("loading", "lazy"), + xs_html_attr("class", "snac-avatar"), + xs_html_attr("src", avatar), + xs_html_attr("alt", "")), + xs_html_tag("a", + xs_html_attr("href", xs_dict_get(actor, "id")), + xs_html_attr("class", "p-author h-card snac-author"), + xs_html_raw(name))); /* name is already html-escaped */ - { - xs *s1 = xs_fmt("%s", - xs_dict_get(actor, "id"), name); - s = xs_str_cat(s, s1); - } if (!xs_is_null(url)) { - xs *s1 = xs_fmt(" »", url); - s = xs_str_cat(s, s1); + xs_html_add(actor_icon, + xs_html_text(" "), + xs_html_tag("a", + xs_html_attr("href", (char *)url), + xs_html_text("»"))); } - if (priv) - s = xs_str_cat(s, " 🔒"); + if (priv) { + xs_html_add(actor_icon, + xs_html_text(" "), + xs_html_tag("span", + xs_html_attr("title", "private"), + xs_html_raw("🔒"))); + } - if (strcmp(xs_dict_get(actor, "type"), "Service") == 0) - s = xs_str_cat(s, " 🤖"); + if (strcmp(xs_dict_get(actor, "type"), "Service") == 0) { + xs_html_add(actor_icon, + xs_html_text(" "), + xs_html_tag("span", + xs_html_attr("title", "bot"), + xs_html_raw("🤖"))); + } if (xs_is_null(date)) { - s = xs_str_cat(s, "\n \n"); + xs_html_add(actor_icon, + xs_html_raw(" ")); } else { xs *date_label = xs_crop_i(xs_dup(date), 0, 10); @@ -149,18 +163,16 @@ xs_str *html_actor_icon(xs_dict *actor, const char *date, date_title = xs_str_cat(date_title, " / ", udate); } - xs *edt = encode_html(date_title); - xs *edl = encode_html(date_label); - xs *s1 = xs_fmt( - "\n\n", - edt, edl); - - s = xs_str_cat(s, s1); + xs_html_add(actor_icon, + xs_html_text(" "), + xs_html_tag("time", + xs_html_attr("class", "dt-published snac-pubdate"), + xs_html_attr("title", date_title), + xs_html_text(date_label))); } { char *username, *id; - xs *s1; if (xs_is_null(username = xs_dict_get(actor, "preferredUsername")) || *username == '\0') { /* This should never be reached */ @@ -176,15 +188,15 @@ xs_str *html_actor_icon(xs_dict *actor, const char *date, xs *domain = xs_split(id, "/"); xs *user = xs_fmt("@%s@%s", username, xs_list_get(domain, 2)); - xs *u1 = encode_html(user); - s1 = xs_fmt( - "
%s", - xs_dict_get(actor, "id"), u1); - - s = xs_str_cat(s, s1); + xs_html_add(actor_icon, + xs_html_sctag("br", NULL), + xs_html_tag("a", + xs_html_attr("href", xs_dict_get(actor, "id")), + xs_html_attr("class", "p-author-tag h-card snac-author-tag"), + xs_html_text(user))); } - return s; + return xs_html_render(actor_icon); } -- cgit v1.2.3