diff --git a/build.sh b/build.sh
index c104e34cd..7a4e6bd7f 100755
--- a/build.sh
+++ b/build.sh
@@ -87,7 +87,7 @@ ProgressEnd()
LintUI()
{
ProgressStart 'ESLint'
-# CheckExitCode yarn eslint
+ CheckExitCode yarn eslint
ProgressEnd 'ESLint'
ProgressStart 'Stylelint'
diff --git a/frontend/.eslintrc b/frontend/.eslintrc
index 5208e3ad6..466bb0e8c 100644
--- a/frontend/.eslintrc
+++ b/frontend/.eslintrc
@@ -177,7 +177,7 @@
"no-undef": "error",
"no-undef-init": "off",
"no-undefined": "off",
- "no-unused-vars": ["error", { "args": "none" }],
+ "no-unused-vars": ["warn", { "args": "none" }],
"no-use-before-define": "error",
# Node.js and CommonJS
@@ -209,7 +209,7 @@
"lines-around-comment": ["error", { "beforeBlockComment": true, "afterBlockComment": false }],
"max-depth": ["error", {"maximum": 5}],
"max-nested-callbacks": ["error", 4],
- "max-params": ["error", 4],
+ "max-params": ["warn", 4],
"max-statements": "off",
"max-statements-per-line": ["error", { "max": 1 }],
"new-cap": ["error", {"capIsNewExceptions": ["$.Deferred"]}],
diff --git a/frontend/src/Activity/Blacklist/BlacklistConnector.js b/frontend/src/Activity/Blacklist/BlacklistConnector.js
index 82c0d7ba4..0528dffaa 100644
--- a/frontend/src/Activity/Blacklist/BlacklistConnector.js
+++ b/frontend/src/Activity/Blacklist/BlacklistConnector.js
@@ -36,7 +36,7 @@ class BlacklistConnector extends Component {
// Lifecycle
componentDidMount() {
- registerPagePopulator(this.repopulate);
+ registerPagePopulator(this.repopulate);
this.props.gotoBlacklistFirstPage();
}
diff --git a/frontend/src/Activity/Queue/Queue.js b/frontend/src/Activity/Queue/Queue.js
index 8cfa4c77d..f3144bb0a 100644
--- a/frontend/src/Activity/Queue/Queue.js
+++ b/frontend/src/Activity/Queue/Queue.js
@@ -137,7 +137,7 @@ class Queue extends Component {
isPendingSelected
} = this.state;
- const isRefreshing = isFetching || isAlbumsFetching || isCheckForFinishedDownloadExecuting;
+ const isRefreshing = isFetching || isAlbumsFetching || isCheckForFinishedDownloadExecuting;
const isAllPopulated = isPopulated && (isAlbumsPopulated || !items.length);
const hasError = error || episodesError;
const selectedCount = this.getSelectedIds().length;
diff --git a/frontend/src/Activity/Queue/QueueRow.js b/frontend/src/Activity/Queue/QueueRow.js
index fcb13a9f8..3123b1fb6 100644
--- a/frontend/src/Activity/Queue/QueueRow.js
+++ b/frontend/src/Activity/Queue/QueueRow.js
@@ -10,7 +10,6 @@ import TableSelectCell from 'Components/Table/Cells/TableSelectCell';
import ProtocolLabel from 'Activity/Queue/ProtocolLabel';
import EpisodeTitleLink from 'Album/EpisodeTitleLink';
import EpisodeQuality from 'Album/EpisodeQuality';
-import SeasonEpisodeNumber from 'Album/SeasonEpisodeNumber';
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
import ArtistNameLink from 'Artist/ArtistNameLink';
import QueueStatusCell from './QueueStatusCell';
diff --git a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistConnector.js b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistConnector.js
index df7a9173a..1464ef557 100644
--- a/frontend/src/AddArtist/ImportArtist/Import/ImportArtistConnector.js
+++ b/frontend/src/AddArtist/ImportArtist/Import/ImportArtistConnector.js
@@ -1,3 +1,4 @@
+/* eslint max-params: 0 */
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
diff --git a/frontend/src/Album/Summary/EpisodeAiring.js b/frontend/src/Album/Summary/EpisodeAiring.js
index 4d3e10137..f80398a08 100644
--- a/frontend/src/Album/Summary/EpisodeAiring.js
+++ b/frontend/src/Album/Summary/EpisodeAiring.js
@@ -1,7 +1,6 @@
import moment from 'moment';
import PropTypes from 'prop-types';
import React from 'react';
-import formatTime from 'Utilities/Date/formatTime';
import isInNextWeek from 'Utilities/Date/isInNextWeek';
import isToday from 'Utilities/Date/isToday';
import isTomorrow from 'Utilities/Date/isTomorrow';
@@ -13,8 +12,7 @@ function EpisodeAiring(props) {
releaseDate,
albumLabel,
shortDateFormat,
- showRelativeDates,
- timeFormat
+ showRelativeDates
} = props;
const networkLabel = (
@@ -77,8 +75,7 @@ EpisodeAiring.propTypes = {
releaseDate: PropTypes.string.isRequired,
albumLabel: PropTypes.arrayOf(PropTypes.string).isRequired,
shortDateFormat: PropTypes.string.isRequired,
- showRelativeDates: PropTypes.bool.isRequired,
- timeFormat: PropTypes.string.isRequired
+ showRelativeDates: PropTypes.bool.isRequired
};
export default EpisodeAiring;
diff --git a/frontend/src/Album/Summary/EpisodeAiringConnector.js b/frontend/src/Album/Summary/EpisodeAiringConnector.js
index 508467efb..4a731ced8 100644
--- a/frontend/src/Album/Summary/EpisodeAiringConnector.js
+++ b/frontend/src/Album/Summary/EpisodeAiringConnector.js
@@ -10,8 +10,7 @@ function createMapStateToProps() {
(uiSettings) => {
return _.pick(uiSettings, [
'shortDateFormat',
- 'showRelativeDates',
- 'timeFormat'
+ 'showRelativeDates'
]);
}
);
diff --git a/frontend/src/Album/Summary/EpisodeSummary.js b/frontend/src/Album/Summary/EpisodeSummary.js
index 4b82ec4af..28bcb45ae 100644
--- a/frontend/src/Album/Summary/EpisodeSummary.js
+++ b/frontend/src/Album/Summary/EpisodeSummary.js
@@ -1,12 +1,9 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
-import formatBytes from 'Utilities/Number/formatBytes';
-import { icons, kinds, sizes } from 'Helpers/Props';
-import IconButton from 'Components/Link/IconButton';
+import { kinds, sizes } from 'Helpers/Props';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import Label from 'Components/Label';
import QualityProfileNameConnector from 'Settings/Profiles/Quality/QualityProfileNameConnector';
-import EpisodeQuality from 'Album/EpisodeQuality';
import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody';
import EpisodeAiringConnector from './EpisodeAiringConnector';
diff --git a/frontend/src/Album/Summary/EpisodeSummaryConnector.js b/frontend/src/Album/Summary/EpisodeSummaryConnector.js
index eca8d0704..d2b95b047 100644
--- a/frontend/src/Album/Summary/EpisodeSummaryConnector.js
+++ b/frontend/src/Album/Summary/EpisodeSummaryConnector.js
@@ -14,14 +14,15 @@ function createMapStateToProps() {
createEpisodeSelector(),
createCommandsSelector(),
createDimensionsSelector(),
- (tracks, episode, commands, dimensions) => {
+ createArtistSelector(),
+ (tracks, episode, commands, dimensions, artist) => {
const filteredItems = _.filter(tracks.items, { albumId: episode.id });
const mediumSortedItems = _.orderBy(filteredItems, 'absoluteTrackNumber');
const items = _.orderBy(mediumSortedItems, 'mediumNumber');
return {
network: episode.label,
- qualityProfileId: episode.profileId,
+ qualityProfileId: artist.qualityProfileId,
releaseDate: episode.releaseDate,
overview: episode.overview,
items,
diff --git a/frontend/src/AlbumStudio/AlbumStudioAlbum.js b/frontend/src/AlbumStudio/AlbumStudioAlbum.js
index d1c9e393d..a1e96a4a2 100644
--- a/frontend/src/AlbumStudio/AlbumStudioAlbum.js
+++ b/frontend/src/AlbumStudio/AlbumStudioAlbum.js
@@ -1,7 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import classNames from 'classnames';
-import padNumber from 'Utilities/Number/padNumber';
import MonitorToggleButton from 'Components/MonitorToggleButton';
import styles from './AlbumStudioAlbum.css';
diff --git a/frontend/src/Artist/Details/AlbumRow.js b/frontend/src/Artist/Details/AlbumRow.js
index 8f27f9ed2..8f3a8df71 100644
--- a/frontend/src/Artist/Details/AlbumRow.js
+++ b/frontend/src/Artist/Details/AlbumRow.js
@@ -211,7 +211,6 @@ AlbumRow.propTypes = {
artistMonitored: PropTypes.bool.isRequired,
statistics: PropTypes.object.isRequired,
mediaInfo: PropTypes.object,
- alternateTitles: PropTypes.arrayOf(PropTypes.object).isRequired,
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
onMonitorAlbumPress: PropTypes.func.isRequired
};
diff --git a/frontend/src/Artist/Details/AlbumRowConnector.js b/frontend/src/Artist/Details/AlbumRowConnector.js
index cff75e50f..c2260e773 100644
--- a/frontend/src/Artist/Details/AlbumRowConnector.js
+++ b/frontend/src/Artist/Details/AlbumRowConnector.js
@@ -14,13 +14,10 @@ function createMapStateToProps() {
createTrackFileSelector(),
createCommandsSelector(),
(id, sceneSeasonNumber, artist, trackFile, commands) => {
- const alternateTitles = sceneSeasonNumber ? _.filter(artist.alternateTitles, { sceneSeasonNumber }) : [];
-
return {
artistMonitored: artist.monitored,
trackFilePath: trackFile ? trackFile.path : null,
- trackFileRelativePath: trackFile ? trackFile.relativePath : null,
- alternateTitles
+ trackFileRelativePath: trackFile ? trackFile.relativePath : null
};
}
);
diff --git a/frontend/src/Artist/Details/ArtistDetails.js b/frontend/src/Artist/Details/ArtistDetails.js
index d35b068ef..4c74532e2 100644
--- a/frontend/src/Artist/Details/ArtistDetails.js
+++ b/frontend/src/Artist/Details/ArtistDetails.js
@@ -187,7 +187,6 @@ class ArtistDetails extends Component {
overview,
links,
images,
- albums,
alternateTitles,
tags,
isRefreshing,
@@ -595,7 +594,6 @@ ArtistDetails.propTypes = {
overview: PropTypes.string.isRequired,
links: PropTypes.arrayOf(PropTypes.object).isRequired,
images: PropTypes.arrayOf(PropTypes.object).isRequired,
- albums: PropTypes.arrayOf(PropTypes.object).isRequired,
alternateTitles: PropTypes.arrayOf(PropTypes.string).isRequired,
tags: PropTypes.arrayOf(PropTypes.number).isRequired,
isRefreshing: PropTypes.bool.isRequired,
diff --git a/frontend/src/Artist/Details/ArtistDetailsConnector.js b/frontend/src/Artist/Details/ArtistDetailsConnector.js
index 29efad73d..5a0c15a78 100644
--- a/frontend/src/Artist/Details/ArtistDetailsConnector.js
+++ b/frontend/src/Artist/Details/ArtistDetailsConnector.js
@@ -1,3 +1,4 @@
+/* eslint max-params: 0 */
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
diff --git a/frontend/src/Artist/Details/ArtistDetailsLinks.js b/frontend/src/Artist/Details/ArtistDetailsLinks.js
index 655b6b294..23941d06b 100644
--- a/frontend/src/Artist/Details/ArtistDetailsLinks.js
+++ b/frontend/src/Artist/Details/ArtistDetailsLinks.js
@@ -43,7 +43,7 @@ function ArtistDetailsLinks(props) {
{(index > 0 && index % 5 === 0) &&
-
+
}
diff --git a/frontend/src/Artist/Details/ArtistDetailsSeason.js b/frontend/src/Artist/Details/ArtistDetailsSeason.js
index 1d4a762b3..c8f37dae6 100644
--- a/frontend/src/Artist/Details/ArtistDetailsSeason.js
+++ b/frontend/src/Artist/Details/ArtistDetailsSeason.js
@@ -2,18 +2,11 @@ import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import isAfter from 'Utilities/Date/isAfter';
-import isBefore from 'Utilities/Date/isBefore';
import getToggledRange from 'Utilities/Table/getToggledRange';
-import { align, icons, kinds, sizes } from 'Helpers/Props';
+import { icons } from 'Helpers/Props';
import Icon from 'Components/Icon';
import IconButton from 'Components/Link/IconButton';
import Link from 'Components/Link/Link';
-import SpinnerIcon from 'Components/SpinnerIcon';
-import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
-import Menu from 'Components/Menu/Menu';
-import MenuButton from 'Components/Menu/MenuButton';
-import MenuContent from 'Components/Menu/MenuContent';
-import MenuItem from 'Components/Menu/MenuItem';
import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody';
import TrackFileEditorModal from 'TrackFile/Editor/TrackFileEditorModal';
@@ -119,13 +112,10 @@ class ArtistDetailsSeason extends Component {
label,
items,
columns,
- isSaving,
isExpanded,
- isSearching,
artistMonitored,
isSmallScreen,
- onTableOptionChange,
- onSearchPress
+ onTableOptionChange
} = this.props;
const {
@@ -237,15 +227,12 @@ ArtistDetailsSeason.propTypes = {
label: PropTypes.string.isRequired,
items: PropTypes.arrayOf(PropTypes.object).isRequired,
columns: PropTypes.arrayOf(PropTypes.object).isRequired,
- isSaving: PropTypes.bool,
isExpanded: PropTypes.bool,
- isSearching: PropTypes.bool.isRequired,
artistMonitored: PropTypes.bool.isRequired,
isSmallScreen: PropTypes.bool.isRequired,
onTableOptionChange: PropTypes.func.isRequired,
onExpandPress: PropTypes.func.isRequired,
- onMonitorAlbumPress: PropTypes.func.isRequired,
- onSearchPress: PropTypes.func.isRequired
+ onMonitorAlbumPress: PropTypes.func.isRequired
};
export default ArtistDetailsSeason;
diff --git a/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js b/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js
index df705b405..bc2bbd508 100644
--- a/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js
+++ b/frontend/src/Artist/Details/ArtistDetailsSeasonConnector.js
@@ -1,3 +1,4 @@
+/* eslint max-params: 0 */
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
@@ -20,11 +21,6 @@ function createMapStateToProps() {
createCommandsSelector(),
createDimensionsSelector(),
(label, episodes, artist, commands, dimensions) => {
- const isSearching = !!findCommand(commands, {
- name: commandNames.SEASON_SEARCH,
- artistId: artist.id,
- label
- });
const episodesInSeason = _.filter(episodes.items, { albumType: label });
const sortedEpisodes = _.orderBy(episodesInSeason, 'releaseDate', 'desc');
@@ -32,7 +28,6 @@ function createMapStateToProps() {
return {
items: sortedEpisodes,
columns: episodes.columns,
- isSearching,
artistMonitored: artist.monitored,
isSmallScreen: dimensions.isSmallScreen
};
@@ -55,17 +50,6 @@ class ArtistDetailsSeasonConnector extends Component {
this.props.setEpisodesTableOption(payload);
}
- onSearchPress = () => {
- const {
- artistId
- } = this.props;
-
- this.props.executeCommand({
- name: commandNames.SEASON_SEARCH,
- artistId
- });
- }
-
onMonitorAlbumPress = (albumIds, monitored) => {
this.props.toggleEpisodesMonitored({
albumIds,
@@ -81,8 +65,6 @@ class ArtistDetailsSeasonConnector extends Component {