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)? */