или авторизуйтесь, если у вас он уже есть
• Чаты — сложная фича: ключевые проблемы в синхронизации, сети и порядке сообщений.
• Начальное состояние получаем через REST (чаты, непрочитанные, последние сообщения).
• Актуальность поддерживаем через WebSocket и серверные события.
• REST + WebSocket дают консистентность на нескольких устройствах и уменьшают зависимость от ответов REST.
• Реконнект → при необходимости реинициализация, причём только актуального для пользователя чата.
• “Прочитано” оптимизируем batching + триггеры, учитываем офлайн и завершение приложения.
• InternetConnectionMonitor: отслеживает восстановление сети и помогает повторять действия.
• Отправка текста/вложений: UI-состояния (“отправляется/ошибка”), финальный порядок — только по серверным событиям.
• Вложения: upload URL → загрузка (в т.ч. multipart) → отправка сообщения; пер-файловые статусы и UX (прогресс/ошибка/удаление файла).
• Архитектура UI строится вокруг типизированного “списка элементов” (sealed-иерархии), UI без бизнес-логики.
• Пользовательские действия оформлены use case’ами; масштабирование через композицию и mixin’ы.