diff --git a/zulipterminal/ui_tools/messages.py b/zulipterminal/ui_tools/messages.py index 9135fe7605..3fde88d699 100644 --- a/zulipterminal/ui_tools/messages.py +++ b/zulipterminal/ui_tools/messages.py @@ -65,6 +65,7 @@ def __init__(self, message: Message, model: "Model", last_message: Any) -> None: self.topic_links: Dict[str, Tuple[str, int, bool]] = dict() self.time_mentions: List[Tuple[str, str]] = list() self.last_message = last_message + self.widget_type: str = "" # if this is the first message if self.last_message is None: self.last_message = defaultdict(dict) @@ -731,26 +732,26 @@ def main_view(self) -> List[Any]: ) if self.message.get("submessages"): - widget_type = find_widget_type(self.message.get("submessages")) + self.widget_type = find_widget_type(self.message.get("submessages")) - if widget_type == "poll": - poll_question, poll_options = process_poll_widget( + if self.widget_type == "poll": + self.poll_question, self.poll_options = process_poll_widget( self.message.get("submessages") ) poll_widget = ( - f"Poll: {poll_question}" - if poll_question + f"Poll: {self.poll_question}" + if self.poll_question else "No poll question provided. Please add one via the web app." ) - if poll_options: + if self.poll_options: max_votes_len = max( len(str(len(option["votes"]))) - for option in poll_options.values() + for option in self.poll_options.values() ) - for option_info in poll_options.values(): + for option_info in self.poll_options.values(): padded_votes = f"{len(option_info['votes']):>{max_votes_len}}" poll_widget += f"\n[ {padded_votes} ] {option_info['option']}" else: @@ -1157,4 +1158,6 @@ def keypress(self, size: urwid_Size, key: str) -> Optional[str]: self.model.controller.show_emoji_picker(self.message) elif is_command_key("MSG_SENDER_INFO", key): self.model.controller.show_msg_sender_info(self.message["sender_id"]) + elif is_command_key("SHOW_POLL_VOTES", key) and self.widget_type == "poll": + self.model.controller.show_poll_vote(self.poll_question, self.poll_options) return key