diff --git a/tg/controllers.py b/tg/controllers.py index 0fa8b04..f32440a 100644 --- a/tg/controllers.py +++ b/tg/controllers.py @@ -263,6 +263,7 @@ class Controller: return reply_to_msg = self.model.current_msg_id if msg := self.view.status.get_input(): + self.model.view_all_msgs() self.tg.reply_message(chat_id, reply_to_msg, msg) self.present_info("Message reply sent") else: @@ -286,6 +287,7 @@ class Controller: s.call(config.LONG_MSG_CMD.format(file_path=shlex.quote(f.name))) with open(f.name) as f: if replied_msg := strip_replied_msg(f.read().strip()): + self.model.view_all_msgs() self.tg.reply_message(chat_id, reply_to_msg, replied_msg) self.present_info("Message sent") else: @@ -697,10 +699,7 @@ class Controller: @bind(chat_handler, ["r"]) def read_msgs(self) -> None: - chat = self.model.chats.chats[self.model.current_chat] - chat_id = chat["id"] - msg_id = chat["last_message"]["id"] - self.tg.view_messages(chat_id, [msg_id]) + self.model.view_all_msgs() self.render() @bind(chat_handler, ["m"]) diff --git a/tg/models.py b/tg/models.py index 2c810c7..de853ee 100644 --- a/tg/models.py +++ b/tg/models.py @@ -77,9 +77,11 @@ class Model: return self.current_msg["id"] def jump_bottom(self) -> bool: + res = False if chat_id := self.chats.id_by_index(self.current_chat): - return self.msgs.jump_bottom(chat_id) - return False + res = self.msgs.jump_bottom(chat_id) + self.view_current_msg() + return res def set_current_chat_by_id(self, chat_id: int) -> bool: idx = next( @@ -122,13 +124,18 @@ class Model: if chat_id := self.chats.id_by_index(self.current_chat): self.tg.view_messages(chat_id, [msg_id]) + def view_all_msgs(self) -> None: + chat = self.chats.chats[self.current_chat] + chat_id = chat["id"] + msg_id = chat["last_message"]["id"] + self.tg.view_messages(chat_id, [msg_id]) + def next_msg(self, step: int = 1) -> bool: chat_id = self.chats.id_by_index(self.current_chat) if not chat_id: return False is_next = self.msgs.next_msg(chat_id, step) - if is_next: - self.view_current_msg() + self.view_current_msg() return is_next def prev_msg(self, step: int = 1) -> bool: @@ -155,6 +162,9 @@ class Model: chat_id = self.chats.id_by_index(self.current_chat) if chat_id is None: return False + # order is matter: this should be before send_message + # otherwise it will view message that was sent + self.view_all_msgs() self.msgs.send_message(chat_id, text) return True