Toooo MaTchING MBSS

Перевод чатов на линию матчинга

// ==UserScript==
// @name         Toooo MaTchING MBSS
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Перевод чатов на линию матчинга
// @author       v.stazhok
// @match        https://support-admin-common-master.mbss.maxbit.private/*
// @grant        none
// ==/UserScript==

(function() {
  'use strict';

  const projectSelector = '.list-item';
  const sidebarPanelSelector = '.flex.sidebar-panel .panel-elements';

  // Наблюдаем за появлением панели и вставляем кнопку
  const observer = new MutationObserver((mutations, obs) => {
    const panel = document.querySelector(sidebarPanelSelector);
    if (!panel) return;
    obs.disconnect();
    injectButton(panel);
  });

  observer.observe(document.body, { childList: true, subtree: true });

  function injectButton(container) {
    const btn = document.createElement('div');
    btn.classList.add('vac-svg-button');
    btn.style.borderRadius = '0';
    btn.style.padding = '4px 8px';
    btn.style.marginLeft = '4px';
    btn.style.cursor = 'pointer';
    btn.textContent = 'Transfer to Matching';

    btn.addEventListener('click', () => {
      const confirmed = confirm('Вы уверены, что желаете перевести чат на линию поддержки Matching?');
      if (!confirmed) return;

      const projectText = document.querySelector(projectSelector)?.innerText || '';
      const code = projectText.split(' ')[0] || '';
      const target = `${code} MATCHING`;

      // Открываем меню опций комнаты
      document.querySelector('.vac-svg-button.vac-room-options')?.click();

      // Переходим на вкладку Transfer To → Matching
      setTimeout(() => {
        document.querySelector('#active_room_transferTo')?.click();
        document.querySelector('#tab-1')?.click();
      }, 400);

      // Заполняем поле и отправляем Enter
      setTimeout(() => {
        const input = document.querySelector('.el-input__inner');
        if (!input) return;
        input.value = target;
        input.dispatchEvent(new Event('input', { bubbles: true }));
        input.dispatchEvent(new Event('change', { bubbles: true }));
        input.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
        input.dispatchEvent(new KeyboardEvent('keyup',   { key: 'Enter', bubbles: true }));
      }, 1500);
    });

    container.appendChild(btn);
  }
})();