eslint --fix src/

Signed-off-by: Aaron Raimist <aaron@raim.ist>
This commit is contained in:
Aaron Raimist 2018-10-26 22:50:35 -05:00
parent 952bdba979
commit 49ce4ef117
No known key found for this signature in database
GPG key ID: 37419210002890EF
61 changed files with 197 additions and 230 deletions

View file

@ -7,11 +7,8 @@ src/component-index.js
src/components/structures/BottomLeftMenu.js src/components/structures/BottomLeftMenu.js
src/components/structures/CompatibilityPage.js src/components/structures/CompatibilityPage.js
src/components/structures/CreateRoom.js src/components/structures/CreateRoom.js
src/components/structures/HomePage.js
src/components/structures/LeftPanel.js
src/components/structures/LoggedInView.js src/components/structures/LoggedInView.js
src/components/structures/login/ForgotPassword.js src/components/structures/login/ForgotPassword.js
src/components/structures/LoginBox.js
src/components/structures/MessagePanel.js src/components/structures/MessagePanel.js
src/components/structures/NotificationPanel.js src/components/structures/NotificationPanel.js
src/components/structures/RoomDirectory.js src/components/structures/RoomDirectory.js
@ -22,22 +19,17 @@ src/components/structures/SearchBox.js
src/components/structures/TimelinePanel.js src/components/structures/TimelinePanel.js
src/components/structures/UploadBar.js src/components/structures/UploadBar.js
src/components/structures/UserSettings.js src/components/structures/UserSettings.js
src/components/structures/ViewSource.js
src/components/views/avatars/BaseAvatar.js src/components/views/avatars/BaseAvatar.js
src/components/views/avatars/MemberAvatar.js src/components/views/avatars/MemberAvatar.js
src/components/views/create_room/RoomAlias.js src/components/views/create_room/RoomAlias.js
src/components/views/dialogs/ChangelogDialog.js
src/components/views/dialogs/DeactivateAccountDialog.js src/components/views/dialogs/DeactivateAccountDialog.js
src/components/views/dialogs/SetPasswordDialog.js src/components/views/dialogs/SetPasswordDialog.js
src/components/views/dialogs/UnknownDeviceDialog.js src/components/views/dialogs/UnknownDeviceDialog.js
src/components/views/directory/NetworkDropdown.js src/components/views/directory/NetworkDropdown.js
src/components/views/elements/AddressSelector.js src/components/views/elements/AddressSelector.js
src/components/views/elements/DeviceVerifyButtons.js
src/components/views/elements/DirectorySearchBox.js src/components/views/elements/DirectorySearchBox.js
src/components/views/elements/ImageView.js src/components/views/elements/ImageView.js
src/components/views/elements/InlineSpinner.js
src/components/views/elements/MemberEventListSummary.js src/components/views/elements/MemberEventListSummary.js
src/components/views/elements/Spinner.js
src/components/views/elements/TintableSvg.js src/components/views/elements/TintableSvg.js
src/components/views/elements/UserSelector.js src/components/views/elements/UserSelector.js
src/components/views/globals/MatrixToolbar.js src/components/views/globals/MatrixToolbar.js
@ -90,7 +82,6 @@ src/MatrixClientPeg.js
src/Modal.js src/Modal.js
src/notifications/ContentRules.js src/notifications/ContentRules.js
src/notifications/PushRuleVectorState.js src/notifications/PushRuleVectorState.js
src/notifications/StandardActions.js
src/notifications/VectorPushRulesDefinitions.js src/notifications/VectorPushRulesDefinitions.js
src/Notifier.js src/Notifier.js
src/PlatformPeg.js src/PlatformPeg.js
@ -111,7 +102,6 @@ src/utils/MultiInviter.js
src/utils/Receipt.js src/utils/Receipt.js
src/VectorConferenceHandler.js src/VectorConferenceHandler.js
src/Velociraptor.js src/Velociraptor.js
src/VelocityBounce.js
src/WhoIsTyping.js src/WhoIsTyping.js
src/wrappers/withMatrixClient.js src/wrappers/withMatrixClient.js
test/components/structures/login/Registration-test.js test/components/structures/login/Registration-test.js

View file

@ -22,7 +22,6 @@ import _clamp from 'lodash/clamp';
type MessageFormat = 'rich' | 'markdown'; type MessageFormat = 'rich' | 'markdown';
class HistoryItem { class HistoryItem {
// We store history items in their native format to ensure history is accurate // We store history items in their native format to ensure history is accurate
// and then convert them if our RTE has subsequently changed format. // and then convert them if our RTE has subsequently changed format.
value: Value; value: Value;

View file

@ -78,7 +78,6 @@ class MemberEntity extends Entity {
} }
class UserEntity extends Entity { class UserEntity extends Entity {
constructor(model, showInviteButton, inviteFn) { constructor(model, showInviteButton, inviteFn) {
super(model); super(model);
this.showInviteButton = Boolean(showInviteButton); this.showInviteButton = Boolean(showInviteButton);

View file

@ -64,7 +64,7 @@ export function containsEmoji(str) {
* because we want to include emoji shortnames in title text * because we want to include emoji shortnames in title text
*/ */
function unicodeToImage(str) { function unicodeToImage(str) {
let replaceWith, unicode, alt, short, fname; let replaceWith; let unicode; let alt; let short; let fname;
const mappedUnicode = emojione.mapUnicodeToShort(); const mappedUnicode = emojione.mapUnicodeToShort();
str = str.replace(emojione.regUnicode, function(unicodeChar) { str = str.replace(emojione.regUnicode, function(unicodeChar) {

View file

@ -25,7 +25,6 @@ import { _t } from './languageHandler';
* API on the homeserver in question with the new password. * API on the homeserver in question with the new password.
*/ */
class PasswordReset { class PasswordReset {
/** /**
* Configure the endpoints for password resetting. * Configure the endpoints for password resetting.
* @param {string} homeserverUrl The URL to the HS which has the account to reset. * @param {string} homeserverUrl The URL to the HS which has the account to reset.

View file

@ -23,7 +23,6 @@ const UNAVAILABLE_TIME_MS = 3 * 60 * 1000; // 3 mins
const PRESENCE_STATES = ["online", "offline", "unavailable"]; const PRESENCE_STATES = ["online", "offline", "unavailable"];
class Presence { class Presence {
/** /**
* Start listening the user activity to evaluate his presence state. * Start listening the user activity to evaluate his presence state.
* Any state change will be sent to the Home Server. * Any state change will be sent to the Home Server.

View file

@ -32,7 +32,6 @@ export function getDisplayAliasForRoom(room) {
* return the other one. Otherwise, return null. * return the other one. Otherwise, return null.
*/ */
export function getOnlyOtherMember(room, myUserId) { export function getOnlyOtherMember(room, myUserId) {
if (room.currentState.getJoinedMemberCount() === 2) { if (room.currentState.getJoinedMemberCount() === 2) {
return room.getJoinedMembers().filter(function(m) { return room.getJoinedMembers().filter(function(m) {
return m.userId !== myUserId; return m.userId !== myUserId;
@ -103,7 +102,7 @@ export function guessAndSetDMRoom(room, isDirect) {
let newTarget; let newTarget;
if (isDirect) { if (isDirect) {
const guessedUserId = guessDMRoomTargetId( const guessedUserId = guessDMRoomTargetId(
room, MatrixClientPeg.get().getUserId() room, MatrixClientPeg.get().getUserId(),
); );
newTarget = guessedUserId; newTarget = guessedUserId;
} else { } else {

View file

@ -22,7 +22,6 @@ const SdkConfig = require('./SdkConfig');
const MatrixClientPeg = require('./MatrixClientPeg'); const MatrixClientPeg = require('./MatrixClientPeg');
class ScalarAuthClient { class ScalarAuthClient {
constructor() { constructor() {
this.scalarToken = null; this.scalarToken = null;
} }

View file

@ -24,7 +24,6 @@ const DEFAULTS = {
}; };
class SdkConfig { class SdkConfig {
static get() { static get() {
return global.mxReactSdkConfig || {}; return global.mxReactSdkConfig || {};
} }

View file

@ -25,7 +25,6 @@ const CURRENTLY_ACTIVE_THRESHOLD_MS = 2000;
* with the app (but at a much lower frequency than mouse move events) * with the app (but at a much lower frequency than mouse move events)
*/ */
class UserActivity { class UserActivity {
/** /**
* Start listening to user activity * Start listening to user activity
*/ */

View file

@ -87,7 +87,7 @@ export default {
device_display_name: address, device_display_name: address,
lang: navigator.language, lang: navigator.language,
data: data, data: data,
append: true, // We always append for email pushers since we don't want to stop other accounts notifying to the same email address append: true, // We always append for email pushers since we don't want to stop other accounts notifying to the same email address
}); });
}, },
}; };

View file

@ -3,8 +3,10 @@ const Velocity = require('velocity-vector');
// courtesy of https://github.com/julianshapiro/velocity/issues/283 // courtesy of https://github.com/julianshapiro/velocity/issues/283
// We only use easeOutBounce (easeInBounce is just sort of nonsensical) // We only use easeOutBounce (easeInBounce is just sort of nonsensical)
function bounce( p ) { function bounce( p ) {
let pow2, let pow2;
bounce = 4;
let bounce = 4;
while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) { while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {
// just sets pow2 // just sets pow2

View file

@ -85,7 +85,7 @@ export default class Autocompleter {
provider provider
.getCompletions(query, selection, force) .getCompletions(query, selection, force)
.timeout(PROVIDER_COMPLETION_TIMEOUT) .timeout(PROVIDER_COMPLETION_TIMEOUT)
.reflect() .reflect(),
), ),
); );

View file

@ -61,7 +61,7 @@ export default class CommunityProvider extends AutocompleteProvider {
if (command) { if (command) {
const joinedGroups = cli.getGroups().filter(({myMembership}) => myMembership === 'join'); const joinedGroups = cli.getGroups().filter(({myMembership}) => myMembership === 'join');
const groups = (await Promise.all(joinedGroups.map(async ({groupId}) => { const groups = (await Promise.all(joinedGroups.map(async({groupId}) => {
try { try {
return FlairStore.getGroupProfileCached(cli, groupId); return FlairStore.getGroupProfileCached(cli, groupId);
} catch (e) { // if FlairStore failed, fall back to just groupId } catch (e) { // if FlairStore failed, fall back to just groupId

View file

@ -26,7 +26,6 @@ import { Block } from 'slate';
*/ */
class PlainWithPillsSerializer { class PlainWithPillsSerializer {
/* /*
* @param {String} options.pillFormat - either 'md', 'plain', 'id' * @param {String} options.pillFormat - either 'md', 'plain', 'id'
*/ */

View file

@ -33,12 +33,12 @@ module.exports = React.createClass({
}, },
getInitialState: function() { getInitialState: function() {
return({ return ({
directoryHover : false, directoryHover: false,
roomsHover : false, roomsHover: false,
homeHover: false, homeHover: false,
peopleHover : false, peopleHover: false,
settingsHover : false, settingsHover: false,
}); });
}, },
@ -145,7 +145,7 @@ module.exports = React.createClass({
// Get the label/tooltip to show // Get the label/tooltip to show
getLabel: function(label, show) { getLabel: function(label, show) {
if (show) { if (show) {
var RoomTooltip = sdk.getComponent("rooms.RoomTooltip"); const RoomTooltip = sdk.getComponent("rooms.RoomTooltip");
return <RoomTooltip className="mx_BottomLeftMenu_tooltip" label={label} />; return <RoomTooltip className="mx_BottomLeftMenu_tooltip" label={label} />;
} }
}, },

View file

@ -16,18 +16,18 @@ limitations under the License.
'use strict'; 'use strict';
var React = require('react'); const React = require('react');
import { _t } from '../../languageHandler'; import { _t } from '../../languageHandler';
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'CompatibilityPage', displayName: 'CompatibilityPage',
propTypes: { propTypes: {
onAccept: React.PropTypes.func onAccept: React.PropTypes.func,
}, },
getDefaultProps: function() { getDefaultProps: function() {
return { return {
onAccept: function() {} // NOP onAccept: function() {}, // NOP
}; };
}, },
@ -36,7 +36,6 @@ module.exports = React.createClass({
}, },
render: function() { render: function() {
return ( return (
<div className="mx_CompatibilityPage"> <div className="mx_CompatibilityPage">
<div className="mx_CompatibilityPage_box"> <div className="mx_CompatibilityPage_box">
@ -69,5 +68,5 @@ module.exports = React.createClass({
</div> </div>
</div> </div>
); );
} },
}); });

View file

@ -36,10 +36,10 @@ module.exports = React.createClass({
}, },
phases: { phases: {
CONFIG: "CONFIG", // We're waiting for user to configure and hit create. CONFIG: "CONFIG", // We're waiting for user to configure and hit create.
CREATING: "CREATING", // We're sending the request. CREATING: "CREATING", // We're sending the request.
CREATED: "CREATED", // We successfully created the room. CREATED: "CREATED", // We successfully created the room.
ERROR: "ERROR", // There was an error while trying to create room. ERROR: "ERROR", // There was an error while trying to create room.
}, },
getDefaultProps: function() { getDefaultProps: function() {

View file

@ -777,7 +777,7 @@ export default React.createClass({
), ),
button: _t("Leave"), button: _t("Leave"),
danger: this.state.isUserPrivileged, danger: this.state.isUserPrivileged,
onFinished: async (confirmed) => { onFinished: async(confirmed) => {
if (!confirmed) return; if (!confirmed) return;
this.setState({membershipBusy: true}); this.setState({membershipBusy: true});

View file

@ -52,15 +52,14 @@ class HomePage extends React.Component {
if (this.props.teamToken && this.props.teamServerUrl) { if (this.props.teamToken && this.props.teamServerUrl) {
this.setState({ this.setState({
iframeSrc: `${this.props.teamServerUrl}/static/${this.props.teamToken}/home.html` iframeSrc: `${this.props.teamServerUrl}/static/${this.props.teamToken}/home.html`,
}); });
} } else {
else {
// we use request() to inline the homepage into the react component // we use request() to inline the homepage into the react component
// so that it can inherit CSS and theming easily rather than mess around // so that it can inherit CSS and theming easily rather than mess around
// with iframes and trying to synchronise document.stylesheets. // with iframes and trying to synchronise document.stylesheets.
let src = this.props.homePageUrl || 'home.html'; const src = this.props.homePageUrl || 'home.html';
request( request(
{ method: "GET", url: src }, { method: "GET", url: src },
@ -77,7 +76,7 @@ class HomePage extends React.Component {
body = body.replace(/_t\(['"]([\s\S]*?)['"]\)/mg, (match, g1)=>this.translate(g1)); body = body.replace(/_t\(['"]([\s\S]*?)['"]\)/mg, (match, g1)=>this.translate(g1));
this.setState({ page: body }); this.setState({ page: body });
} },
); );
} }
} }
@ -93,8 +92,7 @@ class HomePage extends React.Component {
<iframe src={ this.state.iframeSrc } /> <iframe src={ this.state.iframeSrc } />
</div> </div>
); );
} } else {
else {
const GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper"); const GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper");
return ( return (
<GeminiScrollbarWrapper autoshow={true} className="mx_HomePage"> <GeminiScrollbarWrapper autoshow={true} className="mx_HomePage">
@ -106,4 +104,4 @@ class HomePage extends React.Component {
} }
} }
module.exports = HomePage; module.exports = HomePage;

View file

@ -28,7 +28,7 @@ import VectorConferenceHandler from '../../VectorConferenceHandler';
import SettingsStore from '../../settings/SettingsStore'; import SettingsStore from '../../settings/SettingsStore';
var LeftPanel = React.createClass({ const LeftPanel = React.createClass({
displayName: 'LeftPanel', displayName: 'LeftPanel',
// NB. If you add props, don't forget to update // NB. If you add props, don't forget to update
@ -214,11 +214,11 @@ var LeftPanel = React.createClass({
collapsed={this.props.collapsed} collapsed={this.props.collapsed}
searchFilter={this.state.searchFilter} searchFilter={this.state.searchFilter}
ConferenceHandler={VectorConferenceHandler} /> ConferenceHandler={VectorConferenceHandler} />
<BottomLeftMenu collapsed={this.props.collapsed}/> <BottomLeftMenu collapsed={this.props.collapsed} />
</aside> </aside>
</div> </div>
); );
} },
}); });
module.exports = LeftPanel; module.exports = LeftPanel;

View file

@ -189,13 +189,13 @@ const LoggedInView = React.createClass({
_updateServerNoticeEvents: async function() { _updateServerNoticeEvents: async function() {
const roomLists = RoomListStore.getRoomLists(); const roomLists = RoomListStore.getRoomLists();
if (!roomLists['m.server_notice']) return []; if (!roomLists['m.server_notice']) return [];
const pinnedEvents = []; const pinnedEvents = [];
for (const room of roomLists['m.server_notice']) { for (const room of roomLists['m.server_notice']) {
const pinStateEvent = room.currentState.getStateEvents("m.room.pinned_events", ""); const pinStateEvent = room.currentState.getStateEvents("m.room.pinned_events", "");
if (!pinStateEvent || !pinStateEvent.getContent().pinned) continue; if (!pinStateEvent || !pinStateEvent.getContent().pinned) continue;
const pinnedEventIds = pinStateEvent.getContent().pinned.slice(0, MAX_PINNED_NOTICES_PER_ROOM); const pinnedEventIds = pinStateEvent.getContent().pinned.slice(0, MAX_PINNED_NOTICES_PER_ROOM);
for (const eventId of pinnedEventIds) { for (const eventId of pinnedEventIds) {
const timeline = await this._matrixClient.getEventTimeline(room.getUnfilteredTimelineSet(), eventId, 0); const timeline = await this._matrixClient.getEventTimeline(room.getUnfilteredTimelineSet(), eventId, 0);
@ -207,7 +207,7 @@ const LoggedInView = React.createClass({
serverNoticeEvents: pinnedEvents, serverNoticeEvents: pinnedEvents,
}); });
}, },
_onKeyDown: function(ev) { _onKeyDown: function(ev) {
/* /*

View file

@ -53,5 +53,5 @@ module.exports = React.createClass({
{ loginButton } { loginButton }
</div> </div>
); );
} },
}); });

View file

@ -16,18 +16,18 @@ limitations under the License.
'use strict'; 'use strict';
var React = require('react'); const React = require('react');
var MatrixClientPeg = require('../../MatrixClientPeg'); const MatrixClientPeg = require('../../MatrixClientPeg');
var ContentRepo = require("matrix-js-sdk").ContentRepo; const ContentRepo = require("matrix-js-sdk").ContentRepo;
var Modal = require('../../Modal'); const Modal = require('../../Modal');
var sdk = require('../../index'); const sdk = require('../../index');
var dis = require('../../dispatcher'); const dis = require('../../dispatcher');
var linkify = require('linkifyjs'); const linkify = require('linkifyjs');
var linkifyString = require('linkifyjs/string'); const linkifyString = require('linkifyjs/string');
var linkifyMatrix = require('../../linkify-matrix'); const linkifyMatrix = require('../../linkify-matrix');
var sanitizeHtml = require('sanitize-html'); const sanitizeHtml = require('sanitize-html');
import Promise from 'bluebird'; import Promise from 'bluebird';
import { _t } from '../../languageHandler'; import { _t } from '../../languageHandler';
@ -46,7 +46,7 @@ module.exports = React.createClass({
getDefaultProps: function() { getDefaultProps: function() {
return { return {
config: {}, config: {},
} };
}, },
getInitialState: function() { getInitialState: function() {
@ -58,7 +58,7 @@ module.exports = React.createClass({
includeAll: false, includeAll: false,
roomServer: null, roomServer: null,
filterString: null, filterString: null,
} };
}, },
componentWillMount: function() { componentWillMount: function() {
@ -134,13 +134,12 @@ module.exports = React.createClass({
opts.include_all_networks = true; opts.include_all_networks = true;
} }
if (this.nextBatch) opts.since = this.nextBatch; if (this.nextBatch) opts.since = this.nextBatch;
if (my_filter_string) opts.filter = { generic_search_term: my_filter_string } ; if (my_filter_string) opts.filter = { generic_search_term: my_filter_string };
return MatrixClientPeg.get().publicRooms(opts).then((data) => { return MatrixClientPeg.get().publicRooms(opts).then((data) => {
if ( if (
my_filter_string != this.state.filterString || my_filter_string != this.state.filterString ||
my_server != this.state.roomServer || my_server != this.state.roomServer ||
my_next_batch != this.nextBatch) my_next_batch != this.nextBatch) {
{
// if the filter or server has changed since this request was sent, // if the filter or server has changed since this request was sent,
// throw away the result (don't even clear the busy flag // throw away the result (don't even clear the busy flag
// since we must still have a request in flight) // since we must still have a request in flight)
@ -163,8 +162,7 @@ module.exports = React.createClass({
if ( if (
my_filter_string != this.state.filterString || my_filter_string != this.state.filterString ||
my_server != this.state.roomServer || my_server != this.state.roomServer ||
my_next_batch != this.nextBatch) my_next_batch != this.nextBatch) {
{
// as above: we don't care about errors for old // as above: we don't care about errors for old
// requests either // requests either
return; return;
@ -177,10 +175,10 @@ module.exports = React.createClass({
this.setState({ loading: false }); this.setState({ loading: false });
console.error("Failed to get publicRooms: %s", JSON.stringify(err)); console.error("Failed to get publicRooms: %s", JSON.stringify(err));
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
Modal.createTrackedDialog('Failed to get public room list', '', ErrorDialog, { Modal.createTrackedDialog('Failed to get public room list', '', ErrorDialog, {
title: _t('Failed to get public room list'), title: _t('Failed to get public room list'),
description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')) description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')),
}); });
}); });
}, },
@ -193,13 +191,13 @@ module.exports = React.createClass({
* this needs SPEC-417. * this needs SPEC-417.
*/ */
removeFromDirectory: function(room) { removeFromDirectory: function(room) {
var alias = get_display_alias_for_room(room); const alias = get_display_alias_for_room(room);
var name = room.name || alias || _t('Unnamed room'); const name = room.name || alias || _t('Unnamed room');
var QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
var desc; let desc;
if (alias) { if (alias) {
desc = _t('Delete the room alias %(alias)s and remove %(name)s from the directory?', {alias: alias, name: name}); desc = _t('Delete the room alias %(alias)s and remove %(name)s from the directory?', {alias: alias, name: name});
} else { } else {
@ -212,9 +210,9 @@ module.exports = React.createClass({
onFinished: (should_delete) => { onFinished: (should_delete) => {
if (!should_delete) return; if (!should_delete) return;
var Loader = sdk.getComponent("elements.Spinner"); const Loader = sdk.getComponent("elements.Spinner");
var modal = Modal.createDialog(Loader); const modal = Modal.createDialog(Loader);
var step = _t('remove %(name)s from the directory.', {name: name}); let step = _t('remove %(name)s from the directory.', {name: name});
MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(() => { MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(() => {
if (!alias) return; if (!alias) return;
@ -229,10 +227,10 @@ module.exports = React.createClass({
console.error("Failed to " + step + ": " + err); console.error("Failed to " + step + ": " + err);
Modal.createTrackedDialog('Remove from Directory Error', '', ErrorDialog, { Modal.createTrackedDialog('Remove from Directory Error', '', ErrorDialog, {
title: _t('Error'), title: _t('Error'),
description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')) description: ((err && err.message) ? err.message : _t('The server may be unavailable or overloaded')),
}); });
}); });
} },
}); });
}, },
@ -347,7 +345,7 @@ module.exports = React.createClass({
}, },
showRoom: function(room, room_alias) { showRoom: function(room, room_alias) {
var payload = {action: 'view_room'}; const payload = {action: 'view_room'};
if (room) { if (room) {
// Don't let the user view a room they won't be able to either // Don't let the user view a room they won't be able to either
// peek or join: fail earlier so they don't have to click back // peek or join: fail earlier so they don't have to click back
@ -383,16 +381,16 @@ module.exports = React.createClass({
}, },
getRows: function() { getRows: function() {
var BaseAvatar = sdk.getComponent('avatars.BaseAvatar'); const BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
if (!this.state.publicRooms) return []; if (!this.state.publicRooms) return [];
var rooms = this.state.publicRooms; const rooms = this.state.publicRooms;
var rows = []; const rows = [];
var self = this; const self = this;
var guestRead, guestJoin, perms; let guestRead; let guestJoin; let perms;
for (var i = 0; i < rooms.length; i++) { for (let i = 0; i < rooms.length; i++) {
var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || _t('Unnamed room'); const name = rooms[i].name || get_display_alias_for_room(rooms[i]) || _t('Unnamed room');
guestRead = null; guestRead = null;
guestJoin = null; guestJoin = null;
@ -412,7 +410,7 @@ module.exports = React.createClass({
perms = <div className="mx_RoomDirectory_perms">{guestRead}{guestJoin}</div>; perms = <div className="mx_RoomDirectory_perms">{guestRead}{guestJoin}</div>;
} }
var topic = rooms[i].topic || ''; let topic = rooms[i].topic || '';
topic = linkifyString(sanitizeHtml(topic)); topic = linkifyString(sanitizeHtml(topic));
rows.push( rows.push(
@ -432,14 +430,14 @@ module.exports = React.createClass({
<div className="mx_RoomDirectory_name">{ name }</div>&nbsp; <div className="mx_RoomDirectory_name">{ name }</div>&nbsp;
{ perms } { perms }
<div className="mx_RoomDirectory_topic" <div className="mx_RoomDirectory_topic"
onClick={ function(e) { e.stopPropagation() } } onClick={ function(e) { e.stopPropagation(); } }
dangerouslySetInnerHTML={{ __html: topic }}/> dangerouslySetInnerHTML={{ __html: topic }} />
<div className="mx_RoomDirectory_alias">{ get_display_alias_for_room(rooms[i]) }</div> <div className="mx_RoomDirectory_alias">{ get_display_alias_for_room(rooms[i]) }</div>
</td> </td>
<td className="mx_RoomDirectory_roomMemberCount"> <td className="mx_RoomDirectory_roomMemberCount">
{ rooms[i].num_joined_members } { rooms[i].num_joined_members }
</td> </td>
</tr> </tr>,
); );
} }
return rows; return rows;
@ -524,7 +522,7 @@ module.exports = React.createClass({
onFillRequest={ this.onFillRequest } onFillRequest={ this.onFillRequest }
stickyBottom={false} stickyBottom={false}
startAtBottom={false} startAtBottom={false}
onResize={function(){}} onResize={function() {}}
> >
{ scrollpanel_content } { scrollpanel_content }
</ScrollPanel>; </ScrollPanel>;
@ -577,11 +575,11 @@ module.exports = React.createClass({
</div> </div>
</div> </div>
); );
} },
}); });
// Similar to matrix-react-sdk's MatrixTools.getDisplayAliasForRoom // Similar to matrix-react-sdk's MatrixTools.getDisplayAliasForRoom
// but works with the objects we get from the public room list // but works with the objects we get from the public room list
function get_display_alias_for_room(room) { function get_display_alias_for_room(room) {
return room.canonical_alias || (room.aliases ? room.aliases[0] : ""); return room.canonical_alias || (room.aliases ? room.aliases[0] : "");
} }

View file

@ -37,7 +37,7 @@ function getUnsentMessages(room) {
return room.getPendingEvents().filter(function(ev) { return room.getPendingEvents().filter(function(ev) {
return ev.status === Matrix.EventStatus.NOT_SENT; return ev.status === Matrix.EventStatus.NOT_SENT;
}); });
}; }
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'RoomStatusBar', displayName: 'RoomStatusBar',
@ -303,7 +303,7 @@ module.exports = React.createClass({
const errorIsMauError = Boolean( const errorIsMauError = Boolean(
this.state.syncStateData && this.state.syncStateData &&
this.state.syncStateData.error && this.state.syncStateData.error &&
this.state.syncStateData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED' this.state.syncStateData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED',
); );
return this.state.syncState === "ERROR" && !errorIsMauError; return this.state.syncState === "ERROR" && !errorIsMauError;
}, },

View file

@ -1673,7 +1673,7 @@ module.exports = React.createClass({
</AuxPanel> </AuxPanel>
); );
let messageComposer, searchInfo; let messageComposer; let searchInfo;
const canSpeak = ( const canSpeak = (
// joined and not showing search results // joined and not showing search results
myMembership === 'join' && !this.state.searchResults myMembership === 'join' && !this.state.searchResults
@ -1692,7 +1692,7 @@ module.exports = React.createClass({
if (MatrixClientPeg.get().isGuest()) { if (MatrixClientPeg.get().isGuest()) {
const LoginBox = sdk.getComponent('structures.LoginBox'); const LoginBox = sdk.getComponent('structures.LoginBox');
messageComposer = <LoginBox/>; messageComposer = <LoginBox />;
} }
// TODO: Why aren't we storing the term/scope/count in this format // TODO: Why aren't we storing the term/scope/count in this format
@ -1706,7 +1706,7 @@ module.exports = React.createClass({
} }
if (inCall) { if (inCall) {
let zoomButton, voiceMuteButton, videoMuteButton; let zoomButton; let voiceMuteButton; let videoMuteButton;
if (call.type === "video") { if (call.type === "video") {
zoomButton = ( zoomButton = (

View file

@ -72,7 +72,7 @@ module.exports = React.createClass({
function() { function() {
this.props.onSearch(this.refs.search.value); this.props.onSearch(this.refs.search.value);
}, },
100 100,
), ),
onToggleCollapse: function(show) { onToggleCollapse: function(show) {
@ -80,8 +80,7 @@ module.exports = React.createClass({
dis.dispatch({ dis.dispatch({
action: 'show_left_panel', action: 'show_left_panel',
}); });
} } else {
else {
dis.dispatch({ dis.dispatch({
action: 'hide_left_panel', action: 'hide_left_panel',
}); });
@ -103,25 +102,24 @@ module.exports = React.createClass({
}, },
render: function() { render: function() {
var TintableSvg = sdk.getComponent('elements.TintableSvg'); const TintableSvg = sdk.getComponent('elements.TintableSvg');
var collapseTabIndex = this.refs.search && this.refs.search.value !== "" ? "-1" : "0"; const collapseTabIndex = this.refs.search && this.refs.search.value !== "" ? "-1" : "0";
var toggleCollapse; let toggleCollapse;
if (this.props.collapsed) { if (this.props.collapsed) {
toggleCollapse = toggleCollapse =
<AccessibleButton className="mx_SearchBox_maximise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, true) }> <AccessibleButton className="mx_SearchBox_maximise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, true) }>
<TintableSvg src="img/maximise.svg" width="10" height="16" alt={ _t("Expand panel") }/> <TintableSvg src="img/maximise.svg" width="10" height="16" alt={ _t("Expand panel") } />
</AccessibleButton> </AccessibleButton>;
} } else {
else {
toggleCollapse = toggleCollapse =
<AccessibleButton className="mx_SearchBox_minimise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, false) }> <AccessibleButton className="mx_SearchBox_minimise" tabIndex={collapseTabIndex} onClick={ this.onToggleCollapse.bind(this, false) }>
<TintableSvg src="img/minimise.svg" width="10" height="16" alt={ _t("Collapse panel") }/> <TintableSvg src="img/minimise.svg" width="10" height="16" alt={ _t("Collapse panel") } />
</AccessibleButton> </AccessibleButton>;
} }
var searchControls; let searchControls;
if (!this.props.collapsed) { if (!this.props.collapsed) {
searchControls = [ searchControls = [
this.state.searchTerm.length > 0 ? this.state.searchTerm.length > 0 ?
@ -148,16 +146,16 @@ module.exports = React.createClass({
onChange={ this.onChange } onChange={ this.onChange }
onKeyDown={ this._onKeyDown } onKeyDown={ this._onKeyDown }
placeholder={ _t('Filter room names') } placeholder={ _t('Filter room names') }
/> />,
]; ];
} }
var self = this; const self = this;
return ( return (
<div className="mx_SearchBox"> <div className="mx_SearchBox">
{ searchControls } { searchControls }
{ toggleCollapse } { toggleCollapse }
</div> </div>
); );
} },
}); });

View file

@ -829,7 +829,7 @@ var TimelinePanel = React.createClass({
// 4. Also, if pos === null, the event might not be paginated - show the unread bar // 4. Also, if pos === null, the event might not be paginated - show the unread bar
const pos = this.getReadMarkerPosition(); const pos = this.getReadMarkerPosition();
return this.state.readMarkerEventId !== null && // 1. return this.state.readMarkerEventId !== null && // 1.
this.state.readMarkerEventId !== this._getCurrentReadReceipt() && // 2. this.state.readMarkerEventId !== this._getCurrentReadReceipt() && // 2.
(pos < 0 || pos === null); // 3., 4. (pos < 0 || pos === null); // 3., 4.
}, },

View file

@ -845,7 +845,7 @@ module.exports = React.createClass({
SettingsStore.getLabsFeatures().forEach((featureId) => { SettingsStore.getLabsFeatures().forEach((featureId) => {
// TODO: this ought to be a separate component so that we don't need // TODO: this ought to be a separate component so that we don't need
// to rebind the onChange each time we render // to rebind the onChange each time we render
const onChange = async (e) => { const onChange = async(e) => {
const checked = e.target.checked; const checked = e.target.checked;
if (featureId === "feature_lazyloading") { if (featureId === "feature_lazyloading") {
const confirmed = await this._onLazyLoadChanging(checked); const confirmed = await this._onLazyLoadChanging(checked);

View file

@ -53,5 +53,5 @@ module.exports = React.createClass({
</SyntaxHighlight> </SyntaxHighlight>
</div> </div>
); );
} },
}); });

View file

@ -79,7 +79,7 @@ module.exports = React.createClass({
const BaseAvatar = sdk.getComponent("avatars.BaseAvatar"); const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
let {member, fallbackUserId, onClick, viewUserOnClick, ...otherProps} = this.props; let {member, fallbackUserId, onClick, viewUserOnClick, ...otherProps} = this.props;
let userId = member ? member.userId : fallbackUserId; const userId = member ? member.userId : fallbackUserId;
if (viewUserOnClick) { if (viewUserOnClick) {
onClick = () => { onClick = () => {

View file

@ -48,7 +48,7 @@ export default class GroupInviteTileContextMenu extends React.Component {
Modal.createTrackedDialog('Reject community invite', '', QuestionDialog, { Modal.createTrackedDialog('Reject community invite', '', QuestionDialog, {
title: _t('Reject invitation'), title: _t('Reject invitation'),
description: _t('Are you sure you want to reject the invitation?'), description: _t('Are you sure you want to reject the invitation?'),
onFinished: async (shouldLeave) => { onFinished: async(shouldLeave) => {
if (!shouldLeave) return; if (!shouldLeave) return;
// FIXME: controller shouldn't be loading a view :( // FIXME: controller shouldn't be loading a view :(

View file

@ -31,13 +31,13 @@ export default class ChangelogDialog extends React.Component {
componentDidMount() { componentDidMount() {
const version = this.props.newVersion.split('-'); const version = this.props.newVersion.split('-');
const version2 = this.props.version.split('-'); const version2 = this.props.version.split('-');
if(version == null || version2 == null) return; if (version == null || version2 == null) return;
// parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version] // parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version]
for(let i=0; i<REPOS.length; i++) { for (let i=0; i<REPOS.length; i++) {
const oldVersion = version2[2*i]; const oldVersion = version2[2*i];
const newVersion = version[2*i]; const newVersion = version[2*i];
request(`https://api.github.com/repos/${REPOS[i]}/compare/${oldVersion}...${newVersion}`, (a, b, body) => { request(`https://api.github.com/repos/${REPOS[i]}/compare/${oldVersion}...${newVersion}`, (a, b, body) => {
if(body == null) return; if (body == null) return;
this.setState({[REPOS[i]]: JSON.parse(body).commits}); this.setState({[REPOS[i]]: JSON.parse(body).commits});
}); });
} }
@ -66,7 +66,7 @@ export default class ChangelogDialog extends React.Component {
{this.state[repo].map(this._elementsForCommit)} {this.state[repo].map(this._elementsForCommit)}
</ul> </ul>
</div> </div>
) );
}); });
const content = ( const content = (
@ -83,7 +83,7 @@ export default class ChangelogDialog extends React.Component {
button={_t("Update")} button={_t("Update")}
onFinished={this.props.onFinished} onFinished={this.props.onFinished}
/> />
) );
} }
} }

View file

@ -26,7 +26,6 @@ import Unread from '../../../Unread';
import classNames from 'classnames'; import classNames from 'classnames';
export default class ChatCreateOrReuseDialog extends React.Component { export default class ChatCreateOrReuseDialog extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.onFinished = this.onFinished.bind(this); this.onFinished = this.onFinished.bind(this);

View file

@ -153,8 +153,8 @@ export default class NetworkDropdown extends React.Component {
const sortedInstances = this.props.protocols[proto].instances; const sortedInstances = this.props.protocols[proto].instances;
sortedInstances.sort(function(x, y) { sortedInstances.sort(function(x, y) {
const a = x.desc const a = x.desc;
const b = y.desc const b = y.desc;
if (a < b) { if (a < b) {
return -1; return -1;
} else if (a > b) { } else if (a > b) {
@ -208,7 +208,7 @@ export default class NetworkDropdown extends React.Component {
return <div key={key} className="mx_NetworkDropdown_networkoption" onClick={click_handler}> return <div key={key} className="mx_NetworkDropdown_networkoption" onClick={click_handler}>
{icon} {icon}
<span className="mx_NetworkDropdown_menu_network">{name}</span> <span className="mx_NetworkDropdown_menu_network">{name}</span>
</div> </div>;
} }
render() { render() {
@ -223,11 +223,11 @@ export default class NetworkDropdown extends React.Component {
current_value = <input type="text" className="mx_NetworkDropdown_networkoption" current_value = <input type="text" className="mx_NetworkDropdown_networkoption"
ref={this.collectInputTextBox} onKeyUp={this.onInputKeyUp} ref={this.collectInputTextBox} onKeyUp={this.onInputKeyUp}
placeholder="matrix.org" // 'matrix.org' as an example of an HS name placeholder="matrix.org" // 'matrix.org' as an example of an HS name
/> />;
} else { } else {
const instance = instanceForInstanceId(this.props.protocols, this.state.selectedInstanceId); const instance = instanceForInstanceId(this.props.protocols, this.state.selectedInstanceId);
current_value = this._makeMenuOption( current_value = this._makeMenuOption(
this.state.selectedServer, instance, this.state.includeAll, false this.state.selectedServer, instance, this.state.includeAll, false,
); );
} }

View file

@ -78,7 +78,7 @@ export default React.createClass({
}, },
render: function() { render: function() {
let blacklistButton = null, verifyButton = null; let blacklistButton = null; let verifyButton = null;
if (this.state.device.isBlocked()) { if (this.state.device.isBlocked()) {
blacklistButton = ( blacklistButton = (

View file

@ -122,7 +122,6 @@ export default class EditableTextContainer extends React.Component {
); );
} }
} }
} }
EditableTextContainer.propTypes = { EditableTextContainer.propTypes = {

View file

@ -16,13 +16,13 @@ limitations under the License.
'use strict'; 'use strict';
var React = require('react'); const React = require('react');
var MatrixClientPeg = require('../../../MatrixClientPeg'); const MatrixClientPeg = require('../../../MatrixClientPeg');
import {formatDate} from '../../../DateUtils'; import {formatDate} from '../../../DateUtils';
var filesize = require('filesize'); const filesize = require('filesize');
var AccessibleButton = require('../../../components/views/elements/AccessibleButton'); const AccessibleButton = require('../../../components/views/elements/AccessibleButton');
const Modal = require('../../../Modal'); const Modal = require('../../../Modal');
const sdk = require('../../../index'); const sdk = require('../../../index');
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
@ -69,24 +69,24 @@ module.exports = React.createClass({
Modal.createTrackedDialog('Confirm Redact Dialog', 'Image View', ConfirmRedactDialog, { Modal.createTrackedDialog('Confirm Redact Dialog', 'Image View', ConfirmRedactDialog, {
onFinished: (proceed) => { onFinished: (proceed) => {
if (!proceed) return; if (!proceed) return;
var self = this; const self = this;
MatrixClientPeg.get().redactEvent( MatrixClientPeg.get().redactEvent(
this.props.mxEvent.getRoomId(), this.props.mxEvent.getId() this.props.mxEvent.getRoomId(), this.props.mxEvent.getId(),
).catch(function(e) { ).catch(function(e) {
var ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
// display error message stating you couldn't delete this. // display error message stating you couldn't delete this.
var code = e.errcode || e.statusCode; const code = e.errcode || e.statusCode;
Modal.createTrackedDialog('You cannot delete this image.', '', ErrorDialog, { Modal.createTrackedDialog('You cannot delete this image.', '', ErrorDialog, {
title: _t('Error'), title: _t('Error'),
description: _t('You cannot delete this image. (%(code)s)', {code: code}) description: _t('You cannot delete this image. (%(code)s)', {code: code}),
}); });
}).done(); }).done();
} },
}); });
}, },
getName: function () { getName: function() {
var name = this.props.name; let name = this.props.name;
if (name && this.props.link) { if (name && this.props.link) {
name = <a href={ this.props.link } target="_blank" rel="noopener">{ name }</a>; name = <a href={ this.props.link } target="_blank" rel="noopener">{ name }</a>;
} }
@ -94,7 +94,6 @@ module.exports = React.createClass({
}, },
render: function() { render: function() {
/* /*
// In theory max-width: 80%, max-height: 80% on the CSS should work // In theory max-width: 80%, max-height: 80% on the CSS should work
// but in practice, it doesn't, so do it manually: // but in practice, it doesn't, so do it manually:
@ -123,7 +122,7 @@ module.exports = React.createClass({
height: displayHeight height: displayHeight
}; };
*/ */
var style, res; let style; let res;
if (this.props.width && this.props.height) { if (this.props.width && this.props.height) {
style = { style = {
@ -133,23 +132,22 @@ module.exports = React.createClass({
res = style.width + "x" + style.height + "px"; res = style.width + "x" + style.height + "px";
} }
var size; let size;
if (this.props.fileSize) { if (this.props.fileSize) {
size = filesize(this.props.fileSize); size = filesize(this.props.fileSize);
} }
var size_res; let size_res;
if (size && res) { if (size && res) {
size_res = size + ", " + res; size_res = size + ", " + res;
} } else {
else {
size_res = size || res; size_res = size || res;
} }
var showEventMeta = !!this.props.mxEvent; const showEventMeta = !!this.props.mxEvent;
var eventMeta; let eventMeta;
if(showEventMeta) { if (showEventMeta) {
// Figure out the sender, defaulting to mxid // Figure out the sender, defaulting to mxid
let sender = this.props.mxEvent.getSender(); let sender = this.props.mxEvent.getSender();
const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId()); const room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId());
@ -163,8 +161,8 @@ module.exports = React.createClass({
</div>); </div>);
} }
var eventRedact; let eventRedact;
if(showEventMeta) { if (showEventMeta) {
eventRedact = (<div className="mx_ImageView_button" onClick={this.onRedactClick}> eventRedact = (<div className="mx_ImageView_button" onClick={this.onRedactClick}>
{ _t('Remove') } { _t('Remove') }
</div>); </div>);
@ -175,10 +173,10 @@ module.exports = React.createClass({
<div className="mx_ImageView_lhs"> <div className="mx_ImageView_lhs">
</div> </div>
<div className="mx_ImageView_content"> <div className="mx_ImageView_content">
<img src={this.props.src} style={style}/> <img src={this.props.src} style={style} />
<div className="mx_ImageView_labelWrapper"> <div className="mx_ImageView_labelWrapper">
<div className="mx_ImageView_label"> <div className="mx_ImageView_label">
<AccessibleButton className="mx_ImageView_cancel" onClick={ this.props.onFinished }><img src="img/cancel-white.svg" width="18" height="18" alt={ _t('Close') }/></AccessibleButton> <AccessibleButton className="mx_ImageView_cancel" onClick={ this.props.onFinished }><img src="img/cancel-white.svg" width="18" height="18" alt={ _t('Close') } /></AccessibleButton>
<div className="mx_ImageView_shim"> <div className="mx_ImageView_shim">
</div> </div>
<div className="mx_ImageView_name"> <div className="mx_ImageView_name">
@ -187,7 +185,7 @@ module.exports = React.createClass({
{ eventMeta } { eventMeta }
<a className="mx_ImageView_link" href={ this.props.src } download={ this.props.name } target="_blank" rel="noopener"> <a className="mx_ImageView_link" href={ this.props.src } download={ this.props.name } target="_blank" rel="noopener">
<div className="mx_ImageView_download"> <div className="mx_ImageView_download">
{ _t('Download this file') }<br/> { _t('Download this file') }<br />
<span className="mx_ImageView_size">{ size_res }</span> <span className="mx_ImageView_size">{ size_res }</span>
</div> </div>
</a> </a>
@ -201,5 +199,5 @@ module.exports = React.createClass({
</div> </div>
</div> </div>
); );
} },
}); });

View file

@ -20,14 +20,14 @@ module.exports = React.createClass({
displayName: 'InlineSpinner', displayName: 'InlineSpinner',
render: function() { render: function() {
var w = this.props.w || 16; const w = this.props.w || 16;
var h = this.props.h || 16; const h = this.props.h || 16;
var imgClass = this.props.imgClassName || ""; const imgClass = this.props.imgClassName || "";
return ( return (
<div className="mx_InlineSpinner"> <div className="mx_InlineSpinner">
<img src="img/spinner.gif" width={w} height={h} className={imgClass}/> <img src="img/spinner.gif" width={w} height={h} className={imgClass} />
</div> </div>
); );
} },
}); });

View file

@ -54,7 +54,6 @@ function getOrCreateContainer(containerId) {
* bounding rect as the parent of PE. * bounding rect as the parent of PE.
*/ */
export default class PersistedElement extends React.Component { export default class PersistedElement extends React.Component {
static propTypes = { static propTypes = {
// Unique identifier for this PersistedElement instance // Unique identifier for this PersistedElement instance
// Any PersistedElements with the same persistKey will use // Any PersistedElements with the same persistKey will use

View file

@ -16,19 +16,19 @@ limitations under the License.
'use strict'; 'use strict';
var React = require('react'); const React = require('react');
module.exports = React.createClass({ module.exports = React.createClass({
displayName: 'Spinner', displayName: 'Spinner',
render: function() { render: function() {
var w = this.props.w || 32; const w = this.props.w || 32;
var h = this.props.h || 32; const h = this.props.h || 32;
var imgClass = this.props.imgClassName || ""; const imgClass = this.props.imgClassName || "";
return ( return (
<div className="mx_Spinner"> <div className="mx_Spinner">
<img src="img/spinner.gif" width={w} height={h} className={imgClass}/> <img src="img/spinner.gif" width={w} height={h} className={imgClass} />
</div> </div>
); );
} },
}); });

View file

@ -20,7 +20,6 @@ import TintableSvg from './TintableSvg';
import AccessibleButton from './AccessibleButton'; import AccessibleButton from './AccessibleButton';
export default class TintableSvgButton extends React.Component { export default class TintableSvgButton extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
} }

View file

@ -39,7 +39,7 @@ module.exports = React.createClass({
<div className="mx_MatrixToolbar_content"> <div className="mx_MatrixToolbar_content">
{ _t('You are not receiving desktop notifications') } <a className="mx_MatrixToolbar_link" onClick={ this.onClick }> { _t('Enable them now') }</a> { _t('You are not receiving desktop notifications') } <a className="mx_MatrixToolbar_link" onClick={ this.onClick }> { _t('Enable them now') }</a>
</div> </div>
<AccessibleButton className="mx_MatrixToolbar_close" onClick={ this.hideToolbar } ><img src="img/cancel.svg" width="18" height="18" alt={_t('Close')}/></AccessibleButton> <AccessibleButton className="mx_MatrixToolbar_close" onClick={ this.hideToolbar } ><img src="img/cancel.svg" width="18" height="18" alt={_t('Close')} /></AccessibleButton>
</div> </div>
); );
}, },

View file

@ -45,10 +45,10 @@ export default React.createClass({
description: <div className="mx_MatrixToolbar_changelog">{releaseNotes}</div>, description: <div className="mx_MatrixToolbar_changelog">{releaseNotes}</div>,
button: _t("Update"), button: _t("Update"),
onFinished: (update) => { onFinished: (update) => {
if(update && PlatformPeg.get()) { if (update && PlatformPeg.get()) {
PlatformPeg.get().installUpdate(); PlatformPeg.get().installUpdate();
} }
} },
}); });
}, },
@ -58,10 +58,10 @@ export default React.createClass({
version: this.props.version, version: this.props.version,
newVersion: this.props.newVersion, newVersion: this.props.newVersion,
onFinished: (update) => { onFinished: (update) => {
if(update && PlatformPeg.get()) { if (update && PlatformPeg.get()) {
PlatformPeg.get().installUpdate(); PlatformPeg.get().installUpdate();
} }
} },
}); });
}, },
@ -103,5 +103,5 @@ export default React.createClass({
{action_button} {action_button}
</div> </div>
); );
} },
}); });

View file

@ -32,14 +32,14 @@ export default React.createClass({
getDefaultProps: function() { getDefaultProps: function() {
return { return {
detail: '', detail: '',
} };
}, },
getStatusText: function() { getStatusText: function() {
// we can't import the enum from riot-web as we don't want matrix-react-sdk // we can't import the enum from riot-web as we don't want matrix-react-sdk
// to depend on riot-web. so we grab it as a normal object via API instead. // to depend on riot-web. so we grab it as a normal object via API instead.
const updateCheckStatusEnum = PlatformPeg.get().getUpdateCheckStatusEnum(); const updateCheckStatusEnum = PlatformPeg.get().getUpdateCheckStatusEnum();
switch(this.props.status) { switch (this.props.status) {
case updateCheckStatusEnum.ERROR: case updateCheckStatusEnum.ERROR:
return _t('Error encountered (%(errorDetail)s).', { errorDetail: this.props.detail }); return _t('Error encountered (%(errorDetail)s).', { errorDetail: this.props.detail });
case updateCheckStatusEnum.CHECKING: case updateCheckStatusEnum.CHECKING:
@ -59,7 +59,7 @@ export default React.createClass({
const message = this.getStatusText(); const message = this.getStatusText();
const warning = _t('Warning'); const warning = _t('Warning');
if (!'getUpdateCheckStatusEnum' in PlatformPeg.get()) { if (!('getUpdateCheckStatusEnum' in PlatformPeg.get())) {
return <div></div>; return <div></div>;
} }
@ -83,9 +83,9 @@ export default React.createClass({
{message} {message}
</div> </div>
<AccessibleButton className="mx_MatrixToolbar_close" onClick={this.hideToolbar}> <AccessibleButton className="mx_MatrixToolbar_close" onClick={this.hideToolbar}>
<img src="img/cancel.svg" width="18" height="18" alt={_t('Close')}/> <img src="img/cancel.svg" width="18" height="18" alt={_t('Close')} />
</AccessibleButton> </AccessibleButton>
</div> </div>
); );
} },
}); });

View file

@ -296,7 +296,7 @@ export const TermsAuthEntry = React.createClass({
return <Loader />; return <Loader />;
} }
let checkboxes = []; const checkboxes = [];
let allChecked = true; let allChecked = true;
for (const policy of this.state.policies) { for (const policy of this.state.policies) {
const checked = this.state.toggledPolicies[policy.id]; const checked = this.state.toggledPolicies[policy.id];
@ -306,7 +306,7 @@ export const TermsAuthEntry = React.createClass({
<label key={"policy_checkbox_" + policy.id}> <label key={"policy_checkbox_" + policy.id}>
<input type="checkbox" onClick={() => this._trySubmit(policy.id)} checked={checked} /> <input type="checkbox" onClick={() => this._trySubmit(policy.id)} checked={checked} />
<a href={policy.url} target="_blank" rel="noopener">{ policy.name }</a> <a href={policy.url} target="_blank" rel="noopener">{ policy.name }</a>
</label> </label>,
); );
} }

View file

@ -103,7 +103,7 @@ module.exports = React.createClass({
oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias; oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias;
} }
let newCanonicalAlias = this.state.canonicalAlias; const newCanonicalAlias = this.state.canonicalAlias;
if (this.props.canSetCanonicalAlias && oldCanonicalAlias !== newCanonicalAlias) { if (this.props.canSetCanonicalAlias && oldCanonicalAlias !== newCanonicalAlias) {
console.log("AliasSettings: Updating canonical alias"); console.log("AliasSettings: Updating canonical alias");
@ -167,7 +167,7 @@ module.exports = React.createClass({
if (!this.props.canonicalAlias) { if (!this.props.canonicalAlias) {
this.setState({ this.setState({
canonicalAlias: alias canonicalAlias: alias,
}); });
} }
}, },

View file

@ -33,7 +33,6 @@ import Autocompleter from '../../../autocomplete/Autocompleter';
const COMPOSER_SELECTED = 0; const COMPOSER_SELECTED = 0;
export default class Autocomplete extends React.Component { export default class Autocomplete extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);

View file

@ -107,7 +107,7 @@ module.exports = React.createClass({
// FIXME: do we want to factor out all image displaying between this and MImageBody - especially for lightboxing? // FIXME: do we want to factor out all image displaying between this and MImageBody - especially for lightboxing?
let image = p["og:image"]; let image = p["og:image"];
let imageMaxWidth = 100, imageMaxHeight = 100; const imageMaxWidth = 100; const imageMaxHeight = 100;
if (image && image.startsWith("mxc://")) { if (image && image.startsWith("mxc://")) {
image = MatrixClientPeg.get().mxcUrlToHttp(image, imageMaxWidth, imageMaxHeight); image = MatrixClientPeg.get().mxcUrlToHttp(image, imageMaxWidth, imageMaxHeight);
} }

View file

@ -712,7 +712,7 @@ module.exports = withMatrixClient(React.createClass({
if (!member || !member.membership || member.membership === 'leave') { if (!member || !member.membership || member.membership === 'leave') {
const roomId = member && member.roomId ? member.roomId : RoomViewStore.getRoomId(); const roomId = member && member.roomId ? member.roomId : RoomViewStore.getRoomId();
const onInviteUserButton = async () => { const onInviteUserButton = async() => {
try { try {
await cli.invite(roomId, member.userId); await cli.invite(roomId, member.userId);
} catch (err) { } catch (err) {

View file

@ -269,7 +269,7 @@ export default class MessageComposer extends React.Component {
); );
} }
let e2eImg, e2eTitle, e2eClass; let e2eImg; let e2eTitle; let e2eClass;
const roomIsEncrypted = MatrixClientPeg.get().isRoomEncrypted(this.props.room.roomId); const roomIsEncrypted = MatrixClientPeg.get().isRoomEncrypted(this.props.room.roomId);
if (roomIsEncrypted) { if (roomIsEncrypted) {
// FIXME: show a /!\ if there are untrusted devices in the room... // FIXME: show a /!\ if there are untrusted devices in the room...
@ -429,7 +429,7 @@ export default class MessageComposer extends React.Component {
className="mx_MessageComposer_formatbar_cancel mx_filterFlipColor" className="mx_MessageComposer_formatbar_cancel mx_filterFlipColor"
src="img/icon-text-cancel.svg" /> src="img/icon-text-cancel.svg" />
</div> </div>
</div> </div>;
} }
return ( return (

View file

@ -67,7 +67,7 @@ const EMOJI_UNICODE_TO_SHORTNAME = mapUnicodeToShort();
const REGEX_EMOJI_WHITESPACE = new RegExp('(?:^|\\s)(' + asciiRegexp + ')\\s$'); const REGEX_EMOJI_WHITESPACE = new RegExp('(?:^|\\s)(' + asciiRegexp + ')\\s$');
const EMOJI_REGEX = new RegExp(unicodeRegexp, 'g'); const EMOJI_REGEX = new RegExp(unicodeRegexp, 'g');
const TYPING_USER_TIMEOUT = 10000, TYPING_SERVER_TIMEOUT = 30000; const TYPING_USER_TIMEOUT = 10000; const TYPING_SERVER_TIMEOUT = 30000;
const ENTITY_TYPES = { const ENTITY_TYPES = {
AT_ROOM_PILL: 'ATROOMPILL', AT_ROOM_PILL: 'ATROOMPILL',
@ -175,8 +175,8 @@ export default class MessageComposerInput extends React.Component {
// see https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095 // see https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095
this.direction = ''; this.direction = '';
this.plainWithMdPills = new PlainWithPillsSerializer({ pillFormat: 'md' }); this.plainWithMdPills = new PlainWithPillsSerializer({ pillFormat: 'md' });
this.plainWithIdPills = new PlainWithPillsSerializer({ pillFormat: 'id' }); this.plainWithIdPills = new PlainWithPillsSerializer({ pillFormat: 'id' });
this.plainWithPlainPills = new PlainWithPillsSerializer({ pillFormat: 'plain' }); this.plainWithPlainPills = new PlainWithPillsSerializer({ pillFormat: 'plain' });
this.md = new Md({ this.md = new Md({
@ -1078,7 +1078,7 @@ export default class MessageComposerInput extends React.Component {
// only look for commands if the first block contains simple unformatted text // only look for commands if the first block contains simple unformatted text
// i.e. no pills or rich-text formatting and begins with a /. // i.e. no pills or rich-text formatting and begins with a /.
let cmd, commandText; let cmd; let commandText;
const firstChild = editorState.document.nodes.get(0); const firstChild = editorState.document.nodes.get(0);
const firstGrandChild = firstChild && firstChild.nodes.get(0); const firstGrandChild = firstChild && firstChild.nodes.get(0);
if (firstChild && firstGrandChild && if (firstChild && firstGrandChild &&
@ -1260,7 +1260,7 @@ export default class MessageComposerInput extends React.Component {
} }
}; };
selectHistory = async (up) => { selectHistory = async(up) => {
const delta = up ? -1 : 1; const delta = up ? -1 : 1;
// True if we are not currently selecting history, but composing a message // True if we are not currently selecting history, but composing a message
@ -1308,7 +1308,7 @@ export default class MessageComposerInput extends React.Component {
return true; return true;
}; };
onTab = async (e) => { onTab = async(e) => {
this.setState({ this.setState({
someCompletions: null, someCompletions: null,
}); });
@ -1330,7 +1330,7 @@ export default class MessageComposerInput extends React.Component {
up ? this.autocomplete.onUpArrow() : this.autocomplete.onDownArrow(); up ? this.autocomplete.onUpArrow() : this.autocomplete.onDownArrow();
}; };
onEscape = async (e) => { onEscape = async(e) => {
e.preventDefault(); e.preventDefault();
if (this.autocomplete) { if (this.autocomplete) {
this.autocomplete.onEscape(e); this.autocomplete.onEscape(e);
@ -1349,7 +1349,7 @@ export default class MessageComposerInput extends React.Component {
/* If passed null, restores the original editor content from state.originalEditorState. /* If passed null, restores the original editor content from state.originalEditorState.
* If passed a non-null displayedCompletion, modifies state.originalEditorState to compute new state.editorState. * If passed a non-null displayedCompletion, modifies state.originalEditorState to compute new state.editorState.
*/ */
setDisplayedCompletion = async (displayedCompletion: ?Completion): boolean => { setDisplayedCompletion = async(displayedCompletion: ?Completion): boolean => {
const activeEditorState = this.state.originalEditorState || this.state.editorState; const activeEditorState = this.state.originalEditorState || this.state.editorState;
if (displayedCompletion == null) { if (displayedCompletion == null) {

View file

@ -93,7 +93,7 @@ module.exports = React.createClass({
}, },
render: function() { render: function() {
let joinBlock, previewBlock; let joinBlock; let previewBlock;
if (this.props.spinner || this.state.busy) { if (this.props.spinner || this.state.busy) {
const Spinner = sdk.getComponent("elements.Spinner"); const Spinner = sdk.getComponent("elements.Spinner");

View file

@ -657,31 +657,31 @@ module.exports = React.createClass({
const userLevels = powerLevels.users || {}; const userLevels = powerLevels.users || {};
const powerLevelDescriptors = { const powerLevelDescriptors = {
users_default: { "users_default": {
desc: _t('The default role for new room members is'), desc: _t('The default role for new room members is'),
defaultValue: 0, defaultValue: 0,
}, },
events_default: { "events_default": {
desc: _t('To send messages, you must be a'), desc: _t('To send messages, you must be a'),
defaultValue: 0, defaultValue: 0,
}, },
invite: { "invite": {
desc: _t('To invite users into the room, you must be a'), desc: _t('To invite users into the room, you must be a'),
defaultValue: 50, defaultValue: 50,
}, },
state_default: { "state_default": {
desc: _t('To configure the room, you must be a'), desc: _t('To configure the room, you must be a'),
defaultValue: 50, defaultValue: 50,
}, },
kick: { "kick": {
desc: _t('To kick users, you must be a'), desc: _t('To kick users, you must be a'),
defaultValue: 50, defaultValue: 50,
}, },
ban: { "ban": {
desc: _t('To ban users, you must be a'), desc: _t('To ban users, you must be a'),
defaultValue: 50, defaultValue: 50,
}, },
redact: { "redact": {
desc: _t('To remove other users\' messages, you must be a'), desc: _t('To remove other users\' messages, you must be a'),
defaultValue: 50, defaultValue: 50,
}, },

View file

@ -67,7 +67,7 @@ module.exports = React.createClass({
phases: { phases: {
LOADING: "LOADING", // The component is loading or sending data to the hs LOADING: "LOADING", // The component is loading or sending data to the hs
DISPLAY: "DISPLAY", // The component is ready and display data DISPLAY: "DISPLAY", // The component is ready and display data
ERROR: "ERROR", // There was an error ERROR: "ERROR", // There was an error
}, },
propTypes: { propTypes: {
@ -86,14 +86,14 @@ module.exports = React.createClass({
getInitialState: function() { getInitialState: function() {
return { return {
phase: this.phases.LOADING, phase: this.phases.LOADING,
masterPushRule: undefined, // The master rule ('.m.rule.master') masterPushRule: undefined, // The master rule ('.m.rule.master')
vectorPushRules: [], // HS default push rules displayed in Vector UI vectorPushRules: [], // HS default push rules displayed in Vector UI
vectorContentRules: { // Keyword push rules displayed in Vector UI vectorContentRules: { // Keyword push rules displayed in Vector UI
vectorState: PushRuleVectorState.ON, vectorState: PushRuleVectorState.ON,
rules: [], rules: [],
}, },
externalPushRules: [], // Push rules (except content rule) that have been defined outside Vector UI externalPushRules: [], // Push rules (except content rule) that have been defined outside Vector UI
externalContentRules: [], // Keyword push rules that have been defined outside Vector UI externalContentRules: [], // Keyword push rules that have been defined outside Vector UI
}; };
}, },
@ -290,7 +290,7 @@ module.exports = React.createClass({
for (const i in this.state.vectorContentRules.rules) { for (const i in this.state.vectorContentRules.rules) {
const rule = this.state.vectorContentRules.rules[i]; const rule = this.state.vectorContentRules.rules[i];
let enabled, actions; let enabled; let actions;
switch (newPushRuleVectorState) { switch (newPushRuleVectorState) {
case PushRuleVectorState.ON: case PushRuleVectorState.ON:
if (rule.actions.length !== 1) { if (rule.actions.length !== 1) {

View file

@ -16,9 +16,9 @@ limitations under the License.
'use strict'; 'use strict';
var NotificationUtils = require('./NotificationUtils'); const NotificationUtils = require('./NotificationUtils');
var encodeActions = NotificationUtils.encodeActions; const encodeActions = NotificationUtils.encodeActions;
module.exports = { module.exports = {
ACTION_NOTIFY: encodeActions({notify: true}), ACTION_NOTIFY: encodeActions({notify: true}),

View file

@ -248,7 +248,7 @@ export default class SettingsStore {
if (actualValue !== undefined && actualValue !== null) return actualValue; if (actualValue !== undefined && actualValue !== null) return actualValue;
return calculatedValue; return calculatedValue;
} }
/* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307 /* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307
/** /**
* Sets the value for a setting. The room ID is optional if the setting is not being * Sets the value for a setting. The room ID is optional if the setting is not being
* set for a particular room, otherwise it should be supplied. The value may be null * set for a particular room, otherwise it should be supplied. The value may be null

View file

@ -23,7 +23,6 @@ limitations under the License.
* intended to handle environmental factors for specific settings. * intended to handle environmental factors for specific settings.
*/ */
export default class SettingController { export default class SettingController {
/** /**
* Gets the overridden value for the setting, if any. This must return null if the * Gets the overridden value for the setting, if any. This must return null if the
* value is not to be overridden, otherwise it must return the new value. * value is not to be overridden, otherwise it must return the new value.

View file

@ -23,7 +23,6 @@ import Unread from '../Unread';
* the RoomList. * the RoomList.
*/ */
class RoomListStore extends Store { class RoomListStore extends Store {
static _listOrders = { static _listOrders = {
"m.favourite": "manual", "m.favourite": "manual",
"im.vector.fake.invite": "recent", "im.vector.fake.invite": "recent",

View file

@ -93,7 +93,7 @@ export default class DMRoomMap {
return {userId, roomId}; return {userId, roomId};
} }
} }
}).filter((ids) => !!ids); //filter out }).filter((ids) => !!ids); //filter out
// these are actually all legit self-chats // these are actually all legit self-chats
// bail out // bail out
if (!guessedUserIdsThatChanged.length) { if (!guessedUserIdsThatChanged.length) {

View file

@ -77,7 +77,7 @@ const ALLOWED_BLOB_MIMETYPES = {
'audio/x-pn-wav': true, 'audio/x-pn-wav': true,
'audio/flac': true, 'audio/flac': true,
'audio/x-flac': true, 'audio/x-flac': true,
} };
/** /**
* Decrypt a file attached to a matrix event. * Decrypt a file attached to a matrix event.