let ua;
let currentSession = null;

window.onload = function() {
    fetch('/api/get_sip_config.php')
        .then(response => response.json())
        .then(config => {
            if (config.error) {
                alert(config.error);
                return;
            }

            let socket = new JsSIP.WebSocketInterface('wss://' + config.servidor + ':8089/ws');

            ua = new JsSIP.UA({
                uri: 'sip:' + config.usuario + '@' + config.servidor,
                password: config.senha,
                sockets: [socket],
                register: true
            });

            ua.on('connected', function() {
                console.log('WebSocket conectado.');
            });

            ua.on('disconnected', function() {
                console.log('WebSocket desconectado.');
                document.getElementById('sipStatus').innerText = 'Desconectado';
            });

            ua.on('registered', function() {
                console.log('SIP Registrado com sucesso.');
                document.getElementById('sipStatus').innerText = 'Online';
            });

            ua.on('registrationFailed', function() {
                console.log('Falha ao registrar SIP.');
                document.getElementById('sipStatus').innerText = 'Erro no Registro';
            });

            ua.start();
        });
};

function makeCall() {
    if (!ua || ua.isRegistered() !== true) {
        alert('SIP não registrado. Aguarde conexão.');
        return;
    }

    let number = document.getElementById('inputMsg').value;
    if (!number.trim()) {
        alert('Digite um número válido.');
        return;
    }

    let target = 'sip:' + number + '@dominio_destino.com';  // Ajuste o domínio SIP real do seu provedor

    currentSession = ua.call(target, {
        mediaConstraints: { audio: true, video: false }
    });

    currentSession.on('ended', function() {
        console.log('Chamada terminada');
    });

    currentSession.on('failed', function() {
        console.log('Chamada falhou');
    });
}

function hangUp() {
    if (currentSession) {
        currentSession.terminate();
    }
}
