Skip to content

Commit 5b51253

Browse files
committed
buttons/views: Show reaction_count in EmojiPicker view.
The EmojiPicker view now shows the count of reactions of a particular emoji, beside emoji_name. The emoji_list is also sorted in descending order of emoji_count, then in ascending order of emoji_names, if the count is equal. The search mechanism is also refactored to use the generate_emoji_buttons function to generate the updated list of emoji for every new search text. Tests amended.
1 parent b2d03f6 commit 5b51253

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

tests/ui_tools/test_buttons.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ class TestEmojiButton:
364364
def test_init_emoji_button(self, mocker, width, emoji_name, message, count):
365365
controller = mocker.Mock()
366366
controller.model.has_user_reacted_to_msg = mocker.Mock(return_value=False)
367+
update_widget = mocker.patch(BUTTONS + ".EmojiButton.update_widget")
367368
top_button = mocker.patch(TOPBUTTON + ".__init__")
368369
emoji_button = EmojiButton(controller, width, emoji_name, message, count)
369370

@@ -388,7 +389,7 @@ def test_keypress_emoji_button(self, mocker, key, widget_size):
388389
],
389390
}
390391
update_widget = mocker.patch(BUTTONS + ".EmojiButton.update_widget")
391-
emoji_button = EmojiButton(controller, 20, "thumbs_up", message)
392+
emoji_button = EmojiButton(controller, 20, "thumbs_up", message, 2)
392393
size = widget_size(emoji_button)
393394

394395
emoji_button.keypress(size, key)

zulipterminal/ui_tools/buttons.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,10 @@ def __init__(
344344
show_function=self._toggle_message_reaction,
345345
width=width,
346346
)
347-
if self.has_user_reacted_to_msg():
348-
self.update_widget((None, f" {CHECK_MARK} "), None)
347+
348+
self.update_widget(
349+
(None, self.get_update_widget_text(self.has_user_reacted_to_msg())), None
350+
)
349351

350352
def _toggle_message_reaction(self) -> None:
351353
self.controller.model.toggle_message_reaction(self.message, self.emoji_name)
@@ -355,13 +357,23 @@ def has_user_reacted_to_msg(self) -> bool:
355357
self.emoji_name, self.message
356358
)
357359

360+
def get_update_widget_text(self, user_reacted: bool) -> str:
361+
count_text = str(self.reaction_count) if self.reaction_count > 0 else ""
362+
reacted_check = CHECK_MARK if user_reacted else ""
363+
return f" {reacted_check} {count_text} "
364+
358365
def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
366+
# Note that this is called before toggle_message_reaction.
359367
if is_command_key("ENTER", key):
360-
# Note that this is called before toggle_message_reaction.
361-
if self.has_user_reacted_to_msg():
362-
self.update_widget((None, ""), None)
363-
else:
364-
self.update_widget((None, f" {CHECK_MARK} "), None)
368+
self.reaction_count = (
369+
(self.reaction_count - 1)
370+
if self.has_user_reacted_to_msg()
371+
else (self.reaction_count + 1)
372+
)
373+
self.update_widget(
374+
(None, self.get_update_widget_text(not self.has_user_reacted_to_msg())),
375+
None,
376+
)
365377
return super().keypress(size, key)
366378

367379

zulipterminal/ui_tools/views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1653,16 +1653,16 @@ def update_emoji_list(
16531653

16541654
with self.search_lock:
16551655
if new_text and new_text != self.emoji_search.search_text:
1656-
self.emojis_display = [
1657-
searched_emoji
1656+
emoji_names_searched = [
1657+
searched_emoji.emoji_name
16581658
for searched_emoji in self.emoji_buttons
16591659
if match_emoji(searched_emoji.emoji_name, new_text)
16601660
]
1661+
self.emojis_display = self.generate_emoji_buttons(emoji_names_searched)
16611662
else:
16621663
self.emojis_display = self.emoji_buttons
16631664

16641665
self.empty_search = len(self.emojis_display) == 0
1665-
16661666
body_content = self.emojis_display
16671667
if self.empty_search:
16681668
body_content = [self.emoji_search.search_error]

0 commit comments

Comments
 (0)