Skip to content

Commit 102cc1e

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 dfa9a30 commit 102cc1e

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.has_user_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
@@ -314,8 +314,10 @@ def __init__(self, controller: Any, width: int, emoji_name: str,
314314
prefix_character='',
315315
show_function=self._toggle_message_reaction,
316316
width=width)
317-
if self.has_user_reacted_to_msg():
318-
self.update_widget((None, f' {CHECK_MARK} '), None)
317+
318+
self.update_widget(
319+
(None, self.get_update_widget_text(
320+
self.has_user_reacted_to_msg())), None)
319321

320322
def _toggle_message_reaction(self) -> None:
321323
self.controller.model.toggle_message_reaction(
@@ -325,13 +327,22 @@ def has_user_reacted_to_msg(self) -> bool:
325327
return self.controller.model.has_user_reacted_to_msg(
326328
self.emoji_name, self.message)
327329

330+
def get_update_widget_text(self, user_reacted: bool) -> str:
331+
count_text = (str(self.reaction_count)
332+
if self.reaction_count > 0 else '')
333+
reacted_check = CHECK_MARK if user_reacted else ''
334+
return f' {reacted_check} {count_text} '
335+
328336
def keypress(self, size: urwid_Size, key: str) -> Optional[str]:
337+
# Note that this is called before toggle_message_reaction.
329338
if is_command_key('ENTER', key):
330-
# Note that this is called before toggle_message_reaction.
331-
if self.has_user_reacted_to_msg():
332-
self.update_widget((None, ''), None)
333-
else:
334-
self.update_widget((None, f' {CHECK_MARK} '), None)
339+
self.reaction_count = (
340+
(self.reaction_count - 1)
341+
if self.has_user_reacted_to_msg()
342+
else (self.reaction_count + 1))
343+
self.update_widget(
344+
(None, self.get_update_widget_text(
345+
not self.has_user_reacted_to_msg())), None)
335346
return super().keypress(size, key)
336347

337348

zulipterminal/ui_tools/views.py

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

15581558
if new_text:
1559-
self.emojis_display = [
1560-
searched_emoji for searched_emoji in self.emoji_buttons
1559+
emoji_names_searched = [
1560+
searched_emoji.emoji_name
1561+
for searched_emoji in self.emoji_buttons
15611562
if match_emoji(searched_emoji.emoji_name, new_text)
15621563
]
1564+
self.emojis_display = self.generate_emoji_buttons(
1565+
emoji_names_searched)
15631566
else:
15641567
self.emojis_display = self.emoji_buttons
15651568

0 commit comments

Comments
 (0)