Skip to content

Commit 768ed4a

Browse files
committed
Replace lodash methods with built-ins, convert docstrings to JSDoc
1 parent ea22cdd commit 768ed4a

13 files changed

+73
-65
lines changed

src/converse-minimize.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ converse.plugins.add('converse-minimize', {
496496
},
497497

498498
addMultipleChats (items) {
499-
_.each(items, this.addChatView.bind(this));
499+
items.forEach(item => this.addChatView(item));
500500
this.toggleview.model.set({'num_minimized': this.keys().length});
501501
this.render();
502502
},

src/converse-muc-views.js

+11-7
Original file line numberDiff line numberDiff line change
@@ -192,18 +192,22 @@ converse.plugins.add('converse-muc-views', {
192192
}));
193193
}
194194

195+
/**
196+
* Show/hide extra information about a groupchat in a listing.
197+
* @function toggleRoomInfo
198+
* @param { Event }
199+
*/
195200
function toggleRoomInfo (ev) {
196-
/* Show/hide extra information about a groupchat in a listing. */
197-
const parent_el = u.ancestor(ev.target, '.room-item'),
198-
div_el = parent_el.querySelector('div.room-info');
201+
const parent_el = u.ancestor(ev.target, '.room-item');
202+
const div_el = parent_el.querySelector('div.room-info');
199203
if (div_el) {
200204
u.slideIn(div_el).then(u.removeElement)
201205
parent_el.querySelector('a.room-info').classList.remove('selected');
202206
} else {
203207
parent_el.insertAdjacentHTML('beforeend', tpl_spinner());
204208
_converse.api.disco.info(ev.target.getAttribute('data-room-jid'), null)
205209
.then(stanza => insertRoomInfo(parent_el, stanza))
206-
.catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
210+
.catch(e => _converse.log(e, Strophe.LogLevel.ERROR));
207211
}
208212
}
209213

@@ -1312,7 +1316,7 @@ converse.plugins.add('converse-muc-views', {
13121316
this.showSpinner();
13131317
this.model.fetchRoomConfiguration()
13141318
.then(iq => this.renderConfigurationForm(iq))
1315-
.catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
1319+
.catch(e => _converse.log(e, Strophe.LogLevel.ERROR));
13161320
} else {
13171321
this.closeForm();
13181322
}
@@ -2072,7 +2076,7 @@ converse.plugins.add('converse-muc-views', {
20722076
// Features could have been added before the controlbox was
20732077
// initialized. We're only interested in MUC
20742078
_converse.disco_entities.each(entity => featureAdded(entity.features.findWhere({'var': Strophe.NS.MUC })));
2075-
}).catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
2079+
}).catch(e => _converse.log(e, Strophe.LogLevel.ERROR));
20762080
}
20772081

20782082
function fetchAndSetMUCDomain (controlboxview) {
@@ -2124,7 +2128,7 @@ converse.plugins.add('converse-muc-views', {
21242128
return;
21252129
}
21262130
fetchAndSetMUCDomain(view);
2127-
view.model.on('change:connected', _.partial(fetchAndSetMUCDomain, view));
2131+
view.model.on('change:connected', () => fetchAndSetMUCDomain(view));
21282132
});
21292133
/************************ END Event Handlers ************************/
21302134

src/converse-oauth.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ converse.plugins.add("converse-oauth", {
8181
'sync': function sync () {},
8282

8383
initialize () {
84-
_.each(_converse.user_settings.oauth_providers, (provider) => {
84+
_converse.user_settings.oauth_providers.forEach(provider => {
8585
const item = new Backbone.Model(Object.assign(provider, {
8686
'login_text': __('Log in with %1$s', provider.name)
8787
}));

src/converse-omemo.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1022,8 +1022,8 @@ converse.plugins.add('converse-omemo', {
10221022
if (this._devices_promise === undefined) {
10231023
this._devices_promise = new Promise(resolve => {
10241024
this.devices.fetch({
1025-
'success': _.flow(c => this.onDevicesFound(c), resolve),
1026-
'error': _.flow(_.partial(_converse.log, _, Strophe.LogLevel.ERROR), resolve)
1025+
'success': c => resolve(this.onDevicesFound(c)),
1026+
'error': e => { _converse.log(e, Strophe.LogLevel.ERROR); resolve(); }
10271027
});
10281028
});
10291029
}
@@ -1265,11 +1265,11 @@ converse.plugins.add('converse-omemo', {
12651265

12661266
_converse.api.listen.on('userDetailsModalInitialized', (contact) => {
12671267
const jid = contact.get('jid');
1268-
_converse.generateFingerprints(jid).catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
1268+
_converse.generateFingerprints(jid).catch(e => _converse.log(e, Strophe.LogLevel.ERROR));
12691269
});
12701270

12711271
_converse.api.listen.on('profileModalInitialized', (contact) => {
1272-
_converse.generateFingerprints(_converse.bare_jid).catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
1272+
_converse.generateFingerprints(_converse.bare_jid).catch(e => _converse.log(e, Strophe.LogLevel.ERROR));
12731273
});
12741274

12751275
_converse.api.listen.on('afterTearDown', () => (delete _converse.omemo_store));

src/converse-register.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ converse.plugins.add('converse-register', {
142142
_converse.api.waitUntil('controlBoxInitialized').then(() => {
143143
const controlbox = _converse.chatboxes.get('controlbox')
144144
controlbox.set({'active-form': value});
145-
}).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
145+
}).catch(e => _converse.log(e, Strophe.LogLevel.FATAL));
146146
}
147-
_converse.router.route('converse/login', _.partial(setActiveForm, 'login'));
148-
_converse.router.route('converse/register', _.partial(setActiveForm, 'register'));
147+
_converse.router.route('converse/login', () => setActiveForm('login'));
148+
_converse.router.route('converse/register', () => setActiveForm('register'));
149149

150150

151151
_converse.RegisterLinkView = Backbone.VDOMView.extend({

src/converse-rosterview.js

+27-20
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,11 @@ converse.plugins.add('converse-rosterview', {
536536
}
537537
});
538538

539+
/**
540+
* @class
541+
* @namespace _converse.RosterGroupView
542+
* @memberOf _converse
543+
*/
539544
_converse.RosterGroupView = OrderedListView.extend({
540545
tagName: 'div',
541546
className: 'roster-group hidden',
@@ -655,6 +660,7 @@ converse.plugins.add('converse-rosterview', {
655660
* If all contacts are filtered out (i.e. hidden), then the
656661
* group must be filtered out as well.
657662
* @private
663+
* @method _converse.RosterGroupView#filter
658664
* @param { string } q - The query to filter against
659665
* @param { string } type
660666
*/
@@ -728,6 +734,11 @@ converse.plugins.add('converse-rosterview', {
728734
});
729735

730736

737+
/**
738+
* @class
739+
* @namespace _converse.RosterView
740+
* @memberOf _converse
741+
*/
731742
_converse.RosterView = OrderedListView.extend({
732743
tagName: 'div',
733744
id: 'converse-roster',
@@ -830,27 +841,21 @@ converse.plugins.add('converse-rosterview', {
830841
},
831842

832843
filter (query, type) {
833-
// First we make sure the filter is restored to its
834-
// original state
835-
_.each(this.getAll(), function (view) {
836-
if (view.model.contacts.length > 0) {
837-
view.show().filter('');
838-
}
839-
});
844+
const views = Object.values(this.getAll());
845+
// First ensure the filter is restored to its original state
846+
views.forEach(v => (v.model.contacts.length > 0) && v.show().filter(''));
840847
// Now we can filter
841848
query = query.toLowerCase();
842849
if (type === 'groups') {
843-
_.each(this.getAll(), function (view, idx) {
844-
if (!_.includes(view.model.get('name').toLowerCase(), query.toLowerCase())) {
850+
views.forEach(view => {
851+
if (!view.model.get('name').toLowerCase().includes(query)) {
845852
u.slideIn(view.el);
846853
} else if (view.model.contacts.length > 0) {
847854
u.slideOut(view.el);
848855
}
849856
});
850857
} else {
851-
_.each(this.getAll(), function (view) {
852-
view.filter(query, type);
853-
});
858+
views.forEach(v => v.filter(query, type));
854859
}
855860
},
856861

@@ -893,10 +898,14 @@ converse.plugins.add('converse-rosterview', {
893898
this.updateFilter();
894899
},
895900

901+
/**
902+
* Returns the group as specified by name.
903+
* Creates the group if it doesn't exist.
904+
* @method _converse.RosterView#getGroup
905+
* @private
906+
* @param {string} name
907+
*/
896908
getGroup (name) {
897-
/* Returns the group as specified by name.
898-
* Creates the group if it doesn't exist.
899-
*/
900909
const view = this.get(name);
901910
if (view) {
902911
return view.model;
@@ -913,13 +922,11 @@ converse.plugins.add('converse-rosterview', {
913922
let groups;
914923
if (_converse.roster_groups) {
915924
groups = contact.get('groups');
916-
if (groups.length === 0) {
917-
groups = [_converse.HEADER_UNGROUPED];
918-
}
925+
groups = (groups.length === 0) ? [_converse.HEADER_UNGROUPED] : groups;
919926
} else {
920927
groups = [_converse.HEADER_CURRENT_CONTACTS];
921928
}
922-
_.each(groups, _.bind(this.addContactToGroup, this, contact, _, options));
929+
groups.forEach(g => this.addContactToGroup(contact, g, options));
923930
},
924931

925932
addRosterContact (contact, options) {
@@ -965,7 +972,7 @@ converse.plugins.add('converse-rosterview', {
965972
/* Place the rosterview inside the "Contacts" panel. */
966973
_converse.api.waitUntil('rosterViewInitialized')
967974
.then(() => view.controlbox_pane.el.insertAdjacentElement('beforeEnd', _converse.rosterview.el))
968-
.catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
975+
.catch(e => _converse.log(e, Strophe.LogLevel.FATAL));
969976
}
970977
insertRoster();
971978
view.model.on('change:connected', insertRoster);

src/headless/converse-bookmarks.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ converse.plugins.add('converse-bookmarks', {
290290
if (sizzle('event[xmlns="'+Strophe.NS.PUBSUB+'#event"] items[node="storage:bookmarks"]', message).length) {
291291
_converse.api.waitUntil('bookmarksInitialized')
292292
.then(() => _converse.bookmarks.createBookmarksFromStanza(message))
293-
.catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
293+
.catch(e => _converse.log(e, Strophe.LogLevel.FATAL));
294294
}
295295
}, null, 'message', 'headline', null, _converse.bare_jid);
296296

src/headless/converse-chatboxes.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1461,7 +1461,7 @@ converse.plugins.add('converse-chatboxes', {
14611461
} else if (_.isString(jids)) {
14621462
return _converse.chatboxes.getChatBox(jids);
14631463
}
1464-
return jids.map(_.partial(_converse.chatboxes.getChatBox.bind(_converse.chatboxes), _, {}, true));
1464+
return jids.map(jid => _converse.chatboxes.getChatBox(jid, {}, true));
14651465
}
14661466
}
14671467
});

src/headless/converse-core.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1127,8 +1127,8 @@ _converse.initialize = async function (settings, callback) {
11271127
_converse.xmppstatus = new this.XMPPStatus({'id': id});
11281128
_converse.xmppstatus.browserStorage = new BrowserStorage.session(id);
11291129
_converse.xmppstatus.fetch({
1130-
'success': _.partial(_converse.onStatusInitialized, reconnecting),
1131-
'error': _.partial(_converse.onStatusInitialized, reconnecting),
1130+
'success': () => _converse.onStatusInitialized(reconnecting),
1131+
'error': () => _converse.onStatusInitialized(reconnecting),
11321132
'silent': true
11331133
});
11341134
}

src/headless/converse-disco.js

+7-9
Original file line numberDiff line numberDiff line change
@@ -154,9 +154,9 @@ converse.plugins.add('converse-disco', {
154154
},
155155

156156
onDiscoItems (stanza) {
157-
_.each(sizzle(`query[xmlns="${Strophe.NS.DISCO_ITEMS}"] item`, stanza), (item) => {
157+
sizzle(`query[xmlns="${Strophe.NS.DISCO_ITEMS}"] item`, stanza).forEach(item => {
158158
if (item.getAttribute("node")) {
159-
// XXX: ignore nodes for now.
159+
// XXX: Ignore nodes for now.
160160
// See: https://xmpp.org/extensions/xep-0030.html#items-nodes
161161
return;
162162
}
@@ -191,9 +191,9 @@ converse.plugins.add('converse-disco', {
191191
});
192192
});
193193

194-
_.each(sizzle(`x[type="result"][xmlns="${Strophe.NS.XFORM}"]`, stanza), (form) => {
194+
sizzle(`x[type="result"][xmlns="${Strophe.NS.XFORM}"]`, stanza).forEach(form => {
195195
const data = {};
196-
_.each(form.querySelectorAll('field'), (field) => {
196+
sizzle('field', form).forEach(field => {
197197
data[field.getAttribute('var')] = {
198198
'value': _.get(field.querySelector('value'), 'textContent'),
199199
'type': field.getAttribute('type')
@@ -308,7 +308,7 @@ converse.plugins.add('converse-disco', {
308308
iqresult.attrs({'to': from});
309309
}
310310
iqresult.c('query', attrs);
311-
_.each(plugin._identities, (identity) => {
311+
plugin._identities.forEach(identity => {
312312
const attrs = {
313313
'category': identity.category,
314314
'type': identity.type
@@ -321,9 +321,7 @@ converse.plugins.add('converse-disco', {
321321
}
322322
iqresult.c('identity', attrs).up();
323323
});
324-
_.each(plugin._features, (feature) => {
325-
iqresult.c('feature', {'var': feature}).up();
326-
});
324+
plugin._features(feature => iqresult.c('feature', {'var': feature}).up());
327325
_converse.api.send(iqresult.tree());
328326
return true;
329327
}
@@ -771,7 +769,7 @@ converse.plugins.add('converse-disco', {
771769
* // The entity DOES NOT have this identity
772770
* }
773771
* }
774-
* ).catch(_.partial(_converse.log, _, Strophe.LogLevel.FATAL));
772+
* ).catch(e => _converse.log(e, Strophe.LogLevel.FATAL));
775773
*/
776774
async getIdentity (category, type, jid) {
777775
const e = await _converse.api.disco.entities.get(jid, true);

src/headless/converse-muc.js

+11-11
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ converse.plugins.add('converse-muc', {
486486
const storage = _converse.config.get('storage');
487487
const id = `converse.muc-features-${_converse.bare_jid}-${this.get('jid')}`;
488488
this.features = new Backbone.Model(
489-
_.assign({id}, _.zipObject(converse.ROOM_FEATURES, _.map(converse.ROOM_FEATURES, _.stubFalse)))
489+
_.assign({id}, _.zipObject(converse.ROOM_FEATURES, converse.ROOM_FEATURES.map(_.stubFalse)))
490490
);
491491
this.features.browserStorage = new BrowserStorage.session(id);
492492
},
@@ -848,7 +848,7 @@ converse.plugins.add('converse-muc', {
848848

849849
const features = await _converse.api.disco.getFeatures(this.get('jid'));
850850
const attrs = Object.assign(
851-
_.zipObject(converse.ROOM_FEATURES, _.map(converse.ROOM_FEATURES, _.stubFalse)),
851+
_.zipObject(converse.ROOM_FEATURES, converse.ROOM_FEATURES.map(_.stubFalse)),
852852
{'fetched': (new Date()).toISOString()}
853853
);
854854
features.each(feature => {
@@ -900,8 +900,8 @@ converse.plugins.add('converse-muc', {
900900
* has return a response IQ.
901901
*/
902902
saveConfiguration (form) {
903-
const inputs = form ? sizzle(':input:not([type=button]):not([type=submit])', form) : [],
904-
configArray = _.map(inputs, u.webForm2xForm);
903+
const inputs = form ? sizzle(':input:not([type=button]):not([type=submit])', form) : [];
904+
const configArray = inputs.map(u.webForm2xForm);
905905
return this.sendConfiguration(configArray);
906906
},
907907

@@ -1283,7 +1283,7 @@ converse.plugins.add('converse-muc', {
12831283
}
12841284
const occupant = this.occupants.findOccupant(data);
12851285
if (data.type === 'unavailable' && occupant) {
1286-
if (!_.includes(data.states, converse.MUC_NICK_CHANGED_CODE) && !occupant.isMember()) {
1286+
if (!data.states.includes(converse.MUC_NICK_CHANGED_CODE) && !occupant.isMember()) {
12871287
// We only destroy the occupant if this is not a nickname change operation.
12881288
// and if they're not on the member lists.
12891289
// Before destroying we set the new data, so
@@ -1575,7 +1575,7 @@ converse.plugins.add('converse-muc', {
15751575
},
15761576

15771577
handleDisconnection (stanza) {
1578-
const is_self = !_.isNull(stanza.querySelector("status[code='110']"));
1578+
const is_self = stanza.querySelector("status[code='110']") !== null;
15791579
const x = sizzle(`x[xmlns="${Strophe.NS.MUC_USER}"]`, stanza).pop();
15801580
if (!x) {
15811581
return;
@@ -1831,7 +1831,7 @@ converse.plugins.add('converse-muc', {
18311831
const nick = this.get('nick');
18321832
if (message.get('references').length) {
18331833
const mentions = message.get('references').filter(ref => (ref.type === 'mention')).map(ref => ref.value);
1834-
return _.includes(mentions, nick);
1834+
return mentions.includes(nick);
18351835
} else {
18361836
return (new RegExp(`\\b${nick}\\b`)).test(message.get('message'));
18371837
}
@@ -1894,7 +1894,7 @@ converse.plugins.add('converse-muc', {
18941894
}
18951895
vcards.push(_converse.vcards.findWhere({'jid': this.get('from')}));
18961896

1897-
_.forEach(_.filter(vcards, undefined), (vcard) => {
1897+
vcards.filter(v => v).forEach(vcard => {
18981898
if (hash && vcard.get('image_hash') !== hash) {
18991899
_converse.api.vcard.update(vcard, true);
19001900
}
@@ -2175,7 +2175,7 @@ converse.plugins.add('converse-muc', {
21752175
} else if (_.isString(jids)) {
21762176
return createChatRoom(jids, attrs);
21772177
}
2178-
return _.map(jids, _.partial(createChatRoom, _, attrs));
2178+
return jids.map(jid => createChatRoom(jid, attrs));
21792179
},
21802180

21812181
/**
@@ -2249,7 +2249,7 @@ converse.plugins.add('converse-muc', {
22492249
}
22502250
return room;
22512251
} else {
2252-
return _.map(jids, jid => _converse.api.rooms.create(jid, attrs).maybeShow(force));
2252+
return jids.map(jid => _converse.api.rooms.create(jid, attrs).maybeShow(force));
22532253
}
22542254
},
22552255

@@ -2297,7 +2297,7 @@ converse.plugins.add('converse-muc', {
22972297
if (_.isString(jids)) {
22982298
return getChatRoom(jids, attrs);
22992299
}
2300-
return _.map(jids, _.partial(getChatRoom, _, attrs));
2300+
return jids.map(jid => getChatRoom(jid, attrs));
23012301
}
23022302
}
23032303
});

0 commit comments

Comments
 (0)