commit 4e01a3b

default  ·  2023-11-20 19:53:57 +0000 UTC
parent 73b1ef1
Some xs_html refactoring.
1 files changed,  +21, -13
M html.c
M html.c
+21, -13
 1@@ -1692,7 +1692,8 @@ xs_str *html_people_list(snac *snac, xs_str *os, xs_list *list, const char *head
 2     xs *s = xs_str_new(NULL);
 3     xs *es1 = encode_html(header);
 4     xs *h = xs_fmt("<h2 class=\"snac-header\">%s</h2>\n", es1);
 5-    char *p, *actor_id;
 6+    xs_list *p;
 7+    char *actor_id;
 8 
 9     s = xs_str_cat(s, h);
10 
11@@ -1704,31 +1705,38 @@ xs_str *html_people_list(snac *snac, xs_str *os, xs_list *list, const char *head
12         xs *actor = NULL;
13 
14         if (valid_status(actor_get(actor_id, &actor))) {
15-            s = xs_str_cat(s, "<div class=\"snac-post\">\n<div class=\"snac-post-header\">\n");
16+            s = xs_str_cat(s, "<div class=\"snac-post\">\n");
17+
18+            xs_html *snac_post_header = xs_html_tag("div",
19+                xs_html_attr("class", "snac-post-header"),
20+                html_actor_icon(actor, xs_dict_get(actor, "published"), NULL, NULL, 0));
21 
22             {
23-                xs_html *actor_icon = html_actor_icon(actor,
24-                    xs_dict_get(actor, "published"), NULL, NULL, 0);
25-                xs *s1 = xs_html_render(actor_icon);
26-                s = xs_str_cat(s, s1, "</div>\n");
27+                xs *s1 = xs_html_render(snac_post_header);
28+                s = xs_str_cat(s, s1);
29             }
30 
31             /* content (user bio) */
32             char *c = xs_dict_get(actor, "summary");
33 
34             if (!xs_is_null(c)) {
35-                s = xs_str_cat(s, "<div class=\"snac-content\">\n");
36-
37                 xs *sc = sanitize(c);
38 
39+                xs_html *snac_content = xs_html_tag("div",
40+                    xs_html_attr("class", "snac-content"));
41+
42                 if (xs_startswith(sc, "<p>"))
43-                    s = xs_str_cat(s, sc);
44-                else {
45-                    xs *s1 = xs_fmt("<p>%s</p>", sc);
46+                    xs_html_add(snac_content,
47+                        xs_html_raw(sc)); /* already sanitized */
48+                else
49+                    xs_html_add(snac_content,
50+                        xs_html_tag("p",
51+                            xs_html_raw(sc))); /* already sanitized */
52+
53+                {
54+                    xs *s1 = xs_html_render(snac_content);
55                     s = xs_str_cat(s, s1);
56                 }
57-
58-                s = xs_str_cat(s, "</div>\n");
59             }
60 
61