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