Сервіс профілів RU
Тримає короткі профілі RU та повертає їх усім логікам.
Дані / стан
Найважливіше, що тримаємо
- Профілі —
Map<ruId, profile>- Активні завантаження —
Map<ruId, Promise<profile>>
| Поле профілю | Суть |
|---|---|
id | id RU |
name | ім’я |
age | вік |
avatar | URL аватара або null |
isSatellite? | Golden-only |
Логіка
- Під час ініціалізації сервіс отримання даних з стаку передає профілі глобальних фаворитів у
initProfiles(profiles). getOrLoad(ruId):- повертає профіль із Map;
- якщо профілю немає, запускає переданий profile-loader;
- якщо цей RU вже завантажується, повертає наявний Promise замість нового запиту.
upsertProfiles(profiles)приймає профілі від зовнішніх логік, порівнює з Map і:- додає новий профіль;
- оновлює змінений;
- нічого не робить, якщо змін немає.
- Під час відкриття профілю отримані дані передаються в
upsertProfiles. Так само роблять інші логіки, якщо їхня вже потрібна відповідь містить профіль RU. - Нові та змінені профілі передаємо в наявний механізм збереження на наш сервер.
Сервіс працює тільки з уніфікованим коротким профілем. Profile-loader та зовнішні логіки самі отримують і нормалізують проєктні дані.