commit c950981

grunfink  ·  2025-05-19 18:14:07 +0000 UTC
parent 072ae21
Improved post language markup.
1 files changed,  +17, -14
M html.c
M html.c
+17, -14
 1@@ -332,7 +332,8 @@ xs_html *html_actor_icon(snac *user, xs_dict *actor, const char *date,
 2 }
 3 
 4 
 5-xs_html *html_msg_icon(snac *user, const char *actor_id, const xs_dict *msg, const char *proxy, const char *md5)
 6+xs_html *html_msg_icon(snac *user, const char *actor_id, const xs_dict *msg,
 7+                       const char *proxy, const char *md5, const char *lang)
 8 {
 9     xs *actor = NULL;
10     xs_html *actor_icon = NULL;
11@@ -341,7 +342,6 @@ xs_html *html_msg_icon(snac *user, const char *actor_id, const xs_dict *msg, con
12         const char *date  = NULL;
13         const char *udate = NULL;
14         const char *url   = NULL;
15-        const char *lang  = NULL;
16         int priv    = 0;
17         const char *type = xs_dict_get(msg, "type");
18 
19@@ -353,16 +353,6 @@ xs_html *html_msg_icon(snac *user, const char *actor_id, const xs_dict *msg, con
20         date  = xs_dict_get(msg, "published");
21         udate = xs_dict_get(msg, "updated");
22 
23-        lang = xs_dict_get(msg, "contentMap");
24-        if (xs_is_dict(lang)) {
25-            const char *v;
26-            int c = 0;
27-
28-            xs_dict_next(lang, &lang, &v, &c);
29-        }
30-        else
31-            lang = NULL;
32-
33         actor_icon = html_actor_icon(user, actor, date, udate, url, priv, 0, proxy, lang, md5);
34     }
35 
36@@ -1951,6 +1941,15 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
37         return xs_html_tag("mark",
38             xs_html_text(L("Truncated (too deep)")));
39 
40+    const char *lang = NULL;
41+    const xs_dict *cmap = xs_dict_get(msg, "contentMap");
42+    if (xs_is_dict(cmap)) {
43+        const char *dummy;
44+        int c = 0;
45+
46+        xs_dict_next(cmap, &lang, &dummy, &c);
47+    }
48+
49     if (strcmp(type, "Follow") == 0) {
50         return xs_html_tag("div",
51             xs_html_attr("class", "snac-post"),
52@@ -1959,7 +1958,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
53                 xs_html_tag("div",
54                     xs_html_attr("class", "snac-origin"),
55                     xs_html_text(L("follows you"))),
56-                html_msg_icon(read_only ? NULL : user, xs_dict_get(msg, "actor"), msg, proxy, NULL)));
57+                html_msg_icon(read_only ? NULL : user, xs_dict_get(msg, "actor"), msg, proxy, NULL, lang)));
58     }
59     else
60     if (!xs_match(type, POSTLIKE_OBJECT_TYPE)) {
61@@ -2140,13 +2139,17 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
62     }
63 
64     xs_html_add(post_header,
65-        html_msg_icon(read_only ? NULL : user, actor, msg, proxy, md5));
66+        html_msg_icon(read_only ? NULL : user, actor, msg, proxy, md5, lang));
67 
68     /** post content **/
69 
70     xs_html *snac_content_wrap = xs_html_tag("div",
71         xs_html_attr("class", "e-content snac-content"));
72 
73+    if (xs_is_string(lang))
74+        xs_html_add(snac_content_wrap,
75+            xs_html_attr("lang", lang));
76+
77     xs_html_add(entry,
78         snac_content_wrap);
79