Stack Socket
src/main/socket/stack.socket.ts · src/main/socket/socket-message.handler.ts
WebSocket з’єднання між Electron-додатком і Stack-сервером. Встановлюється одразу після логіну.
Команди від сервера
| Подія | Дія |
|---|---|
GET_LOG | Надсилає лог-файл на сервер |
RESTART | app.quit() — закриває застосунок |
UPDATE_SENDER_TYPE | Оновлює lady.findNew для TU |
DROP_LADY | Видаляє TU з ранера (через чергу) |
SET_LADY | Додає TU до ранера (через чергу) |
SUPERVISOR_CONNECTED | Надсилає повний стан застосунку супервайзеру |
SUPERVISOR_DISCONNECTED | Прибирає флаг супервайзера |
Черга подій (DROP/SET LADY)
DROP_LADY і SET_LADY виконуються послідовно через чергу — щоб не виникали конфлікти при одночасній зміні TU.
Черга чекає на isSuccessInitialized = true (максимум 5 хвилин). Якщо ініціалізація не завершилась — кидає помилку.
SUPERVISOR_CONNECTED / DISCONNECTED
SUPERVISOR_CONNECTED — виставляє supervisorConnected = true на сокеті і викликає SupervisorStreamService sendInitialSnapshot({ ladies, favorites, tasks, streams }). Той шле один UPDATE_APP_STATE з повним стартовим payload-ом.
SUPERVISOR_DISCONNECTED — supervisorConnected = false + onSupervisorDisconnected() (скидає buffer і favoritesSnapshot).
Після старту всі подальші зміни в стані оператора (TU, favorite, task, чат/маїл/email активність, стан камер) ідуть тімліду через SupervisorStreamService як часткові патчі (AppStatePatch) — окремий event APP_STATE більше не використовується, все летить через UPDATE_APP_STATE.
Реконект
При втраті з’єднання — автоматичний реконект. Після реконекту: syncLadiesOnReconnect() — порівнює список TU і синхронізує:
- TU яких немає →
DROP_LADYв чергу - Нові TU →
SET_LADYв чергу - Фільтрує тільки
status = AVAILABLE