Фаворити та чат-хісторі
Дві колонки програми:
- Фаворити — усі фаворити, обчислені фаворит-сервісом;
- Чат-хісторі — діалоги, останній контакт у яких був не більше
2 годинтому.
Обидві колонки використовують спільний стан останнього контакту TU+RU.
Дані
LastContact {
tuId
ruId
type: 'chat' | 'mail'
direction: 'incoming' | 'outgoing'
preview
createdAt
}- у пам’яті —
Map<TU+RU, LastContact>; - у SQLite — той самий стан для відновлення після перезапуску.
Профіль, онлайн, активність фаворита та блокування беруться з відповідних сервісів і тут не дублюються. Активність не впливає на присутність фаворита в колонці.
Оновлення
- При запуску з SQLite завантажуються записи не старші
2 годин. - Якщо вже потрібна відповідь API містить останнє повідомлення або лист, воно передається в цей сервіс.
- Відкриття чату, наша відправка та socket-подія також передають останній контакт.
- Стан оновлюється лише подією з новішим
createdAtі зберігається у SQLite. - Записи старші
2 годинвидаляються.
По проєктах
| Проєкт | Початкові дані |
|---|---|
| Golden | стан збирається з відкриття чатів, наших відправок і socket-подій |
| Chathouse | останній контакт береться з уже потрібних проходів діалогів і далі оновлюється подіями |
| Prime | останній контакт береться з уже потрібних проходів діалогів і далі оновлюється подіями |
Окремих періодичних API-запитів для цих колонок немає. Повна chat/mail history завантажується окремо при відкритті діалогу.