\n"); /** **/
+ xs_html *entry = xs_html_tag("div",
+ xs_html_attr("class", level == 0 ? "snac-post" : "snac-child"));
+
+ xs_html_add(entry_top,
+ entry);
/** post header **/
@@ -1507,6 +1509,9 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
score = xs_html_tag("div",
xs_html_attr("class", "snac-score")));
+ xs_html_add(entry,
+ post_header);
+
if (user && is_pinned(user, id)) {
/* add a pin emoji */
xs_html_add(score,
@@ -1600,46 +1605,47 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
xs_html_add(post_header,
html_msg_icon(msg));
- {
- xs *s1 = xs_html_render(post_header);
- s = xs_str_cat(s, s1);
- }
-
/** post content **/
- s = xs_str_cat(s, "\n
\n"); /** **/
+ xs_html *snac_content_wrap = xs_html_tag("div",
+ xs_html_attr("class", "e-content snac-content"));
+
+ xs_html_add(entry,
+ snac_content_wrap);
if (!xs_is_null(v = xs_dict_get(msg, "name"))) {
- xs *es1 = encode_html(v);
- xs *s1 = xs_fmt("
%s
\n", es1);
- s = xs_str_cat(s, s1);
+ xs_html_add(snac_content_wrap,
+ xs_html_tag("h3",
+ xs_html_attr("class", "snac-entry-title"),
+ xs_html_text(v)));
}
+ xs_html *snac_content = NULL;
+
/* is it sensitive? */
if (user && xs_type(xs_dict_get(msg, "sensitive")) == XSTYPE_TRUE) {
if (xs_is_null(v = xs_dict_get(msg, "summary")) || *v == '\0')
v = "...";
+
/* only show it when not in the public timeline and the config setting is "open" */
char *cw = xs_dict_get(user->config, "cw");
if (xs_is_null(cw) || local)
cw = "";
- xs *es1 = encode_html(v);
- xs *s1 = xs_fmt("
%s [%s]
\n", cw, es1, L("SENSITIVE CONTENT"));
- s = xs_str_cat(s, s1);
- sensitive = 1;
- }
-#if 0
- {
- xs *md5 = xs_md5_hex(id, strlen(id));
- xs *s1 = xs_fmt("%s
\n", md5);
- s = xs_str_cat(s, s1);
+ snac_content = xs_html_tag("details",
+ xs_html_attr(cw, NULL),
+ xs_html_tag("summary",
+ xs_html_text(v),
+ xs_html_text(L("[SENSITIVE CONTENT]"))));
}
-#endif
+ else
+ snac_content = xs_html_tag("div", NULL);
+
+ xs_html_add(snac_content_wrap,
+ snac_content);
{
/** build the content string **/
-
char *content = xs_dict_get(msg, "content");
xs *c = sanitize(xs_is_null(content) ? "" : content);
@@ -1695,7 +1701,8 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
}
/* c contains sanitized HTML */
- s = xs_str_cat(s, c);
+ xs_html_add(snac_content,
+ xs_html_raw(c));
}
if (strcmp(type, "Question") == 0) { /** question content **/
@@ -1825,12 +1832,10 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
}
}
- xs *s1 = xs_html_render(poll);
- s = xs_str_cat(s, s1);
+ xs_html_add(snac_content_wrap,
+ poll);
}
- s = xs_str_cat(s, "\n");
-
/* add the attachments */
v = xs_dict_get(msg, "attachment");
@@ -1858,6 +1863,9 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
xs_html *content_attachments = xs_html_tag("div",
xs_html_attr("class", "snac-content-attachments"));
+ xs_html_add(snac_content_wrap,
+ content_attachments);
+
xs_list *p = attach;
while (xs_list_iter(&p, &v)) {
@@ -1946,11 +1954,6 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
xs_html_text(url))));
}
}
-
- {
- xs *s1 = xs_html_render(content_attachments);
- s = xs_str_cat(s, s1);
- }
}
/* has this message an audience (i.e., comes from a channel or community)? */
@@ -1964,21 +1967,15 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
xs_html_text(audience)),
xs_html_text(")"));
- xs *s1 = xs_html_render(au_tag);
- s = xs_str_cat(s, s1);
+ xs_html_add(snac_content_wrap,
+ au_tag);
}
- if (sensitive)
- s = xs_str_cat(s, "\n");
-
- s = xs_str_cat(s, "
\n");
-
/** controls **/
if (!local && user) {
- xs_html *h = html_entry_controls(user, msg, md5);
- xs *s1 = xs_html_render(h);
- s = xs_str_cat(s, s1);
+ xs_html_add(entry,
+ html_entry_controls(user, msg, md5));
}
/** children **/
@@ -1992,6 +1989,9 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
xs_html_tag("summary",
xs_html_text("...")));
+ xs_html_add(entry,
+ ch_details);
+
xs_html *ch_container = xs_html_tag("div",
xs_html_attr("class", level < 4 ? "snac-children" : "snac-children-too-deep"));
@@ -2033,15 +2033,10 @@ xs_str *html_entry(snac *user, xs_dict *msg, int local,
left--;
}
-
- xs *s1 = xs_html_render(ch_details);
- s = xs_str_cat(s, s1);
}
}
- s = xs_str_cat(s, "