Commit 8780f7a1 authored by JC Brand's avatar JC Brand

Fix linting errors (no-unused-vars)

parent 05cdae99
......@@ -6,12 +6,8 @@
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const _ = converse.env._;
const $iq = converse.env.$iq;
const $msg = converse.env.$msg;
const $pres = converse.env.$pres;
const Strophe = converse.env.Strophe;
const u = converse.env.utils;
describe("The nickname autocomplete feature", function () {
......
/*global waitUntilPromise */
(function (root, factory) {
define([
"jasmine",
......@@ -10,7 +8,6 @@
"use strict";
const $iq = converse.env.$iq,
$msg = converse.env.$msg,
Backbone = converse.env.Backbone,
Strophe = converse.env.Strophe,
sizzle = converse.env.sizzle,
_ = converse.env._,
......
......@@ -7,7 +7,6 @@
} (this, function (jasmine, mock, test_utils) {
"use strict";
const _ = converse.env._;
const $iq = converse.env.$iq;
const $msg = converse.env.$msg;
const Strophe = converse.env.Strophe;
const u = converse.env.utils;
......@@ -71,7 +70,7 @@
await _converse.chatboxes.onMessage(msg);
const view = _converse.chatboxviews.get(sender_jid);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg--action').length).toBe(1);
expect(_.includes(view.el.querySelector('.chat-msg__author').textContent, '**Mercutio')).toBeTruthy();
expect(view.el.querySelector('.chat-msg__text').textContent).toBe('is tired');
......@@ -115,14 +114,12 @@
const online_contacts = _converse.rosterview.el.querySelectorAll('.roster-group .current-xmpp-contact a.open-chat');
expect(online_contacts.length).toBe(15);
let el = online_contacts[0];
const jid = el.textContent.trim().replace(/ /g,'.').toLowerCase() + '@montague.lit';
el.click();
await u.waitUntil(() => document.querySelectorAll("#conversejs .chatbox").length == 2);
expect(_converse.chatboxviews.trimChats).toHaveBeenCalled();
online_contacts[1].click();
await u.waitUntil(() => _converse.chatboxes.length == 3);
el = online_contacts[1];
const new_jid = el.textContent.trim().replace(/ /g,'.').toLowerCase() + '@montague.lit';
expect(_converse.chatboxviews.trimChats).toHaveBeenCalled();
// Check that new chat boxes are created to the left of the
// controlbox (but to the right of all existing chat boxes)
......@@ -233,7 +230,7 @@
await test_utils.waitForRoster(_converse, 'current');
const sender_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
const chat = await _converse.api.chats.create(sender_jid, {'minimized': true});
await _converse.api.chats.create(sender_jid, {'minimized': true});
await u.waitUntil(() => _converse.chatboxes.length > 1);
const chatBoxView = _converse.chatboxviews.get(sender_jid);
expect(u.isVisible(chatBoxView.el)).toBeFalsy();
......@@ -257,7 +254,6 @@
const view = await test_utils.openChatBoxFor(_converse, contact_jid);
const el = sizzle('a.open-chat:contains("'+view.model.getDisplayName()+'")', _converse.rosterview.el).pop();
await u.waitUntil(() => u.isVisible(el));
const jid = el.textContent.replace(/ /g,'.').toLowerCase() + '@montague.lit';
const textarea = view.el.querySelector('.chat-textarea');
await u.waitUntil(() => u.isVisible(textarea));
textarea.blur();
......@@ -470,7 +466,7 @@
keyCode: 13 // Enter
};
view.onKeyDown(ev);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
view.onKeyUp(ev);
expect(counter.textContent).toBe('200');
......@@ -758,7 +754,6 @@
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
async function (done, _converse) {
let contact, sent_stanza, IQ_id, stanza;
await test_utils.waitUntilDiscoConfirmed(_converse, 'montague.lit', [], ['vcard-temp']);
await u.waitUntil(() => _converse.xmppstatus.vcard.get('fullname'));
await test_utils.waitForRoster(_converse, 'current');
......@@ -886,7 +881,6 @@
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {},
async function (done, _converse) {
let contact, sent_stanza, IQ_id, stanza;
await test_utils.waitUntilDiscoConfirmed(_converse, 'montague.lit', [], ['vcard-temp']);
await u.waitUntil(() => _converse.xmppstatus.vcard.get('fullname'));
await test_utils.waitForRoster(_converse, 'current');
......@@ -1026,7 +1020,6 @@
view.close();
expect(view.model.get('chat_state')).toBe('inactive');
expect(_converse.connection.send).toHaveBeenCalled();
var $stanza = _converse.connection.send.calls.argsFor(0)[0].tree();
const stanza = _converse.connection.send.calls.argsFor(0)[0].tree();
expect(stanza.getAttribute('to')).toBe(contact_jid);
expect(stanza.childNodes.length).toBe(3);
......@@ -1181,7 +1174,7 @@
spyOn(_converse, 'clearMsgCounter').and.callThrough();
await _converse.chatboxes.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(_converse.incrementMsgCounter).toHaveBeenCalled();
expect(_converse.clearMsgCounter).not.toHaveBeenCalled();
expect(_converse.msg_counter).toBe(1);
......@@ -1588,8 +1581,7 @@
await test_utils.waitForRoster(_converse, 'current', 1);
const base_url = document.URL.split(window.location.pathname)[0],
message = "geo:37.786971,-122.399677",
const message = "geo:37.786971,-122.399677",
contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
await test_utils.openChatBoxFor(_converse, contact_jid);
......
......@@ -2,9 +2,7 @@
define(["jasmine", "mock", "test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
const _ = converse.env._,
$pres = converse.env.$pres,
$msg = converse.env.$msg,
$iq = converse.env.$iq,
u = converse.env.utils,
Strophe = converse.env.Strophe,
sizzle = converse.env.sizzle;
......@@ -198,7 +196,6 @@
test_utils.createContacts(_converse, 'all').openControlBox();
const panel = _converse.chatboxviews.get('controlbox').contactspanel;
const cbview = _converse.chatboxviews.get('controlbox');
cbview.el.querySelector('.add-contact').click()
const modal = _converse.rosterview.add_contact_modal;
......@@ -233,7 +230,6 @@
async function (done, _converse) {
test_utils.openControlBox();
const panel = _converse.chatboxviews.get('controlbox').contactspanel;
const cbview = _converse.chatboxviews.get('controlbox');
cbview.el.querySelector('.add-contact').click()
const modal = _converse.rosterview.add_contact_modal;
......@@ -243,7 +239,6 @@
await u.waitUntil(() => u.isVisible(modal.el), 1000);
expect(!_.isNull(modal.el.querySelector('form.add-xmpp-contact'))).toBeTruthy();
const input_jid = modal.el.querySelector('input[name="jid"]');
const input_name = modal.el.querySelector('input[name="name"]');
input_jid.value = 'someone@montague.lit';
modal.el.querySelector('button[type="submit"]').click();
......@@ -280,7 +275,6 @@
window.XMLHttpRequest = jasmine.createSpy('XMLHttpRequest');
XMLHttpRequest.and.callFake(() => xhr);
const panel = _converse.chatboxviews.get('controlbox').contactspanel;
const cbview = _converse.chatboxviews.get('controlbox');
cbview.el.querySelector('.add-contact').click()
const modal = _converse.rosterview.add_contact_modal;
......@@ -353,7 +347,6 @@
window.XMLHttpRequest = jasmine.createSpy('XMLHttpRequest');
XMLHttpRequest.and.callFake(() => xhr);
const panel = _converse.chatboxviews.get('controlbox').contactspanel;
const cbview = _converse.chatboxviews.get('controlbox');
cbview.el.querySelector('.add-contact').click()
modal = _converse.rosterview.add_contact_modal;
......
......@@ -4,8 +4,7 @@
"mock",
"test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
const b64_sha1 = converse.env.b64_sha1,
_ = converse.env._,
const _ = converse.env._,
u = converse.env.utils;
describe("Converse", function() {
......@@ -354,7 +353,7 @@
describe("The \"plugins.add\" method", function() {
it("throws an error when multiple plugins attempt to register with the same name",
mock.initConverse((done, _converse) => {
mock.initConverse((done, _converse) => { // eslint-disable-line no-unused-vars
converse.plugins.add('myplugin', {});
const error = new TypeError('Error: plugin with name "myplugin" has already been registered!');
......
......@@ -6,7 +6,7 @@
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const { Backbone, Promise, Strophe, $iq, $msg, $pres, b64_sha1, dayjs, sizzle, _ } = converse.env;
const { Promise, $msg, $pres, sizzle } = converse.env;
const u = converse.env.utils;
describe("Emojis", function () {
......@@ -175,7 +175,7 @@
.c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree());
await new Promise(resolve => _converse.on('chatBoxInitialized', resolve));
const view = _converse.api.chatviews.get(sender_jid);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
const chat_content = view.el.querySelector('.chat-content');
let message = chat_content.querySelector('.chat-msg__text');
expect(u.hasClass('chat-msg__text--larger', message)).toBe(true);
......@@ -187,7 +187,7 @@
'id': _converse.connection.getUniqueId()
}).c('body').t('😇 Hello world! 😇 😇').up()
.c('active', {'xmlns': 'http://jabber.org/protocol/chatstates'}).tree());
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
message = chat_content.querySelector('.message:last-child .chat-msg__text');
expect(u.hasClass('chat-msg__text--larger', message)).toBe(false);
......@@ -200,7 +200,7 @@
preventDefault: function preventDefault () {},
keyCode: 13 // Enter
});
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(3);
expect(chat_content.querySelector('.message:last-child .chat-msg__text').textContent).toBe('💩 😇');
expect(textarea.value).toBe('');
......@@ -217,7 +217,7 @@
preventDefault: function preventDefault () {},
keyCode: 13 // Enter
});
await new Promise((resolve, reject) => view.model.messages.once('rendered', resolve));
await new Promise(resolve => view.model.messages.once('rendered', resolve));
expect(view.model.messages.models.length).toBe(3);
message = chat_content.querySelector('.message:last-child .chat-msg__text');
expect(u.hasClass('chat-msg__text--larger', message)).toBe(false);
......
(function (root, factory) {
define(["jasmine", "mock", "test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
define(["jasmine", "mock"], factory);
} (this, function (jasmine, mock) {
return describe("The _converse Event Emitter", function() {
......
......@@ -276,7 +276,7 @@
'name': "my-juliet.jpg"
};
view.model.sendFiles([file]);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
await u.waitUntil(() => _.filter(IQ_stanzas, iq => iq.querySelector('iq[to="upload.montague.tld"] request')).length);
const iq = IQ_stanzas.pop();
......@@ -323,7 +323,7 @@
'oob_url': message.get('get'),
'message': message.get('get')
});
return new Promise((resolve, reject) => view.model.messages.once('rendered', resolve));
return new Promise(resolve => view.model.messages.once('rendered', resolve));
});
});
let sent_stanza;
......@@ -383,7 +383,7 @@
'name': "my-juliet.jpg"
};
view.model.sendFiles([file]);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
await u.waitUntil(() => _.filter(IQ_stanzas, iq => iq.querySelector('iq[to="upload.montague.tld"] request')).length);
const iq = IQ_stanzas.pop();
......@@ -429,7 +429,7 @@
'oob_url': message.get('get'),
'message': message.get('get')
});
return new Promise((resolve, reject) => view.model.messages.once('rendered', resolve));
return new Promise(resolve => view.model.messages.once('rendered', resolve));
});
});
let sent_stanza;
......@@ -469,7 +469,6 @@
const IQ_stanzas = _converse.connection.IQ_stanzas;
const IQ_ids = _converse.connection.IQ_ids;
const send_backup = XMLHttpRequest.prototype.send;
await test_utils.waitUntilDiscoConfirmed(_converse, _converse.bare_jid, [], []);
await u.waitUntil(() => _.filter(
......@@ -596,7 +595,6 @@
[{'category': 'server', 'type':'IM'}],
['http://jabber.org/protocol/disco#items'], [], 'info');
const send_backup = XMLHttpRequest.prototype.send;
const IQ_stanzas = _converse.connection.IQ_stanzas;
await test_utils.waitUntilDiscoConfirmed(_converse, _converse.domain, [], [], ['upload.montague.tld'], 'items');
......@@ -613,7 +611,7 @@
'name': "my-juliet.jpg"
};
view.model.sendFiles([file]);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
await u.waitUntil(() => _.filter(IQ_stanzas, iq => iq.querySelector('iq[to="upload.montague.tld"] request')).length)
const iq = IQ_stanzas.pop();
expect(Strophe.serialize(iq)).toBe(
......@@ -657,8 +655,6 @@
done();
});
});
let sent_stanza;
spyOn(_converse.connection, 'send').and.callFake(stanza => (sent_stanza = stanza));
_converse.connection._dataRecv(test_utils.createRequest(stanza));
}));
});
......
......@@ -2,7 +2,6 @@
define(["jasmine", "mock", "test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const _ = converse.env._;
const Backbone = converse.env.Backbone;
const Strophe = converse.env.Strophe;
const $iq = converse.env.$iq;
......@@ -259,7 +258,7 @@
_converse.connection._dataRecv(test_utils.createRequest(iq_result));
const view = _converse.chatboxviews.get(contact_jid);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.model.messages.length).toBe(1);
expect(view.model.messages.at(0).get('message')).toBe("Thrice the brinded cat hath mew'd.");
done();
......
This diff is collapsed.
......@@ -159,7 +159,6 @@
await test_utils.openAndEnterChatRoom(_converse, 'kitchen@conference.shakespeare.lit', 'fires');
const view = _converse.chatboxviews.get(muc_jid);
view.model.set({'minimized': true});
const contact_jid = mock.cur_names[5].replace(/ /g,'.').toLowerCase() + '@montague.lit';
const message = 'fires: Your attention is required';
const nick = mock.chatroom_names[0];
const msg = $msg({
......
This diff is collapsed.
......@@ -6,7 +6,7 @@
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const { Promise, Strophe, $iq, $msg, $pres, sizzle, _ } = converse.env;
const { Promise, Strophe, $msg, $pres, sizzle } = converse.env;
const u = converse.env.utils;
describe("A Groupchat Message", function () {
......@@ -65,7 +65,7 @@
type: 'groupchat'
}).c('body').t(message).tree();
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(u.hasClass('mentioned', view.el.querySelector('.chat-msg'))).toBeTruthy();
done();
}));
......@@ -87,7 +87,7 @@
type: 'groupchat'
}).c('body').t('First message').tree();
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
msg = $msg({
......@@ -97,7 +97,7 @@
type: 'groupchat'
}).c('body').t('Another message').tree();
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
done();
}));
......@@ -223,7 +223,7 @@
type: 'groupchat'
}).c('body').t('I wrote this message!').tree();
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.model.messages.last().occupant.get('affiliation')).toBe('owner');
expect(view.model.messages.last().occupant.get('role')).toBe('moderator');
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
......@@ -250,7 +250,7 @@
type: 'groupchat'
}).c('body').t('Another message!').tree();
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.model.messages.last().occupant.get('affiliation')).toBe('member');
expect(view.model.messages.last().occupant.get('role')).toBe('participant');
expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
......@@ -286,7 +286,7 @@
type: 'groupchat'
}).c('body').t('Message from someone not in the MUC right now').tree();
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.model.messages.last().occupant).toBeUndefined();
// Check that there's a new "add" event handler, for when the occupant appears.
expect(view.model.occupants._events.add.length).toBe(add_events+1);
......@@ -351,7 +351,7 @@
type: 'groupchat'
}).c('body').t('I wrote this message!').tree();
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.model.messages.last().get('sender')).toBe('me');
done();
}));
......@@ -382,7 +382,7 @@
'type': 'groupchat',
'id': msg_id,
}).c('body').t('But soft, what light through yonder airlock breaks?').tree());
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
expect(view.el.querySelector('.chat-msg__text').textContent)
.toBe('But soft, what light through yonder airlock breaks?');
......@@ -445,7 +445,7 @@
preventDefault: function preventDefault () {},
keyCode: 13 // Enter
});
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
expect(view.el.querySelector('.chat-msg__text').textContent)
.toBe('But soft, what light through yonder airlock breaks?');
......@@ -456,7 +456,7 @@
target: textarea,
keyCode: 38 // Up arrow
});
await new Promise((resolve, reject) => view.model.messages.once('rendered', resolve));
await new Promise(resolve => view.model.messages.once('rendered', resolve));
expect(textarea.value).toBe('But soft, what light through yonder airlock breaks?');
expect(view.model.messages.at(0).get('correcting')).toBe(true);
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
......@@ -470,7 +470,7 @@
keyCode: 13 // Enter
});
expect(_converse.connection.send).toHaveBeenCalled();
await new Promise((resolve, reject) => view.model.messages.once('rendered', resolve));
await new Promise(resolve => view.model.messages.once('rendered', resolve));
const msg = _converse.connection.send.calls.all()[0].args[0];
expect(msg.toLocaleString())
......@@ -503,7 +503,7 @@
'to': 'romeo@montague.lit',
'type': 'groupchat'
}).c('body').t('Hello world').tree());
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(2);
// Test that pressing the down arrow cancels message correction
......@@ -544,7 +544,7 @@
preventDefault: function preventDefault () {},
keyCode: 13 // Enter
});
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg__body.chat-msg__body--received').length).toBe(0);
const msg_obj = view.model.messages.at(0);
......@@ -623,7 +623,7 @@
preventDefault: function preventDefault () {},
keyCode: 13 // Enter
});
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
const msg_obj = view.model.messages.at(0);
......@@ -659,7 +659,7 @@
preventDefault: function preventDefault () {},
keyCode: 13 // Enter
});
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelectorAll('.chat-msg').length).toBe(1);
expect(view.el.querySelector('.chat-msg .chat-msg__body').textContent.trim())
.toBe("But soft, what light through yonder airlock breaks?");
......@@ -744,7 +744,7 @@
.c('reference', {'xmlns':'urn:xmpp:reference:0', 'begin':'11', 'end':'14', 'type':'mention', 'uri':'xmpp:romeo@montague.lit'}).up()
.c('reference', {'xmlns':'urn:xmpp:reference:0', 'begin':'15', 'end':'23', 'type':'mention', 'uri':'xmpp:mr.robot@montague.lit'}).nodeTree;
await view.model.onMessage(msg);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
const messages = view.el.querySelectorAll('.chat-msg__text');
expect(messages.length).toBe(1);
expect(messages[0].classList.length).toEqual(1);
......@@ -907,7 +907,7 @@
}
spyOn(_converse.connection, 'send');
view.onKeyDown(enter_event);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
const msg = _converse.connection.send.calls.all()[0].args[0];
expect(msg.toLocaleString())
.toBe(`<message from="romeo@montague.lit/orchard" id="${msg.nodeTree.getAttribute("id")}" `+
......@@ -921,7 +921,6 @@
`<origin-id id="${msg.nodeTree.querySelector('origin-id').getAttribute("id")}" xmlns="urn:xmpp:sid:0"/>`+
`</message>`);
const first_msg = view.model.messages.findWhere({'message': 'hello z3r0 gibson mr.robot, how are you?'});
const action = view.el.querySelector('.chat-msg .chat-msg__action');
action.style.opacity = 1;
action.click();
......
......@@ -2,7 +2,6 @@
define(["jasmine", "mock", "test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const Strophe = converse.env.Strophe;
const _ = converse.env._;
const $msg = converse.env.$msg;
const u = converse.env.utils;
......@@ -73,7 +72,7 @@
}).c('body').t(message).tree();
_converse.connection._dataRecv(test_utils.createRequest(msg));
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(_converse.areDesktopNotificationsEnabled).toHaveBeenCalled();
expect(_converse.showMessageNotification).toHaveBeenCalled();
if (no_notification) {
......@@ -103,7 +102,7 @@
_converse.connection._dataRecv(test_utils.createRequest(stanza));
await u.waitUntil(() => _converse.chatboxviews.keys().length);
const view = _converse.chatboxviews.get('notify.example.com');
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(
_.includes(_converse.chatboxviews.keys(),
'notify.example.com')
......
......@@ -205,7 +205,7 @@
.up().up()
.c('payload').t(obj.payload);
_converse.connection._dataRecv(test_utils.createRequest(stanza));
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.model.messages.length).toBe(2);
expect(view.el.querySelectorAll('.chat-msg__body')[1].textContent.trim())
.toBe('This is an encrypted message from the contact');
......@@ -224,7 +224,7 @@
.up().up()
.c('payload').t(obj.payload);
_converse.connection._dataRecv(test_utils.createRequest(stanza));
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
await u.waitUntil(() => view.model.messages.length > 1);
expect(view.model.messages.length).toBe(3);
expect(view.el.querySelectorAll('.chat-msg__body')[2].textContent.trim())
......@@ -386,7 +386,6 @@
await test_utils.waitUntilDiscoConfirmed(_converse, _converse.bare_jid, [], [Strophe.NS.SID]);
let sent_stanza;
test_utils.createContacts(_converse, 'current', 1);
_converse.api.trigger('rosterContactsFetched');
const contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
......@@ -606,7 +605,6 @@
async function (done, _converse) {
_converse.NUM_PREKEYS = 5; // Restrict to 5, otherwise the resulting stanza is too large to easily test
let view, sent_stanza;
test_utils.createContacts(_converse, 'current', 1);
_converse.api.trigger('rosterContactsFetched');
const contact_jid = mock.cur_names[0].replace(/ /g,'.').toLowerCase() + '@montague.lit';
......@@ -1548,15 +1546,4 @@
done();
}));
});
describe("A chatbox with an active OMEMO session", function() {
it("will not show the spoiler toolbar button",
mock.initConverse(
null, ['rosterGroupsFetched'], {},
function (done, _converse) {
// TODO
done()
}));
});
}));
......@@ -8,10 +8,6 @@
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const Strophe = converse.env.Strophe;
const $iq = converse.env.$iq;
const $pres = converse.env.$pres;
const _ = converse.env._;
const u = converse.env.utils;
// See: https://xmpp.org/rfcs/rfc3921.html
......
......@@ -15,8 +15,6 @@
test_utils.openControlBox();
await test_utils.openAndEnterChatRoom(_converse, 'lounge@montague.lit', 'romeo');
const view = _converse.chatboxviews.get('lounge@montague.lit'),
occupants = view.el.querySelector('.occupant-list');
_.rangeRight(3000, 0).forEach(i => {
const name = `User ${i.toString().padStart(5, '0')}`;
const presence = $pres({
......
......@@ -389,12 +389,8 @@
expect(_converse.roster.get('contact@example.org') instanceof _converse.RosterContact).toBeTruthy();
spyOn(contact, "ackUnsubscribe").and.callThrough();
spyOn(_converse.connection, 'send').and.callFake(function (stanza) {
sent_stanza = stanza;
});
spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
sent_IQ = iq;
});
spyOn(_converse.connection, 'send').and.callFake(stanza => { sent_stanza = stanza });
spyOn(_converse.connection, 'sendIQ').and.callFake(iq => { sent_IQ = iq });
/* We now assume the contact declines the subscription
* requests.
*
......
......@@ -59,7 +59,6 @@
}, async function (done, _converse) {
const IQ_stanzas = _converse.connection.IQ_stanzas;
const room_jid = 'coven@chat.shakespeare.lit';
await test_utils.waitUntilDiscoConfirmed(
_converse, _converse.push_app_servers[0].jid,
[{'category': 'pubsub', 'type':'push'}],
......
......@@ -74,7 +74,6 @@
null, ['rosterGroupsFetched', 'chatBoxesFetched'], {'auto_register_muc_nickname': true},
async function (done, _converse) {
const IQ_stanzas = _converse.connection.IQ_stanzas;
const muc_jid = 'coven@chat.shakespeare.lit';
await test_utils.openAndEnterChatRoom(_converse, muc_jid, 'romeo');
const view = _converse.chatboxviews.get(muc_jid);
......
(function (root, factory) {
define(["jasmine", "mock", "test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
const { Backbone, Promise, Strophe, $iq, $msg, $pres, b64_sha1, sizzle, _ } = converse.env;
const { Strophe, $iq, $msg, $pres, sizzle, _ } = converse.env;
const u = converse.env.utils;
......@@ -59,9 +59,6 @@
async function (done, _converse) {
await test_utils.openAndEnterChatRoom(_converse, 'lounge@montague.lit', 'romeo');
const view = _converse.chatboxviews.get('lounge@montague.lit');
const contact_jid = 'newguy@montague.lit';
let stanza = $pres({
to: 'romeo@montague.lit/orchard',
from: 'lounge@montague.lit/newguy'
......@@ -291,7 +288,6 @@
await test_utils.openAndEnterChatRoom(_converse, 'kitchen@conference.shakespeare.lit', 'romeo');
const view = _converse.chatboxviews.get(room_jid);
view.model.set({'minimized': true});
const contact_jid = mock.cur_names[5].replace(/ /g,'.').toLowerCase() + '@montague.lit';
const nick = mock.chatroom_names[0];
await view.model.onMessage(
$msg({
......
......@@ -2,7 +2,6 @@
define(["jasmine", "mock", "test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
const $iq = converse.env.$iq;
const $msg = converse.env.$msg;
const $pres = converse.env.$pres;
const Strophe = converse.env.Strophe;
const _ = converse.env._;
......@@ -187,7 +186,7 @@
const roster = _converse.rosterview.roster_el;
_converse.rosterview.filter_view.delegateEvents();
const contacts = await u.waitUntil(() => (sizzle('li', roster).filter(u.isVisible).length === 15), 600);
await u.waitUntil(() => (sizzle('li', roster).filter(u.isVisible).length === 15), 600);
expect(sizzle('ul.roster-group-contacts', roster).filter(u.isVisible).length).toBe(5);
filter.value = "juliet";
u.triggerEvent(filter, "keydown", "KeyboardEvent");
......@@ -286,7 +285,7 @@
var button = _converse.rosterview.el.querySelector('span[data-type="groups"]');
button.click();
const contacts = await u.waitUntil(() => (sizzle('li', roster).filter(u.isVisible).length === 15), 600);
await u.waitUntil(() => (sizzle('li', roster).filter(u.isVisible).length === 15), 600);
expect(sizzle('.roster-group', roster).filter(u.isVisible).length).toBe(5);
var filter = _converse.rosterview.el.querySelector('.roster-filter');
......@@ -403,7 +402,6 @@
"Pending contacts"
]);
// Check that usernames appear alphabetically per group
let names;
_.each(_.keys(mock.groups), function (name) {
const contacts = sizzle('.roster-group[data-group="'+name+'"] ul', _converse.rosterview.el);
const names = _.map(contacts, o => o.textContent.trim());
......@@ -608,8 +606,7 @@
spyOn(contact, 'unauthorize').and.callFake(function () { return contact; });
spyOn(contact, 'removeFromRoster').and.callThrough();
await u.waitUntil(() => sizzle(".pending-contact-name:contains('"+name+"')", _converse.rosterview.el).length, 700);
var sendIQ = _converse.connection.sendIQ;
spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback) {
sent_IQ = iq;
callback();
});
......@@ -784,9 +781,8 @@
spyOn(window, 'confirm').and.returnValue(true);
spyOn(contact, 'removeFromRoster').and.callThrough();
const sendIQ = _converse.connection.sendIQ;
let sent_IQ;
spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback, errback) {
spyOn(_converse.connection, 'sendIQ').and.callFake(function (iq, callback) {
sent_IQ = iq;
callback();
});
......
......@@ -36,7 +36,7 @@
.tree();
await _converse.chatboxes.onMessage(msg);
const view = _converse.chatboxviews.get(sender_jid);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
await u.waitUntil(() => view.model.vcard.get('fullname') === 'Mercutio')
expect(view.el.querySelector('.chat-msg__author').textContent.trim()).toBe('Mercutio');
const message_content = view.el.querySelector('.chat-msg__text');
......@@ -70,7 +70,7 @@
}).tree();
await _converse.chatboxes.onMessage(msg);
const view = _converse.chatboxviews.get(sender_jid);
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
await u.waitUntil(() => view.model.vcard.get('fullname') === 'Mercutio')
expect(_.includes(view.el.querySelector('.chat-msg__author').textContent, 'Mercutio')).toBeTruthy();
const message_content = view.el.querySelector('.chat-msg__text');
......@@ -114,7 +114,7 @@
preventDefault: function preventDefault () {},
keyCode: 13
});
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
/* Test the XML stanza
*
......@@ -191,7 +191,7 @@
preventDefault: function preventDefault () {},
keyCode: 13
});
await new Promise((resolve, reject) => view.once('messageInserted', resolve));
await new Promise(resolve => view.once('messageInserted', resolve));
/* Test the XML stanza
*
......
......@@ -6,10 +6,6 @@
], factory);
} (this, function (jasmine, mock, test_utils) {
"use strict";
const _ = converse.env._;
const $iq = converse.env.$iq;
const $msg = converse.env.$msg;
const Strophe = converse.env.Strophe;
const u = converse.env.utils;
return describe("The User Details Modal", function () {
......
(function (root, factory) {
define(["jasmine"], factory);
} (this, function (jasmine) {
} (this, function () {
var utils = converse.env.utils,
_ = converse.env._;
......
(function (root, factory) {
define(["jasmine", "mock", "test-utils"], factory);
} (this, function (jasmine, mock, test_utils) {
define(["jasmine", "mock"], factory);
} (this, function (jasmine, mock) {
return describe("The XMPPStatus model", function () {
......
......@@ -194,7 +194,6 @@ converse.plugins.add("converse-autocomplete", {
}
insertValue (suggestion) {
let value;
if (this.match_current_word) {
u.replaceCurrentWord(this.input, suggestion.value);
} else {
......
......@@ -95,7 +95,7 @@ converse.plugins.add('converse-bookmark-views', {
*/
ev.preventDefault();
const jid = ev.target.getAttribute('data-room-jid');
const chatroom = _converse.api.rooms.open(jid, {'bring_to_foreground': true});
_converse.api.rooms.open(jid, {'bring_to_foreground': true});
_converse.chatboxviews.get(jid).renderBookmarkForm();
},
});
......@@ -307,7 +307,7 @@ converse.plugins.add('converse-bookmark-views', {
}
},
showOrHide (item) {
showOrHide () {
if (_converse.hide_open_bookmarks) {
const bookmarks = this.model.filter((bookmark) =>
!_converse.chatboxes.get(bookmark.get('jid')));
......
......@@ -63,12 +63,9 @@ converse.plugins.add('converse-chatboxviews', {
/* The initialize function gets called as soon as the plugin is
* loaded by converse.js's plugin machinery.
*/
const { _converse } = this,
{ __ } = _converse;
const { _converse } = this;
_converse.api.promises.add([
'chatBoxViewsInitialized'
]);
_converse.api.promises.add(['chatBoxViewsInitialized']);
// Configuration values for this plugin
// ====================================
......
......@@ -8,7 +8,7 @@
* @module converse-controlbox
*/
import "converse-chatview";
import _FormData from "formdata-polyfill";
import "formdata-polyfill";
import bootstrap from "bootstrap.native";
import converse from "@converse/headless/converse-core";
import { get } from "lodash";
......@@ -17,7 +17,6 @@ import tpl_controlbox from "templates/controlbox.html";
import tpl_controlbox_toggle from "templates/controlbox_toggle.html";
import tpl_login_panel from "templates/login_panel.html";
const CHATBOX_TYPE = 'chatbox';
const { Strophe, Backbone, dayjs } = converse.env;
const u = converse.env.utils;
......@@ -109,7 +108,7 @@ converse.plugins.add('converse-controlbox', {
},
ChatBox: {
validate (attrs, options) {
validate (attrs) {
const { _converse } = this.__super__;
if (attrs.type === _converse.CONTROLBOX_TYPE) {
if (_converse.view_mode === 'embedded' && _converse.singleton) {
......@@ -270,12 +269,13 @@ converse.plugins.add('converse-controlbox', {
return this;
},
/**
* Renders the "Contacts" panel of the controlbox.
* This will only be called after the user has already been logged in.
* @private
* @method _converse.ControlBoxView.renderControlBoxPane
*/
renderControlBoxPane () {
/* Renders the "Contacts" panel of the controlbox.
*
* This will only be called after the user has already been
* logged in.
*/
if (this.loginpanel) {
this.loginpanel.remove();
delete this.loginpanel;
......@@ -366,7 +366,7 @@ converse.plugins.add('converse-controlbox', {
'change input': 'validate'
},
initialize (cfg) {
initialize () {
this.listenTo(this.model, 'change', this.render)
this.listenTo(_converse.connfeedback, 'change', this.render);
this.render();
......@@ -402,7 +402,7 @@ converse.plugins.add('converse-controlbox', {
initPopovers () {
Array.from(this.el.querySelectorAll('[data-title]')).forEach(el => {
const popover = new bootstrap.Popover(el, {
new bootstrap.Popover(el, {
'trigger': _converse.view_mode === 'mobile' && 'click' || 'hover',
'dismissible': _converse.view_mode === 'mobile' && true || false,
'container': this.el.parentElement.parentElement.parentElement
......
......@@ -14,8 +14,6 @@ import "converse-singleton";
import converse from "@converse/headless/converse-core";
import tpl_brand_heading from "templates/inverse_brand_heading.html";
const { Strophe, _ } = converse.env;
converse.plugins.add('converse-fullscreen', {
......
......@@ -10,7 +10,7 @@ import "converse-chatview";
import converse from "@converse/headless/converse-core";
import tpl_chatbox from "templates/chatbox.html";
const { _, dayjs, utils } = converse.env;
const { utils } = converse.env;
converse.plugins.add('converse-headline', {
......@@ -50,14 +50,13 @@ converse.plugins.add('converse-headline', {
/* The initialize function gets called as soon as the plugin is
* loaded by converse.js's plugin machinery.
*/
const { _converse } = this,
{ __ } = _converse;
const { _converse } = this;
_converse.HeadlinesBox = _converse.ChatBox.extend({
defaults () {
return {
'bookmarked': false,
'hidden': _.includes(['mobile', 'fullscreen'], _converse.view_mode),
'hidden': ['mobile', 'fullscreen'].includes(_converse.view_mode),
'message_type': 'headline',
'num_unread': 0,
'time_opened': this.get('time_opened') || (new Date()).getTime(),
......@@ -120,14 +119,13 @@ converse.plugins.add('converse-headline', {
/* Handler method for all incoming messages of type "headline". */
if (utils.isHeadlineMessage(_converse, message)) {
const from_jid = message.getAttribute('from');
if (_.includes(from_jid, '@') &&
if (from_jid.includes('@') &&
!_converse.roster.get(from_jid) &&
!_converse.allow_non_roster_messaging) {
return;
}
if (_.isNull(message.querySelector('body'))) {
// Avoid creating a chat box if we have nothing to show
// inside it.
if (message.querySelector('body') === null) {
// Avoid creating a chat box if we have nothing to show inside it.
return;
}
const chatbox = _converse.chatboxes.create({
......
......@@ -33,8 +33,7 @@ converse.plugins.add('converse-mam-views', {
return result;
},
async onScroll (ev) {
const { _converse } = this.__super__;
async onScroll () {
if (this.content.scrollTop === 0 && this.model.messages.length) {
const oldest_message = this.model.getOldestMessage();
if (oldest_message) {
......
......@@ -6,12 +6,12 @@
/**
* @module converse-message-view
*/
import "./utils/html";
import "@converse/headless/converse-emoji";
import URI from "urijs";
import converse from "@converse/headless/converse-core";
import { debounce } from 'lodash'
import filesize from "filesize";
import html from "./utils/html";
import tpl_csn from "templates/csn.html";
import tpl_file_progress from "templates/file_progress.html";
import tpl_info from "templates/info.html";
......@@ -20,7 +20,7 @@ import tpl_message_versions_modal from "templates/message_versions_modal.html";
import tpl_spinner from "templates/spinner.html";
import xss from "xss/dist/xss";
const { Backbone, dayjs } = converse.env;
const { dayjs } = converse.env;
const u = converse.env.utils;
......
......@@ -100,13 +100,13 @@ converse.plugins.add('converse-minimize', {
setChatBoxHeight (height) {
if (!this.model.get('minimized')) {
return this.__super__.setChatBoxHeight.apply(this, arguments);
return this.__super__.setChatBoxHeight.call(this, height);
}
},
setChatBoxWidth (width) {
if (!this.model.get('minimized')) {
return this.__super__.setChatBoxWidth.apply(this, arguments);
return this.__super__.setChatBoxWidth.call(this, width);
}
}
},
......@@ -115,7 +115,7 @@ converse.plugins.add('converse-minimize', {
render () {
const { _converse } = this.__super__,
{ __ } = _converse;
const result = this.__super__.render.apply(this, arguments);
this.__super__.render.apply(this, arguments);
const new_html = tpl_chatbox_minimize({
'info_minimize': __('Minimize this chat box')
});
......@@ -251,7 +251,7 @@ converse.plugins.add('converse-minimize', {
* Minimizes a chat box.
* @returns {_converse.ChatBoxView|_converse.ChatRoomView}
*/
minimize (ev) {
minimize () {
this.model.minimize();
return this;
},
......
......@@ -11,12 +11,11 @@
*/
import "converse-modal";
import "backbone.vdomview";
import "formdata-polyfill";
import "@converse/headless/utils/muc";
import BrowserStorage from "backbone.browserStorage";
import { OrderedListView } from "backbone.overview";
import _FormData from "formdata-polyfill";
import bootstrap from "bootstrap.native";
import converse from "@converse/headless/converse-core";
import muc_utils from "@converse/headless/utils/muc";
import tpl_add_chatroom_modal from "templates/add_chatroom_modal.html";
import tpl_chatarea from "templates/chatarea.html";
import tpl_chatroom from "templates/chatroom.html";
......@@ -43,12 +42,11 @@ import tpl_spinner from "templates/spinner.html";
import xss from "xss/dist/xss";
const { Backbone, Strophe, dayjs, sizzle, _, $iq, $msg, $pres } = converse.env;
const { Backbone, Strophe, sizzle, _, $iq, $pres } = converse.env;
const u = converse.env.utils;
const ROLES = ['moderator', 'participant', 'visitor'];
const AFFILIATIONS = ['admin', 'member', 'outcast', 'owner'];
const AFFILIATION_CHANGE_COMANDS = ['admin', 'ban', 'owner', 'member', 'revoke'];
const OWNER_COMMANDS = ['owner'];
const ADMIN_COMMANDS = ['admin', 'ban', 'deop', 'destroy', 'member', 'op', 'revoke'];
const MODERATOR_COMMANDS = ['kick', 'mute', 'voice', 'modtools'];
......@@ -439,7 +437,7 @@ converse.plugins.add('converse-muc-views', {
toggleRoomInfo(ev);
},
onDomainChange (model) {
onDomainChange () {
if (_converse.auto_list_rooms) {
this.updateRoomsList();
}
......@@ -500,7 +498,7 @@ converse.plugins.add('converse-muc-views', {
}).c("query", {xmlns: Strophe.NS.DISCO_ITEMS});
_converse.api.sendIQ(iq)
.then(iq => this.onRoomsFound(iq))
.catch(iq => this.informNoRoomsFound())
.catch(() => this.informNoRoomsFound())
},
showRooms (ev) {
......@@ -952,7 +950,7 @@ converse.plugins.add('converse-muc-views', {
}
},
hideOccupants (ev, preserve_state) {
hideOccupants (ev) {
/* Show or hide the right sidebar containing the chat
* occupants (and the invite widget).
*/
......@@ -1037,7 +1035,7 @@ converse.plugins.add('converse-muc-views', {
if (!args.startsWith('@')) {
args = '@'+ args;
}
const [text, references] = this.model.parseTextForReferences(args);
const [text, references] = this.model.parseTextForReferences(args); // eslint-disable-line no-unused-vars
if (!references.length) {
this.showErrorMessage(__("Error: couldn't find a groupchat participant based on your arguments"));
return;
......@@ -1312,7 +1310,7 @@ converse.plugins.add('converse-muc-views', {
this.renderAfterTransition();
},
getAndRenderConfigurationForm (ev) {
getAndRenderConfigurationForm () {
/* Start the process of configuring a groupchat, either by
* rendering a configuration form, or by auto-configuring
* based on the "roomconfig" data stored on the
......@@ -1451,7 +1449,6 @@ converse.plugins.add('converse-muc-views', {
getNotificationWithMessage (message) {
let el = this.content.lastElementChild;
while (el) {
const data = _.get(el, 'dataset', {});
if (!_.includes(_.get(el, 'classList', []), 'chat-info')) {
return;
}
......@@ -2061,7 +2058,7 @@ converse.plugins.add('converse-muc-views', {
'list': list
});
this.invite_auto_complete.on('suggestion-box-selectcomplete', ev => this.promptForInvite(ev));
this.invite_auto_complete.on('suggestion-box-open', ev => {
this.invite_auto_complete.on('suggestion-box-open', () => {
this.invite_auto_complete.ul.setAttribute('style', `max-height: calc(${this.el.offsetHeight}px - 80px);`);
});
}
......
......@@ -8,9 +8,7 @@ import converse from "@converse/headless/converse-core";
import hello from "hellojs";
import tpl_oauth_providers from "templates/oauth_providers.html";
const _ = converse.env._,
Backbone = converse.env.Backbone,
Strophe = converse.env.Strophe;
const { _, Backbone } = converse.env;
// The following line registers your plugin.
......@@ -55,7 +53,7 @@ converse.plugins.add("converse-oauth", {
this.oauth_providers_view.render();
},
render (cfg) {
render () {
const { _converse } = this.__super__;
const result = this.__super__.render.apply(this, arguments);
if (_converse.oauth_providers && !_converse.auto_login) {
......
......@@ -13,7 +13,7 @@ import BrowserStorage from "backbone.browserStorage";
import converse from "@converse/headless/converse-core";
import tpl_toolbar_omemo from "templates/toolbar_omemo.html";
const { Backbone, Strophe, dayjs, sizzle, $build, $iq, $msg, _ } = converse.env;
const { Backbone, Strophe, sizzle, $build, $iq, $msg, _ } = converse.env;
const u = converse.env.utils;
Strophe.addNamespace('OMEMO_DEVICELIST', Strophe.NS.OMEMO+".devicelist");
......@@ -22,7 +22,7 @@ Strophe.addNamespace('OMEMO_WHITELISTED', Strophe.NS.OMEMO+".whitelisted");
Strophe.addNamespace('OMEMO_BUNDLES', Strophe.NS.OMEMO+".bundles");
const UNDECIDED = 0;
const TRUSTED = 1;
const TRUSTED = 1; // eslint-disable-line no-unused-vars
const UNTRUSTED = -1;
const TAG_LENGTH = 128;
const KEY_ALGO = {
......@@ -44,16 +44,13 @@ function parseBundle (bundle_el) {
/* Given an XML element representing a user's OMEMO bundle, parse it
* and return a map.
*/
const signed_prekey_public_el = bundle_el.querySelector('signedPreKeyPublic'),
signed_prekey_signature_el = bundle_el.querySelector('signedPreKeySignature'),
identity_key_el = bundle_el.querySelector('identityKey');
const signed_prekey_public_el = bundle_el.querySelector('signedPreKeyPublic');
const signed_prekey_signature_el = bundle_el.querySelector('signedPreKeySignature');
const prekeys = sizzle(`prekeys > preKeyPublic`, bundle_el)
.map(el => ({
'id': parseInt(el.getAttribute('preKeyId'), 10),
'key': el.textContent
}));
return {
'identity_key': bundle_el.querySelector('identityKey').textContent.trim(),
'signed_prekey': {
......@@ -693,7 +690,7 @@ converse.plugins.add('converse-omemo', {
return Promise.resolve(parseInt(this.get('device_id'), 10));
},
isTrustedIdentity (identifier, identity_key, direction) {
isTrustedIdentity (identifier, identity_key, direction) { // eslint-disable-line no-unused-vars
if (identifier === null || identifier === undefined) {
throw new Error("Can't check identity key for invalid key");
}
......@@ -761,7 +758,7 @@ converse.plugins.add('converse-omemo', {
return Promise.resolve();
},
loadSignedPreKey (keyId) {
loadSignedPreKey (keyId) { // eslint-disable-line no-unused-vars
const res = this.get('signed_prekey');
if (res) {
return Promise.resolve({
......@@ -1263,7 +1260,7 @@ converse.plugins.add('converse-omemo', {
_converse.generateFingerprints(jid).catch(e => _converse.log(e, Strophe.LogLevel.ERROR));
});
_converse.api.listen.on('profileModalInitialized', (contact) => {
_converse.api.listen.on('profileModalInitialized', () => {
_converse.generateFingerprints(_converse.bare_jid).catch(e => _converse.log(e, Strophe.LogLevel.ERROR));
});
......
......@@ -9,16 +9,15 @@
*/
import "@converse/headless/converse-vcard";
import "converse-modal";
import _FormData from "formdata-polyfill";
import "formdata-polyfill";
import bootstrap from "bootstrap.native";
import converse from "@converse/headless/converse-core";
import tpl_chat_status_modal from "templates/chat_status_modal.html";
import tpl_client_info_modal from "templates/client_info_modal.html";
import tpl_profile_modal from "templates/profile_modal.html";
import tpl_profile_view from "templates/profile_view.html";
import tpl_status_option from "templates/status_option.html";
const { Strophe, Backbone, utils, _, dayjs, sizzle } = converse.env;
const { Strophe, sizzle } = converse.env;
const u = converse.env.utils;
......@@ -61,7 +60,6 @@ converse.plugins.add('converse-profile', {
return tpl_profile_modal(Object.assign(
this.model.toJSON(),
this.model.vcard.toJSON(), {
'_': _,
'__': __,
'_converse': _converse,
'alt_avatar': __('Your avatar image'),
......
......@@ -22,8 +22,7 @@ converse.plugins.add('converse-push', {
/* The initialize function gets called as soon as the plugin is
* loaded by converse.js's plugin machinery.
*/
const { _converse } = this,
{ __ } = _converse;
const { _converse } = this;
_converse.api.settings.update({
'push_app_servers': [],
......
......@@ -45,7 +45,7 @@ converse.plugins.add('converse-register', {
// New functions which don't exist yet can also be added.
LoginPanel: {
render (cfg) {
render () {
const { _converse } = this.__super__;
this.__super__.render.apply(this, arguments);
if (_converse.allow_registration && !_converse.auto_login) {
......@@ -107,7 +107,6 @@ converse.plugins.add('converse-register', {
Object.assign(_converse.ControlBoxView.prototype, {
showLoginOrRegisterForm () {
const { _converse } = this.__super__;
if (!this.registerpanel) {
return;
}
......@@ -173,7 +172,7 @@ converse.plugins.add('converse-register', {
'click .button-cancel': 'renderProviderChoiceForm',
},
initialize (cfg) {
initialize () {
this.reset();
this.registerHooks();
},
......
......@@ -9,14 +9,14 @@
* Converse.js plugin which shows a list of currently open
* rooms in the "Rooms Panel" of the ControlBox.
*/
import "@converse/headless/converse-muc";
import BrowserStorage from "backbone.browserStorage";
import { OrderedListView } from "backbone.overview";
import converse from "@converse/headless/converse-core";
import muc from "@converse/headless/converse-muc";
import tpl_rooms_list from "templates/rooms_list.html";
import tpl_rooms_list_item from "templates/rooms_list_item.html"
const { Backbone, Strophe, sizzle, _ } = converse.env;
const { Backbone, Strophe, } = converse.env;
const u = converse.env.utils;
......@@ -51,7 +51,7 @@ converse.plugins.add('converse-roomslist', {
comparator (room) {
if (_converse.bookmarks && room.get('bookmarked')) {
const bookmark = _.head(_converse.bookmarks.where({'jid': room.get('jid')}));
const bookmark = _converse.bookmarks.findWhere({'jid': room.get('jid')});
return bookmark.get('name');
} else {
return room.get('name');
......@@ -236,7 +236,7 @@ converse.plugins.add('converse-roomslist', {
}
},
showOrHide (item) {
showOrHide () {
if (!this.model.models.length) {
u.hideElement(this.el);
} else {
......
......@@ -9,10 +9,10 @@
import "@converse/headless/converse-chatboxes";
import "@converse/headless/converse-roster";
import "converse-modal";
import "formdata-polyfill";
import BrowserStorage from "backbone.browserStorage";
import { OrderedListView } from "backbone.overview";
import SHA1 from 'strophe.js/src/sha1';
import _FormData from "formdata-polyfill";
import converse from "@converse/headless/converse-core";
import tpl_add_contact_modal from "templates/add_contact_modal.html";
import tpl_group_header from "templates/group_header.html";
......@@ -21,9 +21,8 @@ import tpl_requesting_contact from "templates/requesting_contact.html";
import tpl_roster from "templates/roster.html";
import tpl_roster_filter from "templates/roster_filter.html";
import tpl_roster_item from "templates/roster_item.html";
import tpl_search_contact from "templates/search_contact.html";
const { Backbone, Strophe, $iq, sizzle, _ } = converse.env;
const { Backbone, Strophe, _ } = converse.env;
const u = converse.env.utils;
......@@ -58,7 +57,6 @@ converse.plugins.add('converse-rosterview', {
'xa': __('This contact is away for an extended period'),
'away': __('This contact is away')
};
const LABEL_GROUPS = __('Groups');
_converse.AddContactModal = _converse.BootstrapModal.extend({
......@@ -266,7 +264,7 @@ converse.plugins.add('converse-rosterview', {
}
},
liveFilter: _.debounce(function (ev) {
liveFilter: _.debounce(function () {
this.model.save({
'filter_text': this.el.querySelector('.roster-filter').value
});
......@@ -496,9 +494,8 @@ converse.plugins.add('converse-rosterview', {
if (!_converse.allow_contact_removal) { return; }
if (!confirm(__("Are you sure you want to remove this contact?"))) { return; }
let iq;
try {
iq = await this.model.removeFromRoster();
await this.model.removeFromRoster();
this.remove();
if (this.model.collection) {
// The model might have already been removed as
......@@ -605,7 +602,6 @@ converse.plugins.add('converse-rosterview', {
* title.
*/
let shown = 0;
const all_contact_views = this.getAll();
this.model.contacts.forEach(contact => {
const contact_view = this.get(contact.get('id'));
if (_.includes(contacts, contact)) {
......
......@@ -10,9 +10,6 @@
*/
import converse from "@converse/headless/converse-core";
const { _, Strophe } = converse.env;
const u = converse.env.utils;
converse.plugins.add('converse-singleton', {
......@@ -31,7 +28,7 @@ converse.plugins.add('converse-singleton', {
'hide_muc_server': true
});
const { _converse } = this;
if (!_.isArray(_converse.auto_join_rooms) && !_.isArray(_converse.auto_join_private_chats)) {
if (!Array.isArray(_converse.auto_join_rooms) && !Array.isArray(_converse.auto_join_private_chats)) {
throw new Error("converse-singleton: auto_join_rooms must be an Array");
}
if (_converse.auto_join_rooms.length > 1 || _converse.auto_join_private_chats.length > 1) {
......
......@@ -16,7 +16,6 @@
import "converse-chatview";
import converse from "@converse/headless/converse-core";
const { _, Strophe } = converse.env;
const u = converse.env.utils;
......
......@@ -12,7 +12,7 @@ import 'strophe.js/src/bosh';
import BrowserStorage from "backbone.browserStorage";
import converse from "./converse-core";
const { Backbone, Strophe, _ } = converse.env;
const { Backbone, Strophe } = converse.env;
const BOSH_SESSION_ID = 'converse.bosh-session';
......
......@@ -13,7 +13,7 @@ import BrowserStorage from "backbone.browserStorage";
import converse from "./converse-core";
import filesize from "filesize";
const { $msg, Backbone, Strophe, dayjs, sizzle, utils, _ } = converse.env;
const { $msg, Backbone, Strophe, dayjs, sizzle, utils } = converse.env;
const u = converse.env.utils;
Strophe.addNamespace('MESSAGE_CORRECT', 'urn:xmpp:message-correct:0');
......@@ -404,7 +404,7 @@ converse.plugins.add('converse-chatboxes', {
this.announceReconnection();
},
validate (attrs, options) {
validate (attrs) {
if (!attrs.jid) {
return 'Ignored ChatBox without JID';
}
......@@ -453,7 +453,7 @@ converse.plugins.add('converse-chatboxes', {
}
},
getUpdatedMessageAttributes (message, stanza) {
getUpdatedMessageAttributes (message, stanza) { // eslint-disable-line no-unused-vars
// Overridden in converse-muc and converse-mam
return {};
},
......@@ -673,7 +673,7 @@ converse.plugins.add('converse-chatboxes', {
_converse.api.send(receipt_stanza);
},
handleReceipt (stanza, from_jid, is_carbon, is_me, is_mam) {
handleReceipt (stanza, from_jid, is_carbon, is_me) {
const requests_receipt = sizzle(`request[xmlns="${Strophe.NS.RECEIPTS}"]`, stanza).pop() !== undefined;
if (requests_receipt && !is_carbon && !is_me) {
this.sendReceiptStanza(from_jid, stanza.getAttribute('id'));
......@@ -1287,7 +1287,7 @@ converse.plugins.add('converse-chatboxes', {
chatbox.updateMessage(message, original_stanza);
}
if (!message &&
!chatbox.handleReceipt (stanza, from_jid, is_carbon, is_me, is_mam) &&
!chatbox.handleReceipt (stanza, from_jid, is_carbon, is_me) &&
!chatbox.handleChatMarker(stanza, from_jid, is_carbon, is_roster_contact, is_mam)) {
const attrs = await chatbox.getMessageAttributesFromStanza(stanza, original_stanza);
......
......@@ -7,6 +7,7 @@
* @module converse-core
*/
import 'strophe.js/src/websocket';
import './polyfill';
import * as strophe from 'strophe.js/src/core';
import Backbone from 'backbone';
import BrowserStorage from 'backbone.browserStorage';
......@@ -15,7 +16,6 @@ import advancedFormat from 'dayjs/plugin/advancedFormat';
import dayjs from 'dayjs';
import i18n from './i18n';
import pluggable from 'pluggable.js/src/pluggable';
import polyfill from './polyfill';
import sizzle from 'sizzle';
import u from '@converse/headless/utils/core';
......
......@@ -10,7 +10,7 @@ import * as twemoji from "twemoji";
import _ from "./lodash.noconflict";
import converse from "./converse-core";
const { Backbone, Strophe } = converse.env;
const { Backbone, } = converse.env;
const u = converse.env.utils;
const ASCII_LIST = {
......@@ -253,7 +253,7 @@ converse.plugins.add('converse-emoji', {
*/
getEmojiRenderer () {
const how = {
'attributes': (icon, variant) => {
'attributes': (icon) => {
const codepoint = twemoji.default.convert.toCodePoint(icon);
return {'title': `${u.getEmojisByAtrribute('cp')[codepoint]['sn']} ${icon}`}
}
......
......@@ -15,7 +15,7 @@ import { intersection, pick } from 'lodash'
import converse from "./converse-core";
import sizzle from "sizzle";
const { Strophe, $iq, $build, dayjs } = converse.env;
const { Strophe, $iq, dayjs } = converse.env;
const u = converse.env.utils;
// XEP-0313 Message Archive Management
......
......@@ -263,7 +263,7 @@ converse.plugins.add('converse-muc', {
}
},
onOccupantRemoved (occupant) {
onOccupantRemoved () {
this.stopListening(this.occupant);
delete this.occupant;
const chatbox = _.get(this, 'collection.chatbox');
......@@ -484,7 +484,6 @@ converse.plugins.add('converse-muc', {
},
initFeatures () {
const storage = _converse.config.get('storage');
const id = `converse.muc-features-${_converse.bare_jid}-${this.get('jid')}`;
this.features = new Backbone.Model(
_.assign({id}, _.zipObject(converse.ROOM_FEATURES, converse.ROOM_FEATURES.map(_.stubFalse)))
......@@ -1176,7 +1175,6 @@ converse.plugins.add('converse-muc', {
async updateMemberLists (members) {
const all_affiliations = ['member', 'admin', 'owner'];
const aff_lists = await Promise.all(all_affiliations.map(a => this.getAffiliationList(a)));
const known_affiliations = all_affiliations.filter(a => !u.isErrorObject(aff_lists[all_affiliations.indexOf(a)]));
const old_members = aff_lists.reduce((acc, val) => (u.isErrorObject(val) ? acc: [...val, ...acc]), []);
await this.setAffiliations(u.computeAffiliationsDelta(true, false, members, old_members));
if (_converse.muc_fetch_members) {
......@@ -2329,9 +2327,9 @@ converse.plugins.add('converse-muc', {
attrs.nick = Strophe.getNodeFromJid(_converse.bare_jid);
}
if (_.isString(jids)) {
return getChatRoom(jids, attrs);
return getChatRoom(jids, attrs, create);
}
return jids.map(jid => getChatRoom(jid, attrs));
return jids.map(jid => getChatRoom(jid, attrs, create));
}
}
});
......
......@@ -10,7 +10,7 @@
* as specified in XEP-0199 XMPP Ping.
*/
import converse from "./converse-core";
const { Strophe, $iq, _ } = converse.env;
const { Strophe, $iq } = converse.env;
const u = converse.env.utils;
Strophe.addNamespace('PING', "urn:xmpp:ping");
......
......@@ -9,7 +9,7 @@
import "./converse-disco";
import converse from "./converse-core";
const { Strophe, Backbone, $iq, $build, $msg, $pres, dayjs, _ } = converse.env;
const { Strophe, $iq } = converse.env;
Strophe.addNamespace('PUBSUB_ERROR', Strophe.NS.PUBSUB+"#errors");
......@@ -22,8 +22,7 @@ converse.plugins.add('converse-pubsub', {
/* The initialize function gets called as soon as the plugin is
* loaded by converse.js's plugin machinery.
*/
const { _converse } = this,
{ __ } = _converse;
const { _converse } = this;
/************************ BEGIN API ************************/
......
......@@ -11,9 +11,10 @@
*/
import converse from "./converse-core";
const { Strophe, $build, _ } = converse.env;
const { Strophe, } = converse.env;
const u = converse.env.utils;
Strophe.addNamespace('SM', 'urn:xmpp:sm:3');
......@@ -159,7 +160,7 @@ converse.plugins.add('converse-smacks', {
stanzas.forEach(s => _converse.api.send(s));
}
function onResumedStanza (el, resolve) {
function onResumedStanza (el) {
saveSessionData(el);
handleAck(el);
resendUnackedStanzas();
......@@ -171,8 +172,8 @@ converse.plugins.add('converse-smacks', {
async function sendResumeStanza () {
const promise = u.getResolveablePromise();
_converse.connection._addSysHandler(_.flow(onResumedStanza, promise.resolve), Strophe.NS.SM, 'resumed');
_converse.connection._addSysHandler(_.flow(onFailedStanza, promise.resolve), Strophe.NS.SM, 'failed');
_converse.connection._addSysHandler(el => promise.resolve(onResumedStanza(el)), Strophe.NS.SM, 'resumed');
_converse.connection._addSysHandler(el => promise.resolve(onFailedStanza(el)), Strophe.NS.SM, 'failed');
const previous_id = _converse.session.get('smacks_stream_id');
const h = _converse.session.get('num_stanzas_handled');
......@@ -188,8 +189,8 @@ converse.plugins.add('converse-smacks', {
}
if (await isStreamManagementSupported()) {
const promise = u.getResolveablePromise();
_converse.connection._addSysHandler(_.flow(saveSessionData, promise.resolve), Strophe.NS.SM, 'enabled');
_converse.connection._addSysHandler(_.flow(onFailedStanza, promise.resolve), Strophe.NS.SM, 'failed');
_converse.connection._addSysHandler(el => promise.resolve(saveSessionData(el)), Strophe.NS.SM, 'enabled');
_converse.connection._addSysHandler(el => promise.resolve(onFailedStanza(el)), Strophe.NS.SM, 'failed');
const resume = (_converse.api.connection.isType('websocket') || _converse.isTestEnv());
const stanza = u.toStanza(`<enable xmlns="${Strophe.NS.SM}" resume="${resume}"/>`);
......
......@@ -10,7 +10,7 @@ import BrowserStorage from "backbone.browserStorage";
import converse from "./converse-core";
import tpl_vcard from "./templates/vcard.html";
const { Backbone, Strophe, _, $iq, $build, dayjs, sizzle } = converse.env;
const { Backbone, Strophe, _, $iq, dayjs, } = converse.env;
const u = converse.env.utils;
......
......@@ -6,12 +6,9 @@
// Copyright (c) 2013-2017, Jan-Carel Brand <jc@opkode.com>
// Licensed under the Mozilla Public License (MPLv2)
//
import * as strophe from 'strophe.js/src/core';
import Jed from "jed";
import dayjs from "dayjs";
const Strophe = strophe.default.Strophe;
function detectLocale (library_check) {
/* Determine which locale is supported by the user's system as well
......
......@@ -497,7 +497,6 @@ u.getSelectValues = function (select) {
u.formatFingerprint = function (fp) {
fp = fp.replace(/^05/, '');
const arr = [];
for (let i=1; i<8; i++) {
const idx = i*8+i-1;
fp = fp.slice(0, idx) + ' ' + fp.slice(idx);
......
......@@ -6,7 +6,6 @@
// Copyright (c) 2013-2019, Jan-Carel Brand <jc@opkode.com>
// Licensed under the Mozilla Public License (MPLv2)
//
/*global Jed */
import converse from "@converse/headless/converse-core";
import u from "./core";
......
......@@ -91,7 +91,7 @@
{{{o.__('Other OMEMO-enabled devices')}}}
</label>
</li>
{[ o._.forEach(o.view.other_devices, function (device) { ]}
{[ o.view.other_devices.forEach(function (device) { ]}
{[ if (device.get('bundle') && device.get('bundle').fingerprint) { ]}
<li class="fingerprint-removal-item list-group-item nopadding">
<label>
......
......@@ -10,7 +10,6 @@ import URI from "urijs";
import _ from "../headless/lodash.noconflict";
import sizzle from "sizzle";
import tpl_audio from "../templates/audio.html";
import tpl_field from "@converse/headless/templates/field.html";
import tpl_file from "../templates/file.html";
import tpl_form_captcha from "../templates/form_captcha.html";
import tpl_form_checkbox from "../templates/form_checkbox.html";
......@@ -172,7 +171,7 @@ u.renderImageURLs = function (_converse, el) {
const list = el.textContent.match(URL_REGEX) || [];
return Promise.all(
list.map(url =>
new Promise((resolve, reject) => {
new Promise((resolve) => {
if (u.isImageURL(url)) {
return isImage(url).then(img => {
const i = new Image();
......@@ -290,8 +289,12 @@ u.ancestor = function (el, selector) {
return parent;
}
u.nextUntil = function (el, selector, include_self=false) {
/* Return the element's siblings until one matches the selector. */
/**
* Return the element's siblings until one matches the selector.
* @private
* @method u#nextUntil
*/
u.nextUntil = function (el, selector) {
const matches = [];
let sibling_el = el.nextElementSibling;
while (sibling_el !== null && !sibling_el.matches(selector)) {
......
(function () {
document.addEventListener("DOMContentLoaded", function(event) {
document.addEventListener("DOMContentLoaded", function () {
window.addEventListener('scroll', function (ev) {
window.addEventListener('scroll', function () {
var navbar = document.querySelector(".navbar");
var rect = navbar.getBoundingClientRect();
if (rect.top + window.scrollY > 50) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment