favorites-history

Фаворити та чат-хісторі

Дві колонки програми:

  • Фаворити — усі фаворити, обчислені фаворит-сервісом;
  • Чат-хісторі — діалоги, останній контакт у яких був не більше 2 годин тому.

Обидві колонки використовують спільний стан останнього контакту TU+RU.

Дані

LastContact {
  tuId
  ruId
  type: 'chat' | 'mail'
  direction: 'incoming' | 'outgoing'
  preview
  createdAt
}
  • у пам’яті — Map<TU+RU, LastContact>;
  • у SQLite — той самий стан для відновлення після перезапуску.

Профіль, онлайн, активність фаворита та блокування беруться з відповідних сервісів і тут не дублюються. Активність не впливає на присутність фаворита в колонці.

Оновлення

  1. При запуску з SQLite завантажуються записи не старші 2 годин.
  2. Якщо вже потрібна відповідь API містить останнє повідомлення або лист, воно передається в цей сервіс.
  3. Відкриття чату, наша відправка та socket-подія також передають останній контакт.
  4. Стан оновлюється лише подією з новішим createdAt і зберігається у SQLite.
  5. Записи старші 2 годин видаляються.

По проєктах

ПроєктПочаткові дані
Goldenстан збирається з відкриття чатів, наших відправок і socket-подій
Chathouseостанній контакт береться з уже потрібних проходів діалогів і далі оновлюється подіями
Primeостанній контакт береться з уже потрібних проходів діалогів і далі оновлюється подіями

Окремих періодичних API-запитів для цих колонок немає. Повна chat/mail history завантажується окремо при відкритті діалогу.