Fix eslint errors

This commit is contained in:
Yuya Ochiai 2018-02-20 21:44:23 +09:00
parent 22fdf01d38
commit 197b172a59
33 changed files with 150 additions and 117 deletions

View file

@ -6,12 +6,12 @@
"rules": {
"indent": [2, 2, {"SwitchCase": 0}],
"no-console": 0,
"no-eval": 1,
"no-process-env": 0,
"no-underscore-dangle": 1,
"react/jsx-indent": [2, 2],
"react/jsx-indent-props": [2, 2],
"react/no-set-state": 1,
"react/prefer-es6-class": 1,
"react/no-set-state": 1
"react/require-optimization": 0
}
}

View file

@ -1,6 +1,7 @@
/* eslint-disable no-process-exit */
const {spawn} = require('child_process');
const {path7za} = require('7zip-bin');
const cwd = process.argv[2];

View file

@ -1,7 +1,9 @@
'use strict';
const spawnSync = require('child_process').spawnSync;
const path7za = require('7zip-bin').path7za;
const pkg = require('../src/package.json');
const appVersion = pkg.version;
const productName = pkg.productName;

View file

@ -1,7 +1,8 @@
const webpack = require('webpack');
const electron = require('electron-connect').server.create({path: 'src'});
const mainConfig = require('../webpack.config.main.js');
const rendererConfig = require('../webpack.config.renderer.js');
const electron = require('electron-connect').server.create({path: 'src'});
let started = false;

View file

@ -1,3 +1,5 @@
const url = require('url');
const React = require('react');
const PropTypes = require('prop-types');
const createReactClass = require('create-react-class');
@ -5,7 +7,8 @@ const ReactCSSTransitionGroup = require('react-transition-group/CSSTransitionGro
const {Grid, Row} = require('react-bootstrap');
const {ipcRenderer, remote} = require('electron');
const url = require('url');
const Utils = require('../../utils/util.js');
const LoginModal = require('./LoginModal.jsx');
const MattermostView = require('./MattermostView.jsx');
@ -15,8 +18,6 @@ const PermissionRequestDialog = require('./PermissionRequestDialog.jsx');
const NewTeamModal = require('./NewTeamModal.jsx');
const Utils = require('../../utils/util.js');
const MainPage = createReactClass({
propTypes: {
onUnreadCountChange: PropTypes.func.isRequired,

View file

@ -1,12 +1,13 @@
// eslint-disable react/no-set-state
/* eslint-disable react/no-set-state */
// setState() is necessary for this component
const url = require('url');
const React = require('react');
const PropTypes = require('prop-types');
const createReactClass = require('create-react-class');
const {findDOMNode} = require('react-dom');
const {ipcRenderer, remote, shell} = require('electron');
const url = require('url');
const contextMenu = require('../js/contextMenu');
const {protocols} = require('../../../electron-builder.json');
const scheme = protocols[0].schemes[0];

View file

@ -1,6 +1,7 @@
const React = require('react');
const PropTypes = require('prop-types');
const {Modal} = require('react-bootstrap');
const DestructiveConfirmationModal = require('./DestructiveConfirmModal.jsx');
function RemoveServerModal(props) {

View file

@ -492,8 +492,8 @@ const SettingsPage = createReactClass({
checked={this.state.showTrayIcon}
onChange={this.handleChangeShowTrayIcon}
>{process.platform === 'darwin' ?
`Show ${remote.app.getName()} icon in the menu bar` :
'Show icon in the notification area'}
`Show ${remote.app.getName()} icon in the menu bar` :
'Show icon in the notification area'}
<HelpBlock>
{'Setting takes effect after restarting the app.'}
</HelpBlock>
@ -567,7 +567,7 @@ const SettingsPage = createReactClass({
)) }
</Col>
</Row>
) : null;
) : null;
return (
<div>

View file

@ -1,7 +1,7 @@
const React = require('react');
const {findDOMNode} = require('react-dom');
const PropTypes = require('prop-types');
const {Glyphicon, Nav, NavItem, Overlay} = require('react-bootstrap');
const PermissionRequestDialog = require('./PermissionRequestDialog.jsx');
class TabBar extends React.Component { // need "this"
@ -74,7 +74,7 @@ class TabBar extends React.Component { // need "this"
>
<Glyphicon glyph='plus'/>
</NavItem>
);
);
}
return (
<Nav

View file

@ -2,6 +2,7 @@ const React = require('react');
const PropTypes = require('prop-types');
const createReactClass = require('create-react-class');
const {ListGroup} = require('react-bootstrap');
const TeamListItem = require('./TeamListItem.jsx');
const NewTeamModal = require('./NewTeamModal.jsx');
const RemoveServerModal = require('./RemoveServerModal.jsx');

View file

@ -1,6 +1,7 @@
const settings = require('../../common/settings');
const {remote} = require('electron');
const settings = require('../../common/settings');
class AppConfig {
constructor(file) {
this.fileName = file;

View file

@ -2,23 +2,24 @@
require('./css/index.css');
window.eval = global.eval = () => {
window.eval = global.eval = () => { // eslint-disable-line no-multi-assign, no-eval
throw new Error('Sorry, Mattermost does not support window.eval() for security reasons.');
};
const url = require('url');
const React = require('react');
const ReactDOM = require('react-dom');
const {remote, ipcRenderer} = require('electron');
const MainPage = require('./components/MainPage.jsx');
const AppConfig = require('./config/AppConfig.js');
const buildConfig = require('../common/config/buildConfig');
const settings = require('../common/settings');
const url = require('url');
const badge = require('./js/badge');
const utils = require('../utils/util');
const MainPage = require('./components/MainPage.jsx');
const AppConfig = require('./config/AppConfig.js');
const badge = require('./js/badge');
const teams = settings.mergeDefaultTeams(AppConfig.data.teams);
remote.getCurrentWindow().removeAllListeners('focus');

View file

@ -3,6 +3,7 @@
const OriginalNotification = Notification;
const {ipcRenderer, remote} = require('electron');
const {throttle} = require('underscore');
const osVersion = require('../../common/osVersion');
const dingDataURL = require('../../assets/ding.mp3'); // https://github.com/mattermost/platform/blob/v3.7.3/webapp/images/ding.mp3

View file

@ -1,15 +1,17 @@
'use strict';
const {remote} = require('electron');
window.eval = global.eval = () => {
window.eval = global.eval = () => { // eslint-disable-line no-multi-assign, no-eval
throw new Error(`Sorry, ${remote.app.getName()} does not support window.eval() for security reasons.`);
};
const React = require('react');
const ReactDOM = require('react-dom');
const buildConfig = require('../common/config/buildConfig');
const SettingsPage = require('./components/SettingsPage.jsx');
const contextMenu = require('./js/contextMenu');
const buildConfig = require('../common/config/buildConfig');
const configFile = remote.app.getPath('userData') + '/config.json';

View file

@ -3,6 +3,7 @@
const electron = require('electron');
const ipc = electron.ipcRenderer;
const webFrame = electron.webFrame;
const EnhancedNotification = require('../js/notification');
const UNREAD_COUNT_INTERVAL = 1000;

View file

@ -2,6 +2,7 @@
const fs = require('fs');
const path = require('path');
const buildConfig = require('./config/buildConfig');
function merge(base, target) {

View file

@ -1,5 +1,8 @@
'use strict';
const os = require('os');
const path = require('path');
const {
app,
Menu,
@ -10,15 +13,15 @@ const {
systemPreferences,
session,
} = require('electron');
const os = require('os');
const path = require('path');
const isDev = require('electron-is-dev');
const installExtension = require('electron-devtools-installer');
const squirrelStartup = require('./main/squirrelStartup');
const CriticalErrorHandler = require('./main/CriticalErrorHandler');
const parseArgv = require('yargs').parse;
const protocols = require('../electron-builder.json').protocols;
const squirrelStartup = require('./main/squirrelStartup');
const CriticalErrorHandler = require('./main/CriticalErrorHandler');
const criticalErrorHandler = new CriticalErrorHandler();
process.on('uncaughtException', criticalErrorHandler.processUncaughtExceptionHandler.bind(criticalErrorHandler));
@ -54,7 +57,7 @@ let scheme = null;
let appState = null;
let permissionManager = null;
var argv = require('yargs').parse(process.argv.slice(1));
const argv = parseArgv(process.argv.slice(1));
var hideOnStartup;
if (argv.hidden) {
@ -117,40 +120,40 @@ const trayImages = (() => {
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'windows/tray_mention.ico')),
};
case 'darwin':
{
const icons = {
light: {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/MenuIcon.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/MenuIconUnread.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/MenuIconMention.png')),
},
clicked: {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/ClickedMenuIcon.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/ClickedMenuIconUnread.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/ClickedMenuIconMention.png')),
},
};
switchMenuIconImages(icons, systemPreferences.isDarkMode());
return icons;
}
{
const icons = {
light: {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/MenuIcon.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/MenuIconUnread.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/MenuIconMention.png')),
},
clicked: {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/ClickedMenuIcon.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/ClickedMenuIconUnread.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'osx/ClickedMenuIconMention.png')),
},
};
switchMenuIconImages(icons, systemPreferences.isDarkMode());
return icons;
}
case 'linux':
{
const theme = config.trayIconTheme;
try {
return {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', theme, 'MenuIconTemplate.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', theme, 'MenuIconUnreadTemplate.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', theme, 'MenuIconMentionTemplate.png')),
};
} catch (e) {
//Fallback for invalid theme setting
return {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', 'light', 'MenuIconTemplate.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', 'light', 'MenuIconUnreadTemplate.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', 'light', 'MenuIconMentionTemplate.png')),
};
}
{
const theme = config.trayIconTheme;
try {
return {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', theme, 'MenuIconTemplate.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', theme, 'MenuIconUnreadTemplate.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', theme, 'MenuIconMentionTemplate.png')),
};
} catch (e) {
//Fallback for invalid theme setting
return {
normal: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', 'light', 'MenuIconTemplate.png')),
unread: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', 'light', 'MenuIconUnreadTemplate.png')),
mention: nativeImage.createFromPath(path.resolve(assetsDir, 'linux', 'light', 'MenuIconMentionTemplate.png')),
};
}
}
default:
return {};
}
@ -564,13 +567,13 @@ app.on('ready', () => {
ipcMain.on('update-dict', () => {
if (config.useSpellChecker) {
spellChecker = new SpellChecker(
config.spellCheckerLocale,
path.resolve(app.getAppPath(), 'node_modules/simple-spellchecker/dict'),
(err) => {
if (err) {
console.error(err);
}
});
config.spellCheckerLocale,
path.resolve(app.getAppPath(), 'node_modules/simple-spellchecker/dict'),
(err) => {
if (err) {
console.error(err);
}
});
}
});
ipcMain.on('checkspell', (event, word) => {

View file

@ -1,9 +1,10 @@
const {app, dialog} = require('electron');
const {spawn} = require('child_process');
const fs = require('fs');
const os = require('os');
const path = require('path');
const {app, dialog} = require('electron');
const BUTTON_OK = 'OK';
const BUTTON_SHOW_DETAILS = 'Show Details';
const BUTTON_REOPEN = 'Reopen';

View file

@ -1,4 +1,5 @@
const fs = require('fs');
const utils = require('../utils/util');
const PERMISSION_GRANTED = 'granted';

View file

@ -1,6 +1,7 @@
'use strict';
const EventEmitter = require('events');
const simpleSpellChecker = require('simple-spellchecker');
/// Following approach for contractions is derived from electron-spellchecker.

View file

@ -1,13 +1,14 @@
'use strict';
const path = require('path');
const fs = require('fs');
const {
app,
dialog,
ipcMain,
shell,
} = require('electron');
const path = require('path');
const fs = require('fs');
const allowedProtocolFile = path.resolve(app.getPath('userData'), 'allowedProtocols.json');
var allowedProtocols = [];

View file

@ -1,6 +1,7 @@
const fs = require('fs');
const path = require('path');
const zlib = require('zlib');
const electron = require('electron');
const {app, dialog} = electron;

View file

@ -1,7 +1,8 @@
const {app, BrowserWindow} = require('electron');
const fs = require('fs');
const path = require('path');
const {app, BrowserWindow} = require('electron');
function saveWindowState(file, window) {
var windowState = window.getBounds();
windowState.maximized = window.isMaximized();

View file

@ -1,6 +1,7 @@
'use strict';
const electron = require('electron');
const settings = require('../../common/settings');
const buildConfig = require('../../common/config/buildConfig');
@ -58,7 +59,8 @@ function createTemplate(mainWindow, config, isDev) {
role: 'unhide',
}, separatorItem, {
role: 'quit',
}] : [separatorItem, {
}] : [
separatorItem, {
role: 'quit',
accelerator: 'CmdOrCtrl+Q',
click() {

View file

@ -4,6 +4,7 @@ const {
app,
Menu,
} = require('electron');
const settings = require('../../common/settings');
function createTemplate(mainWindow, config, isDev) {

View file

@ -1,6 +1,7 @@
const {ipcMain} = require('electron');
const {URL} = require('url');
const {ipcMain} = require('electron');
function dequeueRequests(requestQueue, permissionManager, origin, permission, status) {
switch (status) {
case 'allow':

View file

@ -14,10 +14,10 @@ async function setupAutoLaunch(cmd) {
isHidden: true,
});
if (cmd === '--squirrel-uninstall') {
// If we're uninstalling, make sure we also delete our auto launch registry key
// If we're uninstalling, make sure we also delete our auto launch registry key
return appLauncher.disable();
} else if (cmd === '--squirrel-install' || cmd === '--squirrel-updated') {
// If we're updating and already have an registry entry for auto launch, make sure to update the path
// If we're updating and already have an registry entry for auto launch, make sure to update the path
const enabled = await appLauncher.isEnabled();
if (enabled) {
return appLauncher.enable();

View file

@ -1,11 +1,11 @@
'use strict';
const chai = require('chai');
chai.should();
const fs = require('fs');
const path = require('path');
const Application = require('spectron').Application;
const chai = require('chai');
chai.should();
const sourceRootDir = path.join(__dirname, '../..');
const electronBinaryPath = (() => {

View file

@ -93,33 +93,33 @@ describe('browser/settings.html', function desc() {
it('should open the corresponding tab when a server list item is clicked', () => {
env.addClientCommands(this.app.client);
return this.app.client.
loadSettingsPage().
click('h4=example').
pause(1000).
waitUntilWindowLoaded().
getUrl().then((url) => {
url.should.match(/\/index.html(\?.+)?$/);
}).
isVisible('#mattermostView0').then((visible) => {
visible.should.be.true;
}).
isVisible('#mattermostView1').then((visible) => {
visible.should.be.false;
}).
loadSettingsPage().
click('h4=example').
pause(100).
waitUntilWindowLoaded().
getUrl().then((url) => {
url.should.match(/\/index.html(\?.+)?$/);
}).
isVisible('#mattermostView0').then((visible) => {
visible.should.be.true;
}).
isVisible('#mattermostView1').then((visible) => {
visible.should.be.false;
}).
loadSettingsPage().
click('h4=github').
pause(1000).
waitUntilWindowLoaded().
getUrl().then((url) => {
url.should.match(/\/index.html(\?.+)?$/);
}).
isVisible('#mattermostView0').then((visible) => {
visible.should.be.false;
}).
isVisible('#mattermostView1').then((visible) => {
visible.should.be.true;
});
loadSettingsPage().
click('h4=github').
pause(100).
waitUntilWindowLoaded().
getUrl().then((url) => {
url.should.match(/\/index.html(\?.+)?$/);
}).
isVisible('#mattermostView0').then((visible) => {
visible.should.be.false;
}).
isVisible('#mattermostView1').then((visible) => {
visible.should.be.true;
});
});
});
@ -129,10 +129,10 @@ describe('browser/settings.html', function desc() {
const expected = (process.platform === 'win32' || process.platform === 'linux');
env.addClientCommands(this.app.client);
return this.app.client.
loadSettingsPage().
isExisting('#inputHideMenuBar').then((existing) => {
existing.should.equal(expected);
});
loadSettingsPage().
isExisting('#inputHideMenuBar').then((existing) => {
existing.should.equal(expected);
});
});
[true, false].forEach((v) => {
@ -398,15 +398,15 @@ describe('browser/settings.html', function desc() {
describe('Valid server name', () => {
beforeEach(() => {
return this.app.client.
setValue('#teamNameInput', 'TestTeam').
click('#saveNewServerModal');
setValue('#teamNameInput', 'TestTeam').
click('#saveNewServerModal');
});
it('should not be marked invalid', () => {
return this.app.client.
isExisting('.has-error #teamNameInput').then((existing) => {
existing.should.be.false;
});
isExisting('.has-error #teamNameInput').then((existing) => {
existing.should.be.false;
});
});
it('should not be possible to click save', () => {
@ -420,8 +420,8 @@ describe('browser/settings.html', function desc() {
describe('Valid server url', () => {
beforeEach(() => {
return this.app.client.
setValue('#teamUrlInput', 'http://example.org').
click('#saveNewServerModal');
setValue('#teamUrlInput', 'http://example.org').
click('#saveNewServerModal');
});
it('should be valid', () => {
@ -452,8 +452,8 @@ describe('browser/settings.html', function desc() {
describe('Valid Team Settings', () => {
beforeEach(() => {
return this.app.client.
setValue('#teamUrlInput', 'http://example.org').
setValue('#teamNameInput', 'TestTeam');
setValue('#teamUrlInput', 'http://example.org').
setValue('#teamNameInput', 'TestTeam');
});
it('should be possible to click add', () => {

View file

@ -1,5 +1,6 @@
const fs = require('fs');
const path = require('path');
const env = require('../modules/environment');
const PermissionManager = require('../../src/main/PermissionManager');

View file

@ -1,6 +1,7 @@
const SpellChecker = require('../../src/main/SpellChecker');
const path = require('path');
const SpellChecker = require('../../src/main/SpellChecker');
describe('main/Spellchecker.js', function() {
describe('en-US', function() {
let spellchecker = null;

View file

@ -1,6 +1,7 @@
'use strict';
const merge = require('webpack-merge');
const base = require('./webpack.config.base');
module.exports = merge(base, {

View file

@ -1,7 +1,9 @@
'use strict';
const path = require('path');
const merge = require('webpack-merge');
const base = require('./webpack.config.base');
module.exports = merge(base, {