diff --git a/src/components/views/elements/MemberEventListSummary.js b/src/components/views/elements/MemberEventListSummary.js
index 3d0e1c6a7e..49322d6644 100644
--- a/src/components/views/elements/MemberEventListSummary.js
+++ b/src/components/views/elements/MemberEventListSummary.js
@@ -76,23 +76,29 @@ module.exports = React.createClass({
* events that occurred.
*/
_renderSummary: function(eventAggregates, orderedTransitionSequences) {
- let summaries = orderedTransitionSequences.map((transitions) => {
- let userNames = eventAggregates[transitions];
- let nameList = this._renderNameList(userNames);
- let plural = userNames.length > 1;
+ const summaries = orderedTransitionSequences.map((transitions) => {
+ const userNames = eventAggregates[transitions];
+ const nameList = this._renderNameList(userNames);
+ const plural = userNames.length > 1;
- let splitTransitions = transitions.split(',');
+ const splitTransitions = transitions.split(',');
- // Some neighbouring transitions are common, so canonicalise some into "pair" transitions
- let canonicalTransitions = this._getCanonicalTransitions(splitTransitions);
- // Transform into consecutive repetitions of the same transition (like 5 consecutive 'joined_and_left's)
- let coalescedTransitions = this._coalesceRepeatedTransitions(canonicalTransitions);
+ // Some neighbouring transitions are common, so canonicalise some into "pair"
+ // transitions
+ const canonicalTransitions = this._getCanonicalTransitions(splitTransitions);
+ // Transform into consecutive repetitions of the same transition (like 5
+ // consecutive 'joined_and_left's)
+ const coalescedTransitions = this._coalesceRepeatedTransitions(
+ canonicalTransitions
+ );
- let descs = coalescedTransitions.map((t) => {
- return this._getDescriptionForTransition(t.transitionType, plural, t.repeats);
+ const descs = coalescedTransitions.map((t) => {
+ return this._getDescriptionForTransition(
+ t.transitionType, plural, t.repeats
+ );
});
- let desc = this._renderCommaSeparatedList(descs);
+ const desc = this._renderCommaSeparatedList(descs);
return nameList + " " + desc;
});
@@ -126,14 +132,14 @@ module.exports = React.createClass({
* @returns {string[]} an array of transitions.
*/
_getCanonicalTransitions: function(transitions) {
- let modMap = {
- 'joined' : {
- 'after' : 'left',
- 'newTransition' : 'joined_and_left',
+ const modMap = {
+ 'joined': {
+ 'after': 'left',
+ 'newTransition': 'joined_and_left',
},
- 'left' : {
- 'after' : 'joined',
- 'newTransition' : 'left_and_joined',
+ 'left': {
+ 'after': 'joined',
+ 'newTransition': 'left_and_joined',
},
// $currentTransition : {
// 'after' : $nextTransition,
@@ -143,8 +149,8 @@ module.exports = React.createClass({
const res = [];
for (let i = 0; i < transitions.length; i++) {
- let t = transitions[i];
- let t2 = transitions[i + 1];
+ const t = transitions[i];
+ const t2 = transitions[i + 1];
let transition = t;
@@ -173,7 +179,7 @@ module.exports = React.createClass({
* @returns {object[]} an array of coalesced transitions.
*/
_coalesceRepeatedTransitions: function(transitions) {
- let res = [];
+ const res = [];
for (let i = 0; i < transitions.length; i++) {
if (res.length > 0 && res[res.length - 1].transitionType === transitions[i]) {
res[res.length - 1].repeats += 1;
@@ -191,16 +197,17 @@ module.exports = React.createClass({
* For a certain transition, t, describe what happened to the users that
* underwent the transition.
* @param {string} t the transition type.
- * @param {boolean} plural whether there were multiple users undergoing the same transition.
+ * @param {boolean} plural whether there were multiple users undergoing the same
+ * transition.
* @param {number} repeats the number of times the transition was repeated in a row.
* @returns {string} the written English equivalent of the transition.
*/
_getDescriptionForTransition(t, plural, repeats) {
- let beConjugated = plural ? "were" : "was";
- let invitation = "their invitation" + (plural || (repeats > 1) ? "s" : "");
+ const beConjugated = plural ? "were" : "was";
+ const invitation = "their invitation" + (plural || (repeats > 1) ? "s" : "");
let res = null;
- let map = {
+ const map = {
"joined": "joined",
"left": "left",
"joined_and_left": "joined and left",
@@ -221,17 +228,21 @@ module.exports = React.createClass({
},
/**
- * Constructs a written English string representing `items`, with an optional limit on the number
- * of items included in the result. If specified and if the length of `items` is greater than the
- * limit, the string "and n others" will be appended onto the result.
- * If `items` is empty, returns the empty string. If there is only one item, return it.
+ * Constructs a written English string representing `items`, with an optional limit on
+ * the number of items included in the result. If specified and if the length of
+ *`items` is greater than the limit, the string "and n others" will be appended onto
+ * the result.
+ * If `items` is empty, returns the empty string. If there is only one item, return
+ * it.
* @param {string[]} items the items to construct a string from.
* @param {number?} itemLimit the number by which to limit the list.
* @returns {string} a string constructed by joining `items` with a comma between each
* item, but with the last item appended as " and [lastItem]".
*/
_renderCommaSeparatedList(items, itemLimit) {
- const remaining = itemLimit === undefined ? 0 : Math.max(items.length - itemLimit, 0);
+ const remaining = itemLimit === undefined ? 0 : Math.max(
+ items.length - itemLimit, 0
+ );
if (items.length === 0) {
return "";
} else if (items.length === 1) {
@@ -241,18 +252,16 @@ module.exports = React.createClass({
const other = " other" + (remaining > 1 ? "s" : "");
return items.join(', ') + ' and ' + remaining + other;
} else {
- let last = items.pop();
- return items.join(', ') + ' and ' + last;
+ return items.join(', ') + ' and ' + items.pop();
}
},
_renderAvatars: function(roomMembers) {
- let avatars = roomMembers.slice(0, this.props.avatarsMaxLength).map((m) => {
+ const avatars = roomMembers.slice(0, this.props.avatarsMaxLength).map((m) => {
return (
);
});
-
return (
{avatars}
@@ -280,15 +289,15 @@ module.exports = React.createClass({
case 'leave':
if (e.mxEvent.getSender() === e.mxEvent.getStateKey()) {
switch (e.mxEvent.getPrevContent().membership) {
- case 'invite': return 'invite_reject';
- default: return 'left';
+ case 'invite': return 'invite_reject';
+ default: return 'left';
}
}
switch (e.mxEvent.getPrevContent().membership) {
- case 'invite': return 'invite_withdrawal';
- case 'ban': return 'unbanned';
- case 'join': return 'kicked';
- default: return 'left';
+ case 'invite': return 'invite_withdrawal';
+ case 'ban': return 'unbanned';
+ case 'join': return 'kicked';
+ default: return 'left';
}
default: return null;
}
@@ -299,22 +308,22 @@ module.exports = React.createClass({
// is a comma-delimited string of transitions, e.g. "joined,left,kicked".
// The array of display names is the array of users who went through that
// sequence during eventsToRender.
- let aggregate = {
+ const aggregate = {
// $aggregateType : []:string
};
// A map of aggregate types to the indices that order them (the index of
// the first event for a given transition sequence)
- let aggregateIndices = {
+ const aggregateIndices = {
// $aggregateType : int
};
- let users = Object.keys(userEvents);
+ const users = Object.keys(userEvents);
users.forEach(
(userId) => {
- let firstEvent = userEvents[userId][0];
- let displayName = firstEvent.displayName;
+ const firstEvent = userEvents[userId][0];
+ const displayName = firstEvent.displayName;
- let seq = this._getTransitionSequence(userEvents[userId]);
+ const seq = this._getTransitionSequence(userEvents[userId]);
if (!aggregate[seq]) {
aggregate[seq] = [];
aggregateIndices[seq] = -1;
@@ -322,8 +331,9 @@ module.exports = React.createClass({
aggregate[seq].push(displayName);
- if (aggregateIndices[seq] === -1 || firstEvent.index < aggregateIndices[seq]) {
- aggregateIndices[seq] = firstEvent.index;
+ if (aggregateIndices[seq] === -1 ||
+ firstEvent.index < aggregateIndices[seq]) {
+ aggregateIndices[seq] = firstEvent.index;
}
}
);
@@ -335,9 +345,9 @@ module.exports = React.createClass({
},
render: function() {
- let eventsToRender = this.props.events;
- let fewEvents = eventsToRender.length < this.props.threshold;
- let expanded = this.state.expanded || fewEvents;
+ const eventsToRender = this.props.events;
+ const fewEvents = eventsToRender.length < this.props.threshold;
+ const expanded = this.state.expanded || fewEvents;
let expandedEvents = null;
if (expanded) {
@@ -353,7 +363,7 @@ module.exports = React.createClass({
}
// Map user IDs to an array of objects:
- let userEvents = {
+ const userEvents = {
// $userId : [{
// // The original event
// mxEvent: e,
@@ -364,7 +374,7 @@ module.exports = React.createClass({
// }]
};
- let avatarMembers = [];
+ const avatarMembers = [];
eventsToRender.forEach((e, index) => {
const userId = e.getStateKey();
// Initialise a user's events
@@ -379,20 +389,22 @@ module.exports = React.createClass({
});
});
- let aggregate = this._getAggregate(userEvents);
+ const aggregate = this._getAggregate(userEvents);
// Sort types by order of lowest event index within sequence
- let orderedTransitionSequences = Object.keys(aggregate.names).sort((seq1, seq2) => aggregate.indices[seq1] > aggregate.indices[seq2]);
+ const orderedTransitionSequences = Object.keys(aggregate.names).sort(
+ (seq1, seq2) => aggregate.indices[seq1] > aggregate.indices[seq2]
+ );
- let avatars = this._renderAvatars(avatarMembers);
- let summary = this._renderSummary(aggregate.names, orderedTransitionSequences);
- let toggleButton = (
+ const avatars = this._renderAvatars(avatarMembers);
+ const summary = this._renderSummary(aggregate.names, orderedTransitionSequences);
+ const toggleButton = (
{expanded ? 'collapse' : 'expand'}
);
- let summaryContainer = (
+ const summaryContainer = (