ru-profiles

Сервіс профілів RU

Тримає короткі профілі RU та повертає їх усім логікам.

Дані / стан

Найважливіше, що тримаємо

  • ПрофіліMap<ruId, profile>
  • Активні завантаженняMap<ruId, Promise<profile>>
Поле профілюСуть
idid RU
nameім’я
ageвік
avatarURL аватара або null
isSatellite?Golden-only

Логіка

  1. Під час ініціалізації сервіс отримання даних з стаку передає профілі глобальних фаворитів у initProfiles(profiles).
  2. getOrLoad(ruId):
    • повертає профіль із Map;
    • якщо профілю немає, запускає переданий profile-loader;
    • якщо цей RU вже завантажується, повертає наявний Promise замість нового запиту.
  3. upsertProfiles(profiles) приймає профілі від зовнішніх логік, порівнює з Map і:
    • додає новий профіль;
    • оновлює змінений;
    • нічого не робить, якщо змін немає.
  4. Під час відкриття профілю отримані дані передаються в upsertProfiles. Так само роблять інші логіки, якщо їхня вже потрібна відповідь містить профіль RU.
  5. Нові та змінені профілі передаємо в наявний механізм збереження на наш сервер.

Сервіс працює тільки з уніфікованим коротким профілем. Profile-loader та зовнішні логіки самі отримують і нормалізують проєктні дані.