commit 845df51

default  ·  2023-01-03 09:11:20 +0000 UTC
parent abd56da
Don't generate empty children popups.
1 files changed,  +17, -10
M html.c
M html.c
+17, -10
 1@@ -764,17 +764,19 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
 2     if (left) {
 3         char *p, *cmd5;
 4         int older_open = 0;
 5+        xs *ss = xs_str_new(NULL);
 6+        int n_children = 0;
 7 
 8-        s = xs_str_cat(s, "<details open><summary>...</summary><p>\n");
 9+        ss = xs_str_cat(ss, "<details open><summary>...</summary><p>\n");
10 
11         if (level < 4)
12-            s = xs_str_cat(s, "<div class=\"snac-children\">\n");
13+            ss = xs_str_cat(ss, "<div class=\"snac-children\">\n");
14         else
15-            s = xs_str_cat(s, "<div>\n");
16+            ss = xs_str_cat(ss, "<div>\n");
17 
18         if (left > 3) {
19             xs *s1 = xs_fmt("<details><summary>%s</summary>\n", L("Older..."));
20-            s = xs_str_cat(s, s1);
21+            ss = xs_str_cat(ss, s1);
22             older_open = 1;
23         }
24 
25@@ -784,12 +786,14 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
26             object_get_by_md5(cmd5, &chd, NULL);
27 
28             if (older_open && left <= 3) {
29-                s = xs_str_cat(s, "</details>\n");
30+                ss = xs_str_cat(ss, "</details>\n");
31                 older_open = 0;
32             }
33 
34-            if (chd != NULL)
35-                s = html_entry(snac, s, chd, local, level + 1, cmd5);
36+            if (chd != NULL) {
37+                ss = html_entry(snac, ss, chd, local, level + 1, cmd5);
38+                n_children++;
39+            }
40             else
41                 snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5));
42 
43@@ -797,10 +801,13 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
44         }
45 
46         if (older_open)
47-            s = xs_str_cat(s, "</details>\n");
48+            ss = xs_str_cat(ss, "</details>\n");
49 
50-        s = xs_str_cat(s, "</div>\n");
51-        s = xs_str_cat(s, "</details>\n");
52+        ss = xs_str_cat(ss, "</div>\n");
53+        ss = xs_str_cat(ss, "</details>\n");
54+
55+        if (n_children)
56+            s = xs_str_cat(s, ss);
57     }
58 
59     s = xs_str_cat(s, "</div>\n</div>\n");