commit 2b6d6d3412b13ca7b91ddfaa320f5e37a2357d3f
parent c356379cdd3d98813459b37d1b02822d80f156e1
Author: default <nobody@localhost>
Date: Wed, 24 May 2023 10:11:48 +0200
Finished polls are shown.
Diffstat:
M | html.c | | | 33 | ++++++++++++++++++++++++++++++++- |
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/html.c b/html.c
@@ -729,7 +729,7 @@ xs_str *html_entry(snac *snac, xs_str *os, const xs_dict *msg, int local,
return xs_str_cat(os, s);
}
else
- if (strcmp(type, "Note") != 0) {
+ if (strcmp(type, "Note") != 0 && strcmp(type, "Question") != 0) {
/* skip oddities */
return os;
}
@@ -881,6 +881,37 @@ xs_str *html_entry(snac *snac, xs_str *os, const xs_dict *msg, int local,
}
}
+ if (strcmp(type, "Question") == 0) {
+ xs_list *oo = xs_dict_get(msg, "oneOf");
+ xs_list *ao = xs_dict_get(msg, "anyOf");
+ xs_list *p;
+ xs_dict *v;
+
+ p = oo != NULL ? oo : ao;
+
+ if (!xs_is_null(xs_dict_get(msg, "closed"))) {
+ /* closed poll */
+ c = xs_str_cat(c, "<table>\n");
+
+ while (xs_list_iter(&p, &v)) {
+ const char *name = xs_dict_get(v, "name");
+ const xs_dict *replies = xs_dict_get(v, "replies");
+
+ if (name && replies) {
+ int nr = xs_number_get(xs_dict_get(replies, "totalItems"));
+ xs *l = xs_fmt("<tr><td>%s:</td><td>%d</td></tr>\n", name, nr);
+
+ c = xs_str_cat(c, l);
+ }
+ }
+
+ c = xs_str_cat(c, "</table>\n");
+ }
+ else {
+ /* poll still active */
+ }
+ }
+
s = xs_str_cat(s, c);
}