Skip to content

Commit 75f93ce

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 list of emoji depending on the search text. Tests amended.
1 parent 657c258 commit 75f93ce

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

tests/ui_tools/test_buttons.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,8 @@ def test_init_emoji_button(self, mocker, width, emoji_name,
298298
controller.model.user_has_reacted_to_msg = mocker.Mock(
299299
return_value=False
300300
)
301+
update_widget = mocker.patch(
302+
BUTTONS + '.EmojiButton.update_widget')
301303
top_button = mocker.patch(TOPBUTTON + '.__init__')
302304
emoji_button = EmojiButton(controller, width, emoji_name,
303305
message, count)
@@ -330,7 +332,7 @@ def test_keypress_emoji_button(self, mocker, key, widget_size):
330332
update_widget = mocker.patch(
331333
BUTTONS + '.EmojiButton.update_widget')
332334
emoji_button = EmojiButton(controller, 20, 'thumbs_up',
333-
message)
335+
message, 2)
334336
size = widget_size(emoji_button)
335337
emoji_button.keypress(size, key)
336338

zulipterminal/ui_tools/buttons.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,10 @@ def __init__(self, controller: Any, width: int, emoji_name: str,
317317
prefix_character='',
318318
show_function=self._toggle_message_reaction,
319319
width=width)
320-
if self.user_has_reacted_to_msg():
321-
self.update_widget((None, f' {CHECK_MARK} '), None)
320+
321+
self.update_widget(
322+
(None, self.get_update_widget_text(
323+
self.user_has_reacted_to_msg())), None)
322324

323325
def _toggle_message_reaction(self) -> None:
324326
self.controller.model.toggle_message_reaction(
@@ -328,13 +330,22 @@ def user_has_reacted_to_msg(self) -> bool:
328330
return self.controller.model.user_has_reacted_to_msg(
329331
self.emoji_name, self.message)
330332

333+
def get_update_widget_text(self, user_reacted: bool) -> str:
334+
count_text = (str(self.reaction_count)
335+
if self.reaction_count > 0 else '')
336+
reacted_check = CHECK_MARK if user_reacted else ''
337+
return f' {reacted_check} {count_text} '
338+
331339
def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
340+
# Note that this is called before toggle_message_reaction.
332341
if is_command_key('ENTER', key):
333-
# Note that this is called before toggle_message_reaction.
334-
if self.user_has_reacted_to_msg():
335-
self.update_widget((None, ''), None)
336-
else:
337-
self.update_widget((None, f' {CHECK_MARK} '), None)
342+
self.reaction_count = (
343+
(self.reaction_count - 1)
344+
if self.user_has_reacted_to_msg()
345+
else (self.reaction_count + 1))
346+
self.update_widget(
347+
(None, self.get_update_widget_text(
348+
not self.user_has_reacted_to_msg())), None)
338349
return super().keypress(size, key)
339350

340351

zulipterminal/ui_tools/views.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,10 +1506,13 @@ def update_emoji_list(self, search_box: Any=None,
15061506
)
15071507

15081508
if new_text:
1509-
self.emojis_display = [
1510-
searched_emoji for searched_emoji in self.emoji_buttons
1509+
emoji_names_searched = [
1510+
searched_emoji.emoji_name
1511+
for searched_emoji in self.emoji_buttons
15111512
if match_emoji(searched_emoji.emoji_name, new_text)
15121513
]
1514+
self.emojis_display = self.generate_emoji_buttons(
1515+
emoji_names_searched)
15131516
else:
15141517
self.emojis_display = self.emoji_buttons
15151518

0 commit comments

Comments
 (0)