diff options
author | default <nobody@localhost> | 2023-05-24 10:11:48 +0200 |
---|---|---|
committer | default <nobody@localhost> | 2023-05-24 10:11:48 +0200 |
commit | 2b6d6d3412b13ca7b91ddfaa320f5e37a2357d3f (patch) | |
tree | 4a82d312eaf855832643bae80fbcfb341a2972d9 | |
parent | c356379cdd3d98813459b37d1b02822d80f156e1 (diff) |
Finished polls are shown.
-rw-r--r-- | html.c | 33 |
1 files changed, 32 insertions, 1 deletions
@@ -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); } |