media

Медіа

Stateless-блок для отримання медіа TU з партнерського API. Нічого не зберігає і не оновлює за таймером.

Контракт

MediaContext = 'chat' | 'mail'
 
MediaItem {
  id
  type: 'photo' | 'video' | 'audio'
  previewUrl
  url
  sent?
  seen?
}
 
MediaPage {
  items: MediaItem[]
  nextCursor?: {
    photo?
    video?
  }
}
  • getMedia(context, cursor?) викликає API поточного проєкту й повертає MediaPage;
  • для Golden і Chathouse nextCursor відсутній;
  • для Prime фото й відео мають незалежні cursor; наступна сторінка завантажується тим самим методом.

Логіка

  1. Chat, mail або форма інвайта запитує медіа для потрібного контексту.
  2. Проєктний adapter виконує отримання медіа TU.
  3. Відповідь нормалізується до MediaItem.
  4. Вибрані IDs повертаються логіці відправлення або зберігаються в інвайті.

Проєкти

ПроєктChatMailФорма відповіді
Goldenфото, відеофото, до 2окремі списки без pagination
Chathouseфото, відеофото, відеоодин список без pagination; є sent/seen
Primeфото, відео, аудіофото, відеофото/відео курсором; аудіо окремим списком

Ліміти кількості вкладень і вимоги до листа перевіряє chat/mail або сендер, а не цей блок.

Chathouse перед відправленням перетворює вибраний catalog media id на id вкладення. Цей запит належить adapter-у відправлення.