These are read only enhancements to the poll display functionality.
diff --git a/toot/output.py b/toot/output.py
index 5804bb5..daee4c6 100644
--- a/toot/output.py
+++ b/toot/output.py
@@ -168,6 +168,7 @@ def print_status(status, width):
content = reblog['content'] if reblog else status['content']
media_attachments = reblog['media_attachments'] if reblog else status['media_attachments']
in_reply_to = status['in_reply_to_id']
+ poll = reblog['poll'] if reblog else status['poll']
time = parse_datetime(status['created_at'])
time = time.strftime('%Y-%m-%d %H:%M %Z')
@@ -199,6 +200,31 @@ def print_status(status, width):
for line in wc_wrap(url, width):
print_out(line)
+ if poll:
+ print_out("")
+ for idx, option in enumerate(poll["options"]):
+ perc = (round(100 * option["votes_count"] / poll["votes_count"])
+ if poll["votes_count"] else 0)
+
+ if poll["voted"] and poll["own_votes"] and idx in poll["own_votes"]:
+ voted_for = " <yellow>✓<yellow>"
+ else:
+ voted_for = ""
+
+ print_out(option["title"] + " - {}%".format(perc) + voted_for)
+
+ poll_footer = "Poll · {} votes".format(poll["votes_count"])
+
+ if poll["expired"]:
+ poll_footer += " · Closed"
+
+ if poll["expires_at"]:
+ expires_at = parse_datetime(poll["expires_at"]).strftime("%Y-%m-%d %H:%M")
+ poll_footer += " · Closes on {}".format(expires_at)
+
+ print_out("\n{}".format(poll_footer))
+
+
print_out("\n{}{}{}".format(
"ID <yellow>{}</yellow> ".format(status['id']),
"↲ In reply to <yellow>{}</yellow> ".format(in_reply_to) if in_reply_to else "",
diff --git a/toot/tui/timeline.py b/toot/tui/timeline.py
index 8faafd4..faf4131 100644
--- a/toot/tui/timeline.py
+++ b/toot/tui/timeline.py
@@ -328,10 +328,16 @@ class StatusDetails(urwid.Pile):
yield urwid.Text(("link", card["url"]))
def poll_generator(self, poll):
- for option in poll["options"]:
+ for idx, option in enumerate(poll["options"]):
perc = (round(100 * option["votes_count"] / poll["votes_count"])
if poll["votes_count"] else 0)
- yield urwid.Text(option["title"])
+
+ if poll["voted"] and poll["own_votes"] and idx in poll["own_votes"]:
+ voted_for = " ✓"
+ else:
+ voted_for = ""
+
+ yield urwid.Text(option["title"] + voted_for)
yield urwid.ProgressBar("", "poll_bar", perc)
status = "Poll · {} votes".format(poll["votes_count"])