diff --git a/zerver/lib/message.py b/zerver/lib/message.py index 6935fbc11d..ee1290f183 100644 --- a/zerver/lib/message.py +++ b/zerver/lib/message.py @@ -518,6 +518,10 @@ def apply_unread_message_event(state, message): unread_message_ids=[message_id], ) + if message.get('is_mentioned'): + if message_id not in state['mentions']: + state['mentions'].append(message_id) + for obj in state[unread_key]: if key_func(obj) == my_key: obj['unread_message_ids'].append(message_id) @@ -526,6 +530,3 @@ def apply_unread_message_event(state, message): state[unread_key].append(new_obj) state[unread_key].sort(key=key_func) - - if message.get('is_mentioned'): - state['mentions'].append(message_id) diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index 7b1034c39c..69f1cce6f7 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -452,14 +452,16 @@ class EventsRegisterTest(ZulipTestCase): def test_mentioned_send_message_events(self): # type: () -> None user = self.example_user('hamlet') - content = 'mentioning... @**' + user.full_name + '**' - self.do_test( - lambda: self.send_message(self.example_email('cordelia'), - "Verona", - Recipient.STREAM, - content) - ) + for i in range(3): + content = 'mentioning... @**' + user.full_name + '** hello ' + str(i) + self.do_test( + lambda: self.send_message(self.example_email('cordelia'), + "Verona", + Recipient.STREAM, + content) + + ) def test_pm_send_message_events(self): # type: () -> None