diff --git a/html.c b/html.c index fdc0975..fa8253f 100644 --- a/html.c +++ b/html.c @@ -1653,20 +1653,27 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only, xs_list *p; xs_dict *v; int closed = 0; + char *f_closed = NULL; xs_html *poll = xs_html_tag("div", NULL); if (read_only) closed = 1; /* non-identified page; show as closed */ else - if (xs_dict_get(msg, "closed")) - closed = 2; - else if (user && xs_startswith(id, user->actor)) closed = 1; /* we questioned; closed for us */ else if (user && was_question_voted(user, id)) closed = 1; /* we already voted; closed for us */ + else + if ((f_closed = xs_dict_get(msg, "closed")) != NULL) { + /* it has a closed date... but is it in the past? */ + time_t t0 = time(NULL); + time_t t1 = xs_parse_iso_date(f_closed, 0); + + if (t1 < t0) + closed = 2; + } /* get the appropriate list of options */ p = oo != NULL ? oo : ao; @@ -1756,6 +1763,12 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only, else { /* show when the poll closes */ char *end_time = xs_dict_get(msg, "endTime"); + + /* Pleroma does not have an endTime field; + it has a closed time in the future */ + if (xs_is_null(end_time)) + end_time = xs_dict_get(msg, "closed"); + if (!xs_is_null(end_time)) { time_t t0 = time(NULL); time_t t1 = xs_parse_iso_date(end_time, 0);