mirror of
https://github.com/openmax-server/server.git
synced 2026-05-23 20:11:41 +03:00
MAX: bootstrap-история в LOGIN — клиент перестал думать что всё уже синканулось
В ответе LOGIN сервер слал messages: {} и chatMarker: 0. Десктопный
клиент в этом случае считает, что локальная история уже синхронизирована
со старого запуска, и НЕ отправляет CHAT_HISTORY (49) при открытии чата.
В окне видно только lastMessage из chats[], а вся реальная переписка —
ничерта.
- src/common/tools.py: collect_bootstrap_history(chatIds, ...) —
собирает карту {chatId: [последние N сообщений]}, в т.ч. избранное
под клиентским id = senderId ^ senderId.
- src/oneme/processors/auth.py: подсовываем эту карту в
payload.messages, chatMarker = текущее время вместо 0.
This commit is contained in:
@@ -603,11 +603,24 @@ class AuthProcessors(BaseProcessor):
|
||||
username=user.get("username"),
|
||||
)
|
||||
|
||||
# Список ID чатов до того как generate_chats затрёт переменную
|
||||
chat_ids_for_history = list(chats)
|
||||
|
||||
# Генерируем список чатов
|
||||
chats = await self.tools.generate_chats(
|
||||
chats, self.db_pool, user.get("id"), protocol_type=self.type
|
||||
)
|
||||
|
||||
# Bootstrap-история: карта {chatId: [messages]}.
|
||||
# Без неё десктопный MAX считает, что локальная история уже
|
||||
# синхронизирована, и не запрашивает CHAT_HISTORY (49).
|
||||
bootstrap_messages = await self.tools.collect_bootstrap_history(
|
||||
chat_ids_for_history,
|
||||
self.db_pool,
|
||||
user.get("id"),
|
||||
protocol_type=self.type,
|
||||
)
|
||||
|
||||
# Генерируем список контактов
|
||||
contacts = await self.tools.collect_user_contacts(
|
||||
user.get("id"), self.db_pool, self.config.avatar_base_url
|
||||
@@ -621,8 +634,8 @@ class AuthProcessors(BaseProcessor):
|
||||
payload = {
|
||||
"profile": profile,
|
||||
"chats": chats,
|
||||
"chatMarker": 0,
|
||||
"messages": {},
|
||||
"chatMarker": int(time.time() * 1000),
|
||||
"messages": bootstrap_messages,
|
||||
"contacts": contacts,
|
||||
"presence": presence,
|
||||
"config": {
|
||||
|
||||
Reference in New Issue
Block a user