(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(["converse"], factory);
} else {
factory(converse);
}
}(this, function (converse) {
let _converse, html, __, converseConn, voicechatServer;
converse.plugins.add("voicechat", {
dependencies: [],
initialize: function () {
_converse = this._converse;
html = converse.env.html;
__ = _converse.__;
_converse.api.settings.extend({
voicechat_server: 'https://talk.4ng.net'
});
_converse.api.listen.on('getToolbarButtons', function(toolbar_el, buttons) {
voicechatServer = _converse.api.settings.get('voicechat_server');
console.debug("getToolbarButtons", voicechatServer, toolbar_el.model);
if (toolbar_el.model.get("type") === "chatroom") {
const voiceChatStart = __('Voice Chat');
const color = "fill:var(--muc-color);";
buttons.push(html`
`);
}
return buttons;
});
_converse.api.listen.on('connected', async function() {
converseConn = await _converse.api.connection.get();
});
console.log("voicechat plugin is ready");
}
});
function performAudio(ev) {
ev.stopPropagation();
ev.preventDefault();
const toolbar_el = converse.env.utils.ancestor(ev.target, 'converse-chat-toolbar');
const chatview = _converse.chatboxviews.get(toolbar_el.model.get('jid'));
console.debug("performAudio", chatview, toolbar_el.model);
const jid = toolbar_el.model.get("jid");
const id = toolbar_el.model.get("box_id");
const occupants = chatview.querySelector('.occupants');
console.debug("performAudio", jid, id, occupants, chatview);
const button = toolbar_el.querySelector('.plugin-voicechat');
const chatroom_body = chatview.querySelector('.chatroom-body');
let iframe = chatview.querySelector('.occupants-voice-chat');
if (!iframe)
{
iframe = document.createElement("div");
iframe.classList.add('occupants-voice-chat'); // col-xs-12 col-md-4 col-xl-2
iframe.style.display = "none";
iframe.style.width = "500px";
iframe.classList.add('col-xs-12');
iframe.classList.add('col-md-4');
iframe.classList.add('col-xl-2');
chatroom_body.appendChild(iframe);
}
if (iframe.style.display == "none") {
chatview.model.save({'hidden_occupants': true});
const style = "width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden;";
console.debug("performAudio iframe", voicechatServer, jid);
iframe.innerHTML = '';
iframe.style.display = "";
button.classList.add('blink_me');
} else {
chatview.model.save({'hidden_occupants': false});
iframe.innerHTML = "";
iframe.style.display = "none";
button.classList.remove('blink_me');
}
chatview.scrollDown();
}
}));