commit 085c5a5
default
·
2023-07-25 10:31:42 +0000 UTC
parent e6baead
Simplified attachment iteration in HTML rendering.
1 files changed,
+29,
-62
M
html.c
M
html.c
+29,
-62
1@@ -1173,7 +1173,7 @@ xs_str *html_entry(snac *snac, xs_str *os, const xs_dict *msg, int local,
2 }
3
4 /* make custom css for attachments easier */
5- s = xs_str_cat(s, "<p class=\"snac-content-attachments\">\n");
6+ s = xs_str_cat(s, "<div class=\"snac-content-attachments\">\n");
7
8 xs_list *p = attach;
9
10@@ -1186,84 +1186,51 @@ xs_str *html_entry(snac *snac, xs_str *os, const xs_dict *msg, int local,
11 if (xs_is_null(t))
12 continue;
13
14- if (xs_startswith(t, "image/") || strcmp(t, "Image") == 0) {
15- char *url = xs_dict_get(v, "url");
16- char *name = xs_dict_get(v, "name");
17+ const char *url = xs_dict_get(v, "url");
18+ if (xs_is_null(url))
19+ url = xs_dict_get(v, "href");
20+ if (xs_is_null(url))
21+ continue;
22
23- if (url != NULL) {
24- if (xs_is_null(name))
25- name = "";
26+ const char *name = xs_dict_get(v, "name");
27+ if (xs_is_null(name))
28+ name = L("No description");
29
30- xs *es1 = encode_html(name);
31- xs *s1 = xs_fmt(
32- "<a href=\"%s\" target=\"_blank\">"
33- "<img src=\"%s\" alt=\"%s\" title=\"%s\" loading=\"lazy\"/></a>\n",
34- url, url, es1, es1);
35+ xs *es1 = encode_html(name);
36+ xs *s1 = NULL;
37
38- s = xs_str_cat(s, s1);
39- }
40+ if (xs_startswith(t, "image/") || strcmp(t, "Image") == 0) {
41+ s1 = xs_fmt(
42+ "<a href=\"%s\" target=\"_blank\">"
43+ "<img src=\"%s\" alt=\"%s\" title=\"%s\" loading=\"lazy\"/></a>\n",
44+ url, url, es1, es1);
45 }
46 else
47 if (xs_startswith(t, "video/")) {
48- char *url = xs_dict_get(v, "url");
49- char *name = xs_dict_get(v, "name");
50-
51- if (url != NULL) {
52- if (xs_is_null(name))
53- name = "No description";
54-
55- xs *es1 = encode_html(name);
56- xs *s1 = xs_fmt("<video style=\"width: 100%\" class=\"snac-embedded-video\" "
57- "controls src=\"%s\">Video: "
58- "<a href=\"%s\">%s</a></video>\n", url, url, es1);
59-
60- s = xs_str_cat(s, s1);
61- }
62+ s1 = xs_fmt("<video style=\"width: 100%\" class=\"snac-embedded-video\" "
63+ "controls src=\"%s\">Video: "
64+ "<a href=\"%s\">%s</a></video>\n", url, url, es1);
65 }
66 else
67 if (xs_startswith(t, "audio/")) {
68- char *url = xs_dict_get(v, "url");
69- char *name = xs_dict_get(v, "name");
70-
71- if (url != NULL) {
72- if (xs_is_null(name))
73- name = "No description";
74-
75- xs *es1 = encode_html(name);
76- xs *s1 = xs_fmt("<audio style=\"width: 100%\" class=\"snac-embedded-audio\" "
77- "controls src=\"%s\">Audio: "
78- "<a href=\"%s\">%s</a></audio>\n", url, url, es1);
79-
80- s = xs_str_cat(s, s1);
81- }
82+ s1 = xs_fmt("<audio style=\"width: 100%\" class=\"snac-embedded-audio\" "
83+ "controls src=\"%s\">Audio: "
84+ "<a href=\"%s\">%s</a></audio>\n", url, url, es1);
85 }
86 else
87 if (strcmp(t, "Link") == 0) {
88- const char *url = xs_dict_get(v, "href");
89-
90- if (!xs_is_null(url)) {
91- xs *es1 = encode_html(url);
92- xs *s1 = xs_fmt("<p><a href=\"%s\">%s</a></p>\n", url, es1);
93- s = xs_str_cat(s, s1);
94- }
95+ xs *es2 = encode_html(url);
96+ s1 = xs_fmt("<p><a href=\"%s\">%s</a></p>\n", url, es2);
97 }
98 else {
99- char *url = xs_dict_get(v, "url");
100- char *name = xs_dict_get(v, "name");
101-
102- if (url != NULL) {
103- if (xs_is_null(name))
104- name = "No description";
105-
106- xs *es1 = encode_html(name);
107- xs *s1 = xs_fmt("<a href=\"%s\">Attachment: %s</a>", url, es1);
108-
109- s = xs_str_cat(s, s1);
110- }
111+ s1 = xs_fmt("<p><a href=\"%s\">Attachment: %s</a></p>\n", url, es1);
112 }
113+
114+ if (!xs_is_null(s1))
115+ s = xs_str_cat(s, s1);
116 }
117
118- s = xs_str_cat(s, "</p>\n");
119+ s = xs_str_cat(s, "</div>\n");
120 }
121
122 /* has this message an audience (i.e., comes from a channel or community)? */