(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(["converse"], factory);
} else {
factory(converse);
}
}(this, function (converse) {
var Strophe, $iq, converse, dayjs, html, _, __, converseConn;
converse.plugins.add("directory", {
'dependencies': [],
'initialize': function () {
_converse = this._converse;
Strophe = converse.env.Strophe;
$iq = converse.env.$iq;
html = converse.env.html;
dayjs = converse.env.dayjs;
_ = converse.env._;
__ = _converse.__;
class DirectoryDialog extends _converse.exports.BaseModal {
initialize() {
super.initialize();
this.listenTo(this.model, "change", () => this.requestUpdate());
this.addEventListener('shown.bs.modal', () =>
{
if (this.model.get("query"))
{
this.querySelector('#pade-directory-query').style.display = "none";
this.doDirectory();
}
else {
this.keyInput = this.querySelector('#pade-directory-query');
this.keyInput.focus();
this.keyInput.addEventListener('keyup', (ev) => {
this.keyUp(ev);
});
}
});
}
renderModal() {
return html`
`
}
getModalTitle () {
return __('Directory');
}
keyUp(ev) {
if (ev.key === "Enter")
{
const query = this.querySelector("#pade-directory-query").value.trim();
this.model.set("query", query)
this.doDirectory();
}
}
doDirectory() {
const query = this.model.get("query");
if (query != "")
{
const directoryResults = this.querySelector("#pade-directory-results");
console.debug("doDirectory", query);
findUsers(query, function(userList) {
displayUsers(userList, directoryResults);
});
}
}
};
_converse.api.elements.define('converse-pade-directory-dialog', DirectoryDialog);
_converse.api.listen.on('connected', async function() {
converseConn = await _converse.api.connection.get();
});
_converse.api.listen.on('getToolbarButtons', function(toolbar_el, buttons)
{
let style = "width:18px; height:18px; fill:var(--chat-color);";
if (toolbar_el.model.get("type") === "chatroom") {
style = "width:18px; height:18px; fill:var(--muc-color);";
}
buttons.push(html`
`);
return buttons;
});
console.debug("directory plugin is ready");
}
});
var performDirectory = function(ev)
{
ev.stopPropagation();
ev.preventDefault();
const model = new converse.env.Model();
model.set({ query: null});
_converse.api.modal.show('converse-pade-directory-dialog', { model });
}
async function findUsers(search, callback) {
console.debug('findUsers', search);
const stanza = $iq({type: 'set', to: "search." + converseConn.domain}).c('query', {xmlns: 'jabber:iq:search'}).c('x').t(search).up().c('email').t(search).up().c('nick').t(search);
const response = await _converse.api.sendIQ(stanza);
console.debug('findUsers - response', response);
var users = [];
var items = response.querySelectorAll('query item');
for (var i=0; i" + user.name + " " + user.jid + " " + user.email + " ";
}
html = html + ""
if (users.length == 0) html = "No user found";
directoryResults.innerHTML = "
" + html;
setTimeout(function()
{
var jids = directoryResults.querySelectorAll(".plugin-directory-jid");
for (var i=0; i