Commit 6193a9dc authored by JC Brand's avatar JC Brand

Replace lodash methods with native ones and remove lodash.fp

parent b1ef3f5b
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
// You can retrieve multiple contacts by passing in an array // You can retrieve multiple contacts by passing in an array
const jid2 = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@localhost'; const jid2 = mock.cur_names[1].replace(/ /g,'.').toLowerCase() + '@localhost';
let list = await _converse.api.contacts.get([jid, jid2]); let list = await _converse.api.contacts.get([jid, jid2]);
expect(_.isArray(list)).toBeTruthy(); expect(Array.isArray(list)).toBeTruthy();
expect(list[0].get('fullname')).toBe(mock.cur_names[0]); expect(list[0].get('fullname')).toBe(mock.cur_names[0]);
expect(list[1].get('fullname')).toBe(mock.cur_names[1]); expect(list[1].get('fullname')).toBe(mock.cur_names[1]);
// Check that all JIDs are returned if you call without any parameters // Check that all JIDs are returned if you call without any parameters
...@@ -313,7 +313,7 @@ ...@@ -313,7 +313,7 @@
test_utils.openChatBoxFor(_converse, jid2); test_utils.openChatBoxFor(_converse, jid2);
await test_utils.waitUntil(() => _converse.chatboxes.length == 2); await test_utils.waitUntil(() => _converse.chatboxes.length == 2);
const list = _converse.api.chats.get([jid, jid2]); const list = _converse.api.chats.get([jid, jid2]);
expect(_.isArray(list)).toBeTruthy(); expect(Array.isArray(list)).toBeTruthy();
expect(list[0].get('box_id')).toBe(`box-${btoa(jid)}`); expect(list[0].get('box_id')).toBe(`box-${btoa(jid)}`);
expect(list[1].get('box_id')).toBe(`box-${btoa(jid2)}`); expect(list[1].get('box_id')).toBe(`box-${btoa(jid2)}`);
done(); done();
...@@ -343,7 +343,7 @@ ...@@ -343,7 +343,7 @@
expect(u.isVisible(chatboxview.el)).toBeTruthy(); expect(u.isVisible(chatboxview.el)).toBeTruthy();
// Test for multiple JIDs // Test for multiple JIDs
const list = await _converse.api.chats.open([jid, jid2]); const list = await _converse.api.chats.open([jid, jid2]);
expect(_.isArray(list)).toBeTruthy(); expect(Array.isArray(list)).toBeTruthy();
expect(list[0].get('box_id')).toBe(`box-${btoa(jid)}`); expect(list[0].get('box_id')).toBe(`box-${btoa(jid)}`);
expect(list[1].get('box_id')).toBe(`box-${btoa(jid2)}`); expect(list[1].get('box_id')).toBe(`box-${btoa(jid2)}`);
done(); done();
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
const $iq = converse.env.$iq; const $iq = converse.env.$iq;
const Strophe = converse.env.Strophe; const Strophe = converse.env.Strophe;
const _ = converse.env._; const _ = converse.env._;
const f = converse.env.f;
describe("XEP-0357 Push Notifications", function () { describe("XEP-0357 Push Notifications", function () {
...@@ -30,7 +29,7 @@ ...@@ -30,7 +29,7 @@
_converse.bare_jid, _converse.bare_jid,
[{'category': 'account', 'type':'registered'}], [{'category': 'account', 'type':'registered'}],
['urn:xmpp:push:0'], [], 'info'); ['urn:xmpp:push:0'], [], 'info');
const node = await test_utils.waitUntil(() => const node = await test_utils.waitUntil(() =>
_.filter(IQ_stanzas, iq => iq.nodeTree.querySelector('iq[type="set"] enable[xmlns="urn:xmpp:push:0"]')).pop() _.filter(IQ_stanzas, iq => iq.nodeTree.querySelector('iq[type="set"] enable[xmlns="urn:xmpp:push:0"]')).pop()
); );
const stanza = node.nodeTree; const stanza = node.nodeTree;
...@@ -84,7 +83,7 @@ ...@@ -84,7 +83,7 @@
'type': 'result', 'type': 'result',
'id': stanza.nodeTree.getAttribute('id') 'id': stanza.nodeTree.getAttribute('id')
}))); })));
await test_utils.waitUntil(() => f.includes('chat.shakespeare.lit', _converse.session.get('push_enabled'))); await test_utils.waitUntil(() => _.includes(_converse.session.get('push_enabled'), 'chat.shakespeare.lit'));
done(); done();
})); }));
......
...@@ -28,7 +28,7 @@ import tpl_user_details_modal from "templates/user_details_modal.html"; ...@@ -28,7 +28,7 @@ import tpl_user_details_modal from "templates/user_details_modal.html";
import u from "@converse/headless/utils/emoji"; import u from "@converse/headless/utils/emoji";
import xss from "xss/dist/xss"; import xss from "xss/dist/xss";
const { $msg, Backbone, Promise, Strophe, _, b64_sha1, f, sizzle, dayjs } = converse.env; const { $msg, Backbone, Promise, Strophe, _, b64_sha1, sizzle, dayjs } = converse.env;
converse.plugins.add('converse-chatview', { converse.plugins.add('converse-chatview', {
...@@ -593,10 +593,7 @@ converse.plugins.add('converse-chatview', { ...@@ -593,10 +593,7 @@ converse.plugins.add('converse-chatview', {
}, },
clearSpinner () { clearSpinner () {
_.each( this.content.querySelectorAll('.spinner').forEach(u.removeElement);
this.content.querySelectorAll('span.spinner'),
(el) => el.parentNode.removeChild(el)
);
}, },
/** /**
...@@ -696,7 +693,7 @@ converse.plugins.add('converse-chatview', { ...@@ -696,7 +693,7 @@ converse.plugins.add('converse-chatview', {
}, },
showHelpMessages (msgs, type, spinner) { showHelpMessages (msgs, type, spinner) {
_.each(msgs, (msg) => { msgs.forEach(msg => {
this.content.insertAdjacentHTML( this.content.insertAdjacentHTML(
'beforeend', 'beforeend',
tpl_help_message({ tpl_help_message({
...@@ -996,7 +993,7 @@ converse.plugins.add('converse-chatview', { ...@@ -996,7 +993,7 @@ converse.plugins.add('converse-chatview', {
}, },
getOwnMessages () { getOwnMessages () {
return f(this.model.messages.filter({'sender': 'me'})); return this.model.messages.filter({'sender': 'me'});
}, },
onEscapePressed (ev) { onEscapePressed (ev) {
...@@ -1065,7 +1062,7 @@ converse.plugins.add('converse-chatview', { ...@@ -1065,7 +1062,7 @@ converse.plugins.add('converse-chatview', {
} }
} }
} }
message = message || this.getOwnMessages().findLast((msg) => msg.get('message')); message = message || _.findLast(this.getOwnMessages(), msg => msg.get('message'));
if (message) { if (message) {
this.insertIntoTextArea(message.get('message'), true, true); this.insertIntoTextArea(message.get('message'), true, true);
message.save('correcting', true); message.save('correcting', true);
......
...@@ -12,7 +12,6 @@ import "converse-rosterview"; ...@@ -12,7 +12,6 @@ import "converse-rosterview";
import _FormData from "formdata-polyfill"; import _FormData from "formdata-polyfill";
import bootstrap from "bootstrap.native"; import bootstrap from "bootstrap.native";
import converse from "@converse/headless/converse-core"; import converse from "@converse/headless/converse-core";
import fp from "@converse/headless/lodash.fp";
import tpl_brand_heading from "templates/converse_brand_heading.html"; import tpl_brand_heading from "templates/converse_brand_heading.html";
import tpl_controlbox from "templates/controlbox.html"; import tpl_controlbox from "templates/controlbox.html";
import tpl_controlbox_toggle from "templates/controlbox_toggle.html"; import tpl_controlbox_toggle from "templates/controlbox_toggle.html";
......
...@@ -26,7 +26,7 @@ converse.plugins.add('converse-embedded', { ...@@ -26,7 +26,7 @@ converse.plugins.add('converse-embedded', {
'hide_muc_server': true 'hide_muc_server': true
}); });
const { _converse } = this; const { _converse } = this;
if (!_.isArray(_converse.auto_join_rooms) && !_.isArray(_converse.auto_join_private_chats)) { if (!Array.isArray(_converse.auto_join_rooms) && !_.isArray(_converse.auto_join_private_chats)) {
throw new Error("converse-embedded: auto_join_rooms must be an Array"); throw new Error("converse-embedded: auto_join_rooms must be an Array");
} }
if (_converse.auto_join_rooms.length > 1 && _converse.auto_join_private_chats.length > 1) { if (_converse.auto_join_rooms.length > 1 && _converse.auto_join_private_chats.length > 1) {
......
This diff is collapsed.
...@@ -66,7 +66,7 @@ converse.plugins.add('converse-notification', { ...@@ -66,7 +66,7 @@ converse.plugins.add('converse-notification', {
} }
const mentioned = (new RegExp(`\\b${room.get('nick')}\\b`)).test(body.textContent); const mentioned = (new RegExp(`\\b${room.get('nick')}\\b`)).test(body.textContent);
notify_all = notify_all === true || notify_all = notify_all === true ||
(_.isArray(notify_all) && _.includes(notify_all, room_jid)); (Array.isArray(notify_all) && _.includes(notify_all, room_jid));
if (sender === room.get('nick') || (!notify_all && !mentioned)) { if (sender === room.get('nick') || (!notify_all && !mentioned)) {
return false; return false;
} }
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
import converse from "@converse/headless/converse-core"; import converse from "@converse/headless/converse-core";
import tpl_toolbar_omemo from "templates/toolbar_omemo.html"; import tpl_toolbar_omemo from "templates/toolbar_omemo.html";
const { Backbone, Promise, Strophe, dayjs, sizzle, $build, $iq, $msg, _, f } = converse.env; const { Backbone, Promise, Strophe, dayjs, sizzle, $build, $iq, $msg, _ } = converse.env;
const u = converse.env.utils; const u = converse.env.utils;
Strophe.addNamespace('OMEMO_DEVICELIST', Strophe.NS.OMEMO+".devicelist"); Strophe.addNamespace('OMEMO_DEVICELIST', Strophe.NS.OMEMO+".devicelist");
...@@ -67,7 +67,7 @@ function parseBundle (bundle_el) { ...@@ -67,7 +67,7 @@ function parseBundle (bundle_el) {
converse.plugins.add('converse-omemo', { converse.plugins.add('converse-omemo', {
enabled (_converse) { enabled (_converse) {
return !_.isNil(window.libsignal) && !f.includes('converse-omemo', _converse.blacklisted_plugins) && _converse.config.get('trusted'); return !_.isNil(window.libsignal) && !_converse.blacklisted_plugins.includes('converse-omemo') && _converse.config.get('trusted');
}, },
dependencies: ["converse-chatview", "converse-pubsub"], dependencies: ["converse-chatview", "converse-pubsub"],
......
...@@ -438,7 +438,7 @@ converse.plugins.add('converse-register', { ...@@ -438,7 +438,7 @@ converse.plugins.add('converse-register', {
}, },
renderLegacyRegistrationForm (form) { renderLegacyRegistrationForm (form) {
_.each(Object.keys(this.fields), (key) => { Object.keys(this.fields).forEach(key => {
if (key === "username") { if (key === "username") {
form.insertAdjacentHTML( form.insertAdjacentHTML(
'beforeend', 'beforeend',
...@@ -466,12 +466,10 @@ converse.plugins.add('converse-register', { ...@@ -466,12 +466,10 @@ converse.plugins.add('converse-register', {
} }
}); });
// Show urls // Show urls
_.each(this.urls, (url) => { this.urls.forEach(u => form.insertAdjacentHTML(
form.insertAdjacentHTML( 'afterend',
'afterend', '<a target="blank" rel="noopener" href="'+u+'">'+u+'</a>'
'<a target="blank" rel="noopener" href="'+url+'">'+url+'</a>' ));
);
});
}, },
/** /**
...@@ -493,7 +491,7 @@ converse.plugins.add('converse-register', { ...@@ -493,7 +491,7 @@ converse.plugins.add('converse-register', {
const buttons = form.querySelector('fieldset.buttons'); const buttons = form.querySelector('fieldset.buttons');
if (this.form_type === 'xform') { if (this.form_type === 'xform') {
_.each(stanza.querySelectorAll('field'), (field) => { stanza.querySelectorAll('field').forEach(field => {
buttons.insertAdjacentHTML( buttons.insertAdjacentHTML(
'beforebegin', 'beforebegin',
utils.xForm2webForm(field, stanza, {'domain': this.domain}) utils.xForm2webForm(field, stanza, {'domain': this.domain})
...@@ -540,9 +538,7 @@ converse.plugins.add('converse-register', { ...@@ -540,9 +538,7 @@ converse.plugins.add('converse-register', {
*/ */
reportErrors (stanza) { reportErrors (stanza) {
const errors = stanza.querySelectorAll('error'); const errors = stanza.querySelectorAll('error');
_.each(errors, (error) => { errors.forEach(e => this.showValidationError(e.textContent));
this.showValidationError(error.textContent);
});
if (!errors.length) { if (!errors.length) {
const message = __('The provider rejected your registration attempt. '+ const message = __('The provider rejected your registration attempt. '+
'Please check the values you entered for correctness.'); 'Please check the values you entered for correctness.');
...@@ -596,13 +592,9 @@ converse.plugins.add('converse-register', { ...@@ -596,13 +592,9 @@ converse.plugins.add('converse-register', {
if (this.form_type === 'xform') { if (this.form_type === 'xform') {
iq.c("x", {xmlns: Strophe.NS.XFORM, type: 'submit'}); iq.c("x", {xmlns: Strophe.NS.XFORM, type: 'submit'});
_.each(inputs, (input) => { inputs.forEach(input => iq.cnode(utils.webForm2xForm(input)).up());
iq.cnode(utils.webForm2xForm(input)).up();
});
} else { } else {
_.each(inputs, (input) => { inputs.forEach(input => iq.c(input.getAttribute('name'), {}, input.value));
iq.c(input.getAttribute('name'), {}, input.value);
});
} }
_converse.connection._addSysHandler(this._onRegisterIQ.bind(this), null, "iq", null, null); _converse.connection._addSysHandler(this._onRegisterIQ.bind(this), null, "iq", null, null);
_converse.connection.send(iq); _converse.connection.send(iq);
...@@ -625,7 +617,7 @@ converse.plugins.add('converse-register', { ...@@ -625,7 +617,7 @@ converse.plugins.add('converse-register', {
}, },
_setFieldsFromLegacy (query) { _setFieldsFromLegacy (query) {
_.each(query.children, (field) => { [].forEach.call(query.children, field => {
if (field.tagName.toLowerCase() === 'instructions') { if (field.tagName.toLowerCase() === 'instructions') {
this.instructions = Strophe.getText(field); this.instructions = Strophe.getText(field);
return; return;
...@@ -643,7 +635,7 @@ converse.plugins.add('converse-register', { ...@@ -643,7 +635,7 @@ converse.plugins.add('converse-register', {
_setFieldsFromXForm (xform) { _setFieldsFromXForm (xform) {
this.title = _.get(xform.querySelector('title'), 'textContent'); this.title = _.get(xform.querySelector('title'), 'textContent');
this.instructions = _.get(xform.querySelector('instructions'), 'textContent'); this.instructions = _.get(xform.querySelector('instructions'), 'textContent');
_.each(xform.querySelectorAll('field'), (field) => { xform.querySelectorAll('field').forEach(field => {
const _var = field.getAttribute('var'); const _var = field.getAttribute('var');
if (_var) { if (_var) {
this.fields[_var.toLowerCase()] = _.get(field.querySelector('value'), 'textContent', ''); this.fields[_var.toLowerCase()] = _.get(field.querySelector('value'), 'textContent', '');
......
...@@ -57,7 +57,7 @@ const WHITELISTED_PLUGINS = [ ...@@ -57,7 +57,7 @@ const WHITELISTED_PLUGINS = [
const initialize = converse.initialize; const initialize = converse.initialize;
converse.initialize = function (settings, callback) { converse.initialize = function (settings, callback) {
if (converse.env._.isArray(settings.whitelisted_plugins)) { if (Array.isArray(settings.whitelisted_plugins)) {
settings.whitelisted_plugins = settings.whitelisted_plugins.concat(WHITELISTED_PLUGINS); settings.whitelisted_plugins = settings.whitelisted_plugins.concat(WHITELISTED_PLUGINS);
} else { } else {
settings.whitelisted_plugins = WHITELISTED_PLUGINS; settings.whitelisted_plugins = WHITELISTED_PLUGINS;
......
This diff is collapsed.
...@@ -1104,7 +1104,7 @@ converse.plugins.add('converse-chatboxes', { ...@@ -1104,7 +1104,7 @@ converse.plugins.add('converse-chatboxes', {
} }
return chatbox; return chatbox;
} }
if (_.isArray(jids)) { if (Array.isArray(jids)) {
return Promise.all(jids.forEach(async jid => { return Promise.all(jids.forEach(async jid => {
const contact = await _converse.api.contacts.get(jids); const contact = await _converse.api.contacts.get(jids);
attrs.fullname = _.get(contact, 'attributes.fullname'); attrs.fullname = _.get(contact, 'attributes.fullname');
...@@ -1168,7 +1168,7 @@ converse.plugins.add('converse-chatboxes', { ...@@ -1168,7 +1168,7 @@ converse.plugins.add('converse-chatboxes', {
if (_.isString(jids)) { if (_.isString(jids)) {
const chat = await _converse.api.chats.create(jids, attrs); const chat = await _converse.api.chats.create(jids, attrs);
return chat.maybeShow(force); return chat.maybeShow(force);
} else if (_.isArray(jids)) { } else if (Array.isArray(jids)) {
return Promise.all(jids.map(j => _converse.api.chats.create(j, attrs).then(c => c.maybeShow(force)))); return Promise.all(jids.map(j => _converse.api.chats.create(j, attrs).then(c => c.maybeShow(force))));
} }
const err_msg = "chats.open: You need to provide at least one JID"; const err_msg = "chats.open: You need to provide at least one JID";
......
...@@ -11,7 +11,6 @@ import Promise from "es6-promise/dist/es6-promise.auto"; ...@@ -11,7 +11,6 @@ import Promise from "es6-promise/dist/es6-promise.auto";
import _ from "./lodash.noconflict"; import _ from "./lodash.noconflict";
import advancedFormat from 'dayjs/plugin/advancedFormat' import advancedFormat from 'dayjs/plugin/advancedFormat'
import dayjs from "dayjs"; import dayjs from "dayjs";
import f from "./lodash.fp";
import i18n from "./i18n"; import i18n from "./i18n";
import pluggable from "pluggable.js/src/pluggable"; import pluggable from "pluggable.js/src/pluggable";
import polyfill from "./polyfill"; import polyfill from "./polyfill";
...@@ -548,7 +547,7 @@ function cleanup () { ...@@ -548,7 +547,7 @@ function cleanup () {
_converse.initialize = async function (settings, callback) { _converse.initialize = async function (settings, callback) {
settings = !_.isUndefined(settings) ? settings : {}; settings = !_.isUndefined(settings) ? settings : {};
const init_promise = u.getResolveablePromise(); const init_promise = u.getResolveablePromise();
_.each(PROMISES, addPromise); PROMISES.forEach(addPromise);
if (!_.isUndefined(_converse.connection)) { if (!_.isUndefined(_converse.connection)) {
cleanup(); cleanup();
} }
...@@ -941,7 +940,7 @@ _converse.initialize = async function (settings, callback) { ...@@ -941,7 +940,7 @@ _converse.initialize = async function (settings, callback) {
_converse.tearDown(); _converse.tearDown();
} }
// Recreate all the promises // Recreate all the promises
_.each(Object.keys(_converse.promises), addPromise); Object.keys(_converse.promises).forEach(addPromise);
/** /**
* Triggered once the user has logged out. * Triggered once the user has logged out.
* @event _converse#logout * @event _converse#logout
...@@ -1674,8 +1673,8 @@ _converse.api = { ...@@ -1674,8 +1673,8 @@ _converse.api = {
* @example _converse.api.promises.add('foo-completed'); * @example _converse.api.promises.add('foo-completed');
*/ */
'add' (promises) { 'add' (promises) {
promises = _.isArray(promises) ? promises : [promises] promises = Array.isArray(promises) ? promises : [promises]
_.each(promises, addPromise); promises.forEach(addPromise);
} }
}, },
...@@ -1927,7 +1926,6 @@ const converse = { ...@@ -1927,7 +1926,6 @@ const converse = {
* @property {function} converse.env.Strophe - The [Strophe](http://strophe.im/strophejs) XMPP library used by Converse. * @property {function} converse.env.Strophe - The [Strophe](http://strophe.im/strophejs) XMPP library used by Converse.
* @property {object} converse.env._ - The instance of [lodash](http://lodash.com) used by Converse. * @property {object} converse.env._ - The instance of [lodash](http://lodash.com) used by Converse.
* @property {function} converse.env.f - And instance of Lodash with its methods wrapped to produce immutable auto-curried iteratee-first data-last methods. * @property {function} converse.env.f - And instance of Lodash with its methods wrapped to produce immutable auto-curried iteratee-first data-last methods.
* @property {function} converse.env.b64_sha1 - Utility method from Strophe for creating base64 encoded sha1 hashes.
* @property {object} converse.env.dayjs - [DayJS](https://github.com/iamkun/dayjs) date manipulation library. * @property {object} converse.env.dayjs - [DayJS](https://github.com/iamkun/dayjs) date manipulation library.
* @property {function} converse.env.sizzle - [Sizzle](https://sizzlejs.com) CSS selector engine. * @property {function} converse.env.sizzle - [Sizzle](https://sizzlejs.com) CSS selector engine.
* @property {object} converse.env.utils - Module containing common utility methods used by Converse. * @property {object} converse.env.utils - Module containing common utility methods used by Converse.
...@@ -1941,7 +1939,6 @@ const converse = { ...@@ -1941,7 +1939,6 @@ const converse = {
'Promise': Promise, 'Promise': Promise,
'Strophe': Strophe, 'Strophe': Strophe,
'_': _, '_': _,
'f': f,
'b64_sha1': b64_sha1, 'b64_sha1': b64_sha1,
'dayjs': dayjs, 'dayjs': dayjs,
'sizzle': sizzle, 'sizzle': sizzle,
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
import converse from "./converse-core"; import converse from "./converse-core";
import sizzle from "sizzle"; import sizzle from "sizzle";
const { Backbone, Promise, Strophe, $iq, utils, _, f } = converse.env; const { Backbone, Promise, Strophe, $iq, utils, _ } = converse.env;
converse.plugins.add('converse-disco', { converse.plugins.add('converse-disco', {
...@@ -584,8 +584,8 @@ converse.plugins.add('converse-disco', { ...@@ -584,8 +584,8 @@ converse.plugins.add('converse-disco', {
entity.hasFeature(feature) entity.hasFeature(feature)
); );
const result = await Promise.all(promises); const result = await Promise.all(promises);
return f.filter(f.isObject, result); return _.filter(result, _.isObject);
}, }
}, },
/** /**
......
...@@ -19,7 +19,7 @@ const MUC_ROLE_WEIGHTS = { ...@@ -19,7 +19,7 @@ const MUC_ROLE_WEIGHTS = {
'none': 2, 'none': 2,
}; };
const { Strophe, Backbone, Promise, $iq, $build, $msg, $pres, sizzle, f, dayjs, _ } = converse.env; const { Strophe, Backbone, Promise, $iq, $build, $msg, $pres, sizzle, dayjs, _ } = converse.env;
// Add Strophe Namespaces // Add Strophe Namespaces
Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC + "#admin"); Strophe.addNamespace('MUC_ADMIN', Strophe.NS.MUC + "#admin");
...@@ -84,7 +84,7 @@ converse.plugins.add('converse-muc', { ...@@ -84,7 +84,7 @@ converse.plugins.add('converse-muc', {
const { _converse } = this.__super__, const { _converse } = this.__super__,
groupchats = this.chatboxes.where({'type': _converse.CHATROOMS_TYPE}); groupchats = this.chatboxes.where({'type': _converse.CHATROOMS_TYPE});
_.each(groupchats, gc => u.safeSave(gc, {'connection_status': converse.ROOMSTATUS.DISCONNECTED})); groupchats.forEach(gc => u.safeSave(gc, {'connection_status': converse.ROOMSTATUS.DISCONNECTED}));
this.__super__.tearDown.call(this, arguments); this.__super__.tearDown.call(this, arguments);
}, },
...@@ -193,7 +193,7 @@ converse.plugins.add('converse-muc', { ...@@ -193,7 +193,7 @@ converse.plugins.add('converse-muc', {
'chat_state': undefined, 'chat_state': undefined,
'connection_status': converse.ROOMSTATUS.DISCONNECTED, 'connection_status': converse.ROOMSTATUS.DISCONNECTED,
'description': '', 'description': '',
'hidden': _.includes(['mobile', 'fullscreen'], _converse.view_mode), 'hidden': ['mobile', 'fullscreen'].includes(_converse.view_mode),
'message_type': 'groupchat', 'message_type': 'groupchat',
'name': '', 'name': '',
'nick': _converse.xmppstatus.get('nickname') || _converse.nickname, 'nick': _converse.xmppstatus.get('nickname') || _converse.nickname,
...@@ -248,16 +248,16 @@ converse.plugins.add('converse-muc', { ...@@ -248,16 +248,16 @@ converse.plugins.add('converse-muc', {
*/ */
const room_jid = this.get('jid'); const room_jid = this.get('jid');
this.removeHandlers(); this.removeHandlers();
this.presence_handler = _converse.connection.addHandler((stanza) => { this.presence_handler = _converse.connection.addHandler(stanza => {
_.each(_.values(this.handlers.presence), (callback) => callback(stanza)); Object.values(this.handlers.presence).forEach(callback => callback(stanza));
this.onPresence(stanza); this.onPresence(stanza);
return true; return true;
}, },
null, 'presence', null, null, room_jid, null, 'presence', null, null, room_jid,
{'ignoreNamespaceFragment': true, 'matchBareFromJid': true} {'ignoreNamespaceFragment': true, 'matchBareFromJid': true}
); );
this.message_handler = _converse.connection.addHandler((stanza) => { this.message_handler = _converse.connection.addHandler(stanza => {
_.each(_.values(this.handlers.message), (callback) => callback(stanza)); Object.values(this.handlers.message).forEach(callback => callback(stanza));
this.onMessage(stanza); this.onMessage(stanza);
return true; return true;
}, null, 'message', 'groupchat', null, room_jid, }, null, 'message', 'groupchat', null, room_jid,
...@@ -720,11 +720,11 @@ converse.plugins.add('converse-muc', { ...@@ -720,11 +720,11 @@ converse.plugins.add('converse-muc', {
* groupchat configuration. * groupchat configuration.
* The second is the response IQ from the server. * The second is the response IQ from the server.
*/ */
sendConfiguration (config, callback, errback) { sendConfiguration (config=[], callback, errback) {
const iq = $iq({to: this.get('jid'), type: "set"}) const iq = $iq({to: this.get('jid'), type: "set"})
.c("query", {xmlns: Strophe.NS.MUC_OWNER}) .c("query", {xmlns: Strophe.NS.MUC_OWNER})
.c("x", {xmlns: Strophe.NS.XFORM, type: "submit"}); .c("x", {xmlns: Strophe.NS.XFORM, type: "submit"});
_.each(config || [], function (node) { iq.cnode(node).up(); }); config.forEach(node => iq.cnode(node).up());
callback = _.isUndefined(callback) ? _.noop : _.partial(callback, iq.nodeTree); callback = _.isUndefined(callback) ? _.noop : _.partial(callback, iq.nodeTree);
errback = _.isUndefined(errback) ? _.noop : _.partial(errback, iq.nodeTree); errback = _.isUndefined(errback) ? _.noop : _.partial(errback, iq.nodeTree);
return _converse.api.sendIQ(iq).then(callback).catch(errback); return _converse.api.sendIQ(iq).then(callback).catch(errback);
...@@ -818,7 +818,7 @@ converse.plugins.add('converse-muc', { ...@@ -818,7 +818,7 @@ converse.plugins.add('converse-muc', {
* a string if only one affiliation. * a string if only one affiliation.
* @param { function } deltaFunc - The function to compute the delta * @param { function } deltaFunc - The function to compute the delta
* between old and new member lists. * between old and new member lists.
* @returns { promise } * @returns { promise }
* A promise which is resolved once the list has been * A promise which is resolved once the list has been
* updated or once it's been established there's no need * updated or once it's been established there's no need
* to update the list. * to update the list.
...@@ -952,7 +952,8 @@ converse.plugins.add('converse-muc', { ...@@ -952,7 +952,8 @@ converse.plugins.add('converse-muc', {
'states': [], 'states': [],
'show': type !== 'unavailable' ? 'online' : 'offline' 'show': type !== 'unavailable' ? 'online' : 'offline'
}; };
_.each(pres.childNodes, function (child) {
pres.childNodes.forEach(child => {
switch (child.nodeName) { switch (child.nodeName) {
case "status": case "status":
data.status = child.textContent || null; data.status = child.textContent || null;
...@@ -962,7 +963,7 @@ converse.plugins.add('converse-muc', { ...@@ -962,7 +963,7 @@ converse.plugins.add('converse-muc', {
break; break;
case "x": case "x":
if (child.getAttribute("xmlns") === Strophe.NS.MUC_USER) { if (child.getAttribute("xmlns") === Strophe.NS.MUC_USER) {
_.each(child.childNodes, function (item) { child.childNodes.forEach(item => {
switch (item.nodeName) { switch (item.nodeName) {
case "item": case "item":
data.affiliation = item.getAttribute("affiliation"); data.affiliation = item.getAttribute("affiliation");
...@@ -1309,18 +1310,18 @@ converse.plugins.add('converse-muc', { ...@@ -1309,18 +1310,18 @@ converse.plugins.add('converse-muc', {
const new_jids = new_members.map(m => m.jid).filter(m => !_.isUndefined(m)), const new_jids = new_members.map(m => m.jid).filter(m => !_.isUndefined(m)),
new_nicks = new_members.map(m => !m.jid && m.nick || undefined).filter(m => !_.isUndefined(m)), new_nicks = new_members.map(m => !m.jid && m.nick || undefined).filter(m => !_.isUndefined(m)),
removed_members = this.filter(m => { removed_members = this.filter(m => {
return f.includes(m.get('affiliation'), ['admin', 'member', 'owner']) && return ['admin', 'member', 'owner'].includes(m.get('affiliation')) &&
!f.includes(m.get('nick'), new_nicks) && !new_nicks.includes(m.get('nick')) &&
!f.includes(m.get('jid'), new_jids); !new_jids.includes(m.get('jid'));
}); });
_.each(removed_members, (occupant) => { removed_members.forEach(occupant => {
if (occupant.get('jid') === _converse.bare_jid) { return; } if (occupant.get('jid') === _converse.bare_jid) { return; }
if (occupant.get('show') === 'offline') { if (occupant.get('show') === 'offline') {
occupant.destroy(); occupant.destroy();
} }
}); });
_.each(new_members, (attrs) => { new_members.forEach(attrs => {
let occupant; let occupant;
if (attrs.jid) { if (attrs.jid) {
occupant = this.findOccupant({'jid': attrs.jid}); occupant = this.findOccupant({'jid': attrs.jid});
...@@ -1447,7 +1448,7 @@ converse.plugins.add('converse-muc', { ...@@ -1447,7 +1448,7 @@ converse.plugins.add('converse-muc', {
* of strings (groupchat JIDs) or objects (with groupchat JID and other * of strings (groupchat JIDs) or objects (with groupchat JID and other
* settings). * settings).
*/ */
_.each(_converse.auto_join_rooms, function (groupchat) { _converse.auto_join_rooms.forEach(groupchat => {
if (_converse.chatboxes.where({'jid': groupchat}).length) { if (_converse.chatboxes.where({'jid': groupchat}).length) {
return; return;
} }
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
import "./converse-disco"; import "./converse-disco";
import converse from "./converse-core"; import converse from "./converse-core";
const { Strophe, Backbone, Promise, $iq, $build, $msg, $pres, f, dayjs, _ } = converse.env; const { Strophe, Backbone, Promise, $iq, $build, $msg, $pres, dayjs, _ } = converse.env;
Strophe.addNamespace('PUBSUB_ERROR', Strophe.NS.PUBSUB+"#errors"); Strophe.addNamespace('PUBSUB_ERROR', Strophe.NS.PUBSUB+"#errors");
......
define(['lodash', './3rdparty/lodash.fp'], function (_, lodashConverter) {
var fp = lodashConverter(_.runInContext());
return fp;
});
...@@ -144,7 +144,7 @@ u.applyUserSettings = function applyUserSettings (context, settings, user_settin ...@@ -144,7 +144,7 @@ u.applyUserSettings = function applyUserSettings (context, settings, user_settin
if (_.isUndefined(user_settings[k])) { if (_.isUndefined(user_settings[k])) {
continue; continue;
} }
if (_.isObject(settings[k]) && !_.isArray(settings[k])) { if (_.isObject(settings[k]) && !Array.isArray(settings[k])) {
applyUserSettings(context[k], settings[k], user_settings[k]); applyUserSettings(context[k], settings[k], user_settings[k]);
} else { } else {
context[k] = user_settings[k]; context[k] = user_settings[k];
......
...@@ -203,7 +203,7 @@ u.getEmojisByCategory = function (_converse) { ...@@ -203,7 +203,7 @@ u.getEmojisByCategory = function (_converse) {
* lists of emojis in that category as values. * lists of emojis in that category as values.
*/ */
if (_.isUndefined(_converse.emojis_by_category)) { if (_.isUndefined(_converse.emojis_by_category)) {
const emojis = _.values(_.mapValues(emoji_list, function (value, key, o) { const emojis = Object.values(_.mapValues(emoji_list, function (value, key, o) {
value._shortname = key; value._shortname = key;
return value return value
})); }));
......
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