/* eslint-disable no-unused-vars, no-var */

var config = {};

config.hosts = {
    domain: 'meet.jitsi',
    muc: 'muc.meet.jitsi',
};

// ВАЖНО: Переопределяем настройки из основного config.js
// Используем HTTP (ws://) вместо HTTPS (wss://) для локальной разработки
// Это соответствует настройкам в docker-compose.yml: PUBLIC_URL_PROTOCOL=http, DISABLE_HTTPS=1
// Используем 127.0.0.1 вместо localhost, чтобы избежать проблем с кешированием браузера
config.bosh = 'http://127.0.0.1:8443/http-bind';
config.websocket = 'ws://127.0.0.1:8443/xmpp-websocket';

// Переопределяем hosts для правильной работы
if (typeof config.hosts === 'undefined') {
    config.hosts = {};
}
config.hosts.domain = 'meet.jitsi';
config.hosts.muc = 'muc.meet.jitsi';

// Язык по умолчанию
config.defaultLanguage = 'ru';

// Отключить prejoin страницу
config.prejoinPageEnabled = false;

// Не начинать с выключенным аудио/видео
config.startWithAudioMuted = false;
config.startWithVideoMuted = false;

// Отключить deep linking
config.disableDeepLinking = true;

// Отключить welcome/close страницы
config.enableWelcomePage = false;
config.enableClosePage = false;

// Отключить сторонние запросы
config.disableThirdPartyRequests = true;

// Разрешение видео: минимум 720P, рекомендация 1080P
config.resolution = 1080;

config.constraints = {
    video: {
        height: {
            ideal: 1080,
            max: 1080,
            min: 720
        },
        width: {
            ideal: 1920,
            max: 1920,
            min: 1280
        }
    }
};

// Включить обнаружение шумного микрофона
config.enableNoisyMicDetection = true;

// Отключить статистику и метрики
config.disableStats = true;
config.analytics = {
    disabled: true
};

// Отключить запись
config.disableLocalRecording = true;

// КРИТИЧНО: Переопределяем bosh и websocket с защитой от перезаписи
// Используем Object.defineProperty для защиты от перезаписи основным config.js
(function() {
    var boshUrl = 'http://127.0.0.1:8443/http-bind';
    var websocketUrl = 'ws://127.0.0.1:8443/xmpp-websocket';
    
    // Устанавливаем значения сразу
    config.bosh = boshUrl;
    config.websocket = websocketUrl;
    
    // Защищаем от перезаписи через Object.defineProperty
    try {
        Object.defineProperty(config, 'bosh', {
            get: function() { return boshUrl; },
            set: function(value) { 
                console.warn('[Jitsi Custom Config] Попытка изменить config.bosh на', value, '- игнорируется');
            },
            configurable: false,
            enumerable: true
        });
        
        Object.defineProperty(config, 'websocket', {
            get: function() { return websocketUrl; },
            set: function(value) { 
                console.warn('[Jitsi Custom Config] Попытка изменить config.websocket на', value, '- игнорируется');
            },
            configurable: false,
            enumerable: true
        });
    } catch (e) {
        // Если не удалось установить защиту, используем периодическую проверку
        setInterval(function() {
            if (config.bosh !== boshUrl) {
                config.bosh = boshUrl;
                console.log('[Jitsi Custom Config] Восстановлен config.bosh');
            }
            if (config.websocket !== websocketUrl) {
                config.websocket = websocketUrl;
                console.log('[Jitsi Custom Config] Восстановлен config.websocket');
            }
        }, 100);
    }
})();
