diff options
| author | 2022-09-28 17:12:39 +0200 | |
|---|---|---|
| committer | 2022-09-28 17:12:39 +0200 | |
| commit | 5647e675fd59d06b8a9a6016076b45978bdd4d4b (patch) | |
| tree | 2111d4adefb6e3e60882d63dab7a659a32482c9a | |
| parent | Better coping with timeouts. (diff) | |
| download | penes-snac2-5647e675fd59d06b8a9a6016076b45978bdd4d4b.tar.gz penes-snac2-5647e675fd59d06b8a9a6016076b45978bdd4d4b.tar.xz penes-snac2-5647e675fd59d06b8a9a6016076b45978bdd4d4b.zip | |
More HTML work.
| -rw-r--r-- | html.c | 67 |
1 files changed, 47 insertions, 20 deletions
| @@ -175,7 +175,7 @@ d_char *html_msg_icon(snac *snac, d_char *s, char *msg) | |||
| 175 | avatar = xs_fmt("data:image/png;base64, %s", susie); | 175 | avatar = xs_fmt("data:image/png;base64, %s", susie); |
| 176 | 176 | ||
| 177 | { | 177 | { |
| 178 | xs *s1 = xs_fmt("<p><img class=\"snac-avatar\" src=\"%s\"/>\n", avatar); | 178 | xs *s1 = xs_fmt("<p><img class=\"snac-avatar\" src=\"%s\" alt=\"\"/>\n", avatar); |
| 179 | s = xs_str_cat(s, s1); | 179 | s = xs_str_cat(s, s1); |
| 180 | } | 180 | } |
| 181 | 181 | ||
| @@ -200,8 +200,6 @@ d_char *html_msg_icon(snac *snac, d_char *s, char *msg) | |||
| 200 | xs *s1 = xs_fmt("<br>\n<time class=\"dt-published snac-pubdate\">%s</time>\n", v); | 200 | xs *s1 = xs_fmt("<br>\n<time class=\"dt-published snac-pubdate\">%s</time>\n", v); |
| 201 | s = xs_str_cat(s, s1); | 201 | s = xs_str_cat(s, s1); |
| 202 | } | 202 | } |
| 203 | |||
| 204 | s = xs_str_cat(s, "</div>\n"); | ||
| 205 | } | 203 | } |
| 206 | 204 | ||
| 207 | return s; | 205 | return s; |
| @@ -425,6 +423,8 @@ d_char *html_entry(snac *snac, d_char *s, char *msg, xs_set *seen, int level) | |||
| 425 | s = html_msg_icon(snac, s, msg); | 423 | s = html_msg_icon(snac, s, msg); |
| 426 | 424 | ||
| 427 | /* add the content */ | 425 | /* add the content */ |
| 426 | s = xs_str_cat(s, "<div class=\"e-content snac-content\">\n"); | ||
| 427 | |||
| 428 | { | 428 | { |
| 429 | xs *c = xs_dup(xs_dict_get(msg, "content")); | 429 | xs *c = xs_dup(xs_dict_get(msg, "content")); |
| 430 | 430 | ||
| @@ -441,32 +441,59 @@ d_char *html_entry(snac *snac, d_char *s, char *msg, xs_set *seen, int level) | |||
| 441 | c = xs_fmt("<p>%s</p>", s1); | 441 | c = xs_fmt("<p>%s</p>", s1); |
| 442 | } | 442 | } |
| 443 | 443 | ||
| 444 | xs *s1 = xs_fmt("<div class=\"e-content snac-content\">\n%s\n", c); | 444 | s = xs_str_cat(s, c); |
| 445 | s = xs_str_cat(s, s1); | 445 | } |
| 446 | 446 | ||
| 447 | /* now add the attachments */ | 447 | /* add the attachments */ |
| 448 | char *attach; | 448 | char *attach; |
| 449 | 449 | ||
| 450 | if ((attach = xs_dict_get(msg, "attachment")) != NULL) { | 450 | if ((attach = xs_dict_get(msg, "attachment")) != NULL) { |
| 451 | char *v; | 451 | char *v; |
| 452 | while (xs_list_iter(&attach, &v)) { | 452 | while (xs_list_iter(&attach, &v)) { |
| 453 | char *t = xs_dict_get(v, "mediaType"); | 453 | char *t = xs_dict_get(v, "mediaType"); |
| 454 | 454 | ||
| 455 | if (t && xs_startswith(t, "image/")) { | 455 | if (t && xs_startswith(t, "image/")) { |
| 456 | char *url = xs_dict_get(v, "url"); | 456 | char *url = xs_dict_get(v, "url"); |
| 457 | char *name = xs_dict_get(v, "name"); | 457 | char *name = xs_dict_get(v, "name"); |
| 458 | 458 | ||
| 459 | if (url != NULL) { | 459 | if (url != NULL) { |
| 460 | xs *s1 = xs_fmt("<p><img src=\"%s\" alt=\"%s\"/></p>\n", | 460 | xs *s1 = xs_fmt("<p><img src=\"%s\" alt=\"%s\"/></p>\n", |
| 461 | url, xs_is_null(name) ? "" : name); | 461 | url, xs_is_null(name) ? "" : name); |
| 462 | 462 | ||
| 463 | s = xs_str_cat(s, s1); | 463 | s = xs_str_cat(s, s1); |
| 464 | } | ||
| 465 | } | 464 | } |
| 466 | } | 465 | } |
| 467 | } | 466 | } |
| 467 | } | ||
| 468 | |||
| 469 | s = xs_str_cat(s, "</div> <!-- e-content -->\n"); | ||
| 470 | |||
| 471 | char *children = xs_dict_get(meta, "children"); | ||
| 472 | |||
| 473 | if (xs_list_len(children)) { | ||
| 474 | int left = xs_list_len(children); | ||
| 475 | char *id; | ||
| 476 | |||
| 477 | s = xs_str_cat(s, "<div class=\"snac-children\">\n"); | ||
| 478 | |||
| 479 | if (left > 3) | ||
| 480 | s = xs_str_cat(s, "<details><summary>...</summary>\n"); | ||
| 481 | |||
| 482 | while (xs_list_iter(&children, &id)) { | ||
| 483 | xs *chd = timeline_find(snac, id); | ||
| 484 | |||
| 485 | if (left == 0) | ||
| 486 | s = xs_str_cat(s, "</details>\n"); | ||
| 487 | |||
| 488 | if (chd != NULL) | ||
| 489 | s = html_entry(snac, s, chd, seen, level + 1); | ||
| 490 | else | ||
| 491 | snac_debug(snac, 1, xs_fmt("cannot read from timeline child %s", id)); | ||
| 492 | |||
| 493 | left--; | ||
| 494 | } | ||
| 468 | 495 | ||
| 469 | s = xs_str_cat(s, "</div> <!-- e-content -->\n"); | 496 | s = xs_str_cat(s, "</div> <!-- snac-children -->\n"); |
| 470 | } | 497 | } |
| 471 | 498 | ||
| 472 | s = xs_str_cat(s, "</div> <!-- post or child -->\n"); | 499 | s = xs_str_cat(s, "</div> <!-- post or child -->\n"); |