system

tabsService

tabsService

src/main/services/tabs.service.ts


Для чого це

Кожна анкета ТЮ живе у своєму BrowserWindow з ізольованою сесією. tabsService — це реєстр цих вікон і єдиний канал спілкування між main-процесом і вкладками. Без нього неможлива жодна взаємодія з сайтом.


Що робить

  • createChatTab({ id_api, password, PUBLIC_KEY }) — створює BrowserWindow з ізольованим partition: temp:profile_${id_api}, відкриває goldenbride.net/chat, логінить анкету через loginAndConnect
  • getTab(id_api) / getAllTabs() — доступ до вікон
  • sendMessageToTabAsync() — надсилає команду у вкладку через IPC, чекає відповідь (timeout 10 сек). При помилці — читає JSESSIONID з cookies для діагностики
  • sendMessageToTab() — fire-and-forget версія

Команди до вкладок (MainToTabCommand)

КомандаЩо робить
TranslateПерекласти текст через сайт
UploadMediaFileЗавантажити медіа в чат
UploadMailMediaFileЗавантажити медіа в лист
DeleteMediaFileВидалити медіафайл
SetAuthUserOnlineВстановити онлайн-статус
GetLadyPaidChatMediaОтримати платні медіа чату
UniversalRPCВиконати довільний RPC-запит
LogoutРозлогінити вкладку

Нюанси

  • Ізольовані сесії temp:profile_${id_api} — cookies однієї анкети не впливають на інші
  • При створенні вкладки — очищається вся попередня сесія (clearStorageData, clearCache, cookies)
  • JSESSIONID перехоплення — дозволяється тільки з /rlogin, всі інші Set-Cookie JSESSIONID — блокуються. Це захист від перезапису сесії сторонніми редіректами
  • При помилці Bad status: 500 — тригериться handleNeedRefreshPublicKey
  • Таймаут відповіді вкладки — 10 секунд, після чого помилка трекається в errorMonitorService

Зв’язки