From ddb810589fa796c71b35e10d4c3cb0bc4db05f41 Mon Sep 17 00:00:00 2001 From: Alexey Polyakov Date: Sat, 9 May 2026 17:55:39 +0300 Subject: [PATCH] =?UTF-8?q?MAX:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=83=D1=8F=D0=B7=D0=B2=D0=B8?= =?UTF-8?q?=D0=BC=D0=BE=D1=81=D1=82=D0=B8=20=D1=81=20=D0=B8=D0=B7=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=BD=D1=8B=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/tools.py | 13 +++++++------ src/oneme/processors/history.py | 9 +++++---- src/oneme/processors/messages.py | 8 ++++---- src/oneme/processors/search.py | 6 +++--- src/tamtam/processors/messages.py | 4 ++-- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/common/tools.py b/src/common/tools.py index bf51f78..9bcff1f 100644 --- a/src/common/tools.py +++ b/src/common/tools.py @@ -204,21 +204,22 @@ class Tools: if include_favourites: # Получаем последнее сообщение из избранного + favouriteChatId = -senderId message, messageTime = await self.get_last_message( - senderId, db_pool, protocol_type=protocol_type + favouriteChatId, db_pool, protocol_type=protocol_type ) - # ID избранного + # ID избранного для клиента chatId = senderId ^ senderId - # Получаем последнюю активность участника (отправителя) в избранном + # Получаем последнюю активность в избранном participants = await self.get_participant_last_activity( - senderId, [senderId], db_pool + favouriteChatId, [senderId], db_pool ) - # Получаем ID предыдущего сообщения для избранного (чат ID = senderId) + # Получаем ID предыдущего сообщения для избранного prevMessageId = await self.get_previous_message_id( - senderId, db_pool, protocol_type=protocol_type + favouriteChatId, db_pool, protocol_type=protocol_type ) # Хардкодим в лист чатов избранное diff --git a/src/oneme/processors/history.py b/src/oneme/processors/history.py index d8de329..15deab8 100644 --- a/src/oneme/processors/history.py +++ b/src/oneme/processors/history.py @@ -23,16 +23,17 @@ class HistoryProcessors(BaseProcessor): messages = [] # Если пользователь хочет получить историю из избранного, - # то выставляем в качестве ID чата его ID - if chatId == (senderId ^ senderId): - chatId = senderId + # то выставляем в качестве ID чата отрицательный ID отправителя + isFavourite = chatId == (senderId ^ senderId) + if isFavourite: + chatId = -senderId # Проверяем, существует ли чат async with self.db_pool.acquire() as conn: async with conn.cursor() as cursor: # Проверяем состоит ли пользователь в чате, # только в случае того, если это не избранное - if chatId != senderId: + if not isFavourite: await cursor.execute("SELECT * FROM chats WHERE id = %s", (chatId,)) chat = await cursor.fetchone() diff --git a/src/oneme/processors/messages.py b/src/oneme/processors/messages.py index 6c49b6d..ab7a4cd 100644 --- a/src/oneme/processors/messages.py +++ b/src/oneme/processors/messages.py @@ -88,9 +88,9 @@ class MessagesProcessors(BaseProcessor): chatId = userId ^ senderId # Если клиент хочет отправить сообщение в избранное, - # то выставляем в качестве ID чата ID отправителя + # то выставляем в качестве ID чата отрицательный ID отправителя if chatId == (senderId ^ senderId): - chatId = senderId + chatId = -senderId participants = [senderId] else: # Если все таки клиент хочет отправить сообщение в нормальный чат, @@ -143,7 +143,7 @@ class MessagesProcessors(BaseProcessor): participant, { "eventType": "new_msg", - "chatId": 0 if chatId == (senderId ^ senderId) else chatId, + "chatId": 0 if chatId == -senderId else chatId, "message": bodyMessage, "prevMessageId": lastMessageId, "time": messageTime, @@ -153,7 +153,7 @@ class MessagesProcessors(BaseProcessor): # Данные пакета payload = { - "chatId": 0 if chatId == senderId else chatId, + "chatId": 0 if chatId == -senderId else chatId, "message": bodyMessage, "unread": 0, "mark": messageTime diff --git a/src/oneme/processors/search.py b/src/oneme/processors/search.py index 5211c38..75534f2 100644 --- a/src/oneme/processors/search.py +++ b/src/oneme/processors/search.py @@ -223,12 +223,12 @@ class SearchProcessors(BaseProcessor): ) ) else: - # Получаем последнее сообщение из чата + # Получаем последнее сообщение из избранного message, messageTime = await self.tools.get_last_message( - senderId, self.db_pool, protocol_type=self.type + -senderId, self.db_pool, protocol_type=self.type ) - # ID избранного + # ID избранного для клиента chatId = senderId ^ senderId # Добавляем чат в список diff --git a/src/tamtam/processors/messages.py b/src/tamtam/processors/messages.py index 67bd6a6..c9cd2df 100644 --- a/src/tamtam/processors/messages.py +++ b/src/tamtam/processors/messages.py @@ -135,7 +135,7 @@ class MessagesProcessors(BaseProcessor): participant, { "eventType": "new_msg", - "chatId": 0 if chatId == senderId else chatId, + "chatId": chatId, "message": bodyMessage, "prevMessageId": lastMessageId, "time": messageTime, @@ -145,7 +145,7 @@ class MessagesProcessors(BaseProcessor): # Данные пакета payload = { - "chatId": 0 if chatId == senderId else chatId, + "chatId": chatId, "message": bodyMessage, "unread": 0, "mark": messageTime