mirror of
https://github.com/openmax-server/server.git
synced 2026-05-23 12:01:43 +03:00
fix(chat history): фикс
This commit is contained in:
@@ -21,6 +21,8 @@ class HistoryProcessors(BaseProcessor):
|
|||||||
from_time = payload.get("from", 0)
|
from_time = payload.get("from", 0)
|
||||||
getMessages = payload.get("getMessages", True)
|
getMessages = payload.get("getMessages", True)
|
||||||
messages = []
|
messages = []
|
||||||
|
backward_count = 0
|
||||||
|
forward_count = 0
|
||||||
|
|
||||||
# Если пользователь хочет получить историю из избранного,
|
# Если пользователь хочет получить историю из избранного,
|
||||||
# то выставляем в качестве ID чата отрицательный ID отправителя
|
# то выставляем в качестве ID чата отрицательный ID отправителя
|
||||||
@@ -60,6 +62,7 @@ class HistoryProcessors(BaseProcessor):
|
|||||||
|
|
||||||
for row in result:
|
for row in result:
|
||||||
messages.append(self.tools.build_message_dict(row, self.type))
|
messages.append(self.tools.build_message_dict(row, self.type))
|
||||||
|
backward_count = len(result)
|
||||||
if forward > 0:
|
if forward > 0:
|
||||||
await cursor.execute(
|
await cursor.execute(
|
||||||
"SELECT * FROM messages WHERE chat_id = %s AND time > %s ORDER BY time ASC LIMIT %s",
|
"SELECT * FROM messages WHERE chat_id = %s AND time > %s ORDER BY time ASC LIMIT %s",
|
||||||
@@ -70,6 +73,7 @@ class HistoryProcessors(BaseProcessor):
|
|||||||
|
|
||||||
for row in result:
|
for row in result:
|
||||||
messages.append(self.tools.build_message_dict(row, self.type))
|
messages.append(self.tools.build_message_dict(row, self.type))
|
||||||
|
forward_count = len(result)
|
||||||
|
|
||||||
# Сортируем сообщения по времени
|
# Сортируем сообщения по времени
|
||||||
messages.sort(key=lambda x: x["time"])
|
messages.sort(key=lambda x: x["time"])
|
||||||
@@ -78,12 +82,15 @@ class HistoryProcessors(BaseProcessor):
|
|||||||
# Парсер a23 в MAX-клиенте ждёт ВСЕГДА все 5 полей (messages,
|
# Парсер a23 в MAX-клиенте ждёт ВСЕГДА все 5 полей (messages,
|
||||||
# forward, backward, pos, total). Если каких-то нет — клиент
|
# forward, backward, pos, total). Если каких-то нет — клиент
|
||||||
# бросает соединение и история не отображается.
|
# бросает соединение и история не отображается.
|
||||||
|
# ВАЖНО: forward/backward здесь = СКОЛЬКО СООБЩЕНИЙ ВЕРНУЛИ
|
||||||
|
# (а не "сколько ещё осталось"). Если 0 — клиент игнорирует
|
||||||
|
# массив messages и считает что "ничего нет".
|
||||||
payload = {
|
payload = {
|
||||||
"messages": messages,
|
"messages": messages,
|
||||||
"forward": 0, # сколько ещё доступно вперёд
|
"forward": forward_count, # сколько вернули вперёд
|
||||||
"backward": 0, # сколько ещё доступно назад
|
"backward": backward_count, # сколько вернули назад
|
||||||
"pos": 0, # позиция курсора
|
"pos": 0, # позиция курсора (offset)
|
||||||
"total": len(messages), # всего в чате (примерно)
|
"total": len(messages), # всего в этой пачке
|
||||||
}
|
}
|
||||||
|
|
||||||
# Собираем пакет
|
# Собираем пакет
|
||||||
|
|||||||
Reference in New Issue
Block a user