Fix viewing polls with no expiry

https://cutie.city/@froggo@estrogen.network/109338577916060286
This commit is contained in:
blankie 2023-12-02 10:53:46 +11:00
parent 2dd59b1e71
commit 22dbe626b1
Signed by: blankie
GPG Key ID: CC15FC822C7F61F5
3 changed files with 9 additions and 6 deletions

View File

@ -80,7 +80,11 @@ void from_json(const json& j, PollOption& option) {
} }
void from_json(const json& j, Poll& poll) { void from_json(const json& j, Poll& poll) {
poll.expires_at = parse_rfc3339(j.at("expires_at").get_ref<const std::string&>()); if (!j.at("expires_at").is_null()) {
poll.expires_at = parse_rfc3339(j["expires_at"].get_ref<const std::string&>());
} else {
poll.expires_at = -1;
}
j.at("expired").get_to(poll.expired); j.at("expired").get_to(poll.expired);
if (!j.at("voters_count").is_null()) { if (!j.at("voters_count").is_null()) {
j.at("voters_count").get_to(poll.voters_count); j.at("voters_count").get_to(poll.voters_count);

View File

@ -64,7 +64,7 @@ struct PollOption {
uint64_t votes_count; uint64_t votes_count;
}; };
struct Poll { struct Poll {
time_t expires_at; time_t expires_at; // negative if none
bool expired; bool expired;
int64_t voters_count; // negative if unknown int64_t voters_count; // negative if unknown
uint64_t votes_count; uint64_t votes_count;

View File

@ -495,11 +495,10 @@ static inline Element serialize_poll(const httplib::Request& req, const Poll& po
? std::vector<Node>({std::to_string(voters_count), " ", pick_form(voters_count, "voter", "voters")}) ? std::vector<Node>({std::to_string(voters_count), " ", pick_form(voters_count, "voter", "voters")})
: std::vector<Node>({std::to_string(poll.votes_count), " ", pick_form(poll.votes_count, "vote", "votes")}) : std::vector<Node>({std::to_string(poll.votes_count), " ", pick_form(poll.votes_count, "vote", "votes")})
); );
p.nodes.push_back(" / ");
if (poll.expired) { if (poll.expired) {
p.nodes.push_back("Expired"); p.nodes.push_back(" / Expired");
} else { } else if (poll.expires_at >= 0) {
p.nodes.push_back("Expires in "); p.nodes.push_back(" / Expires in ");
p.nodes.push_back(relative_time(current_time(), poll.expires_at)); p.nodes.push_back(relative_time(current_time(), poll.expires_at));
} }
div.nodes.push_back(std::move(p)); div.nodes.push_back(std::move(p));