Splitting out helpers into separate files

This commit is contained in:
James Barnsley
2020-03-03 16:39:37 +13:00
parent 57dd18e870
commit 5a1f08fdf0
105 changed files with 5456 additions and 5574 deletions

View File

@ -2,21 +2,17 @@
import React from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Header from '../../components/Header';
import Icon from '../../components/Icon';
import CategoryGrid from '../../components/CategoryGrid';
import Loader from '../../components/Loader';
import * as helpers from '../../helpers';
import * as uiActions from '../../services/ui/actions';
import * as spotifyActions from '../../services/spotify/actions';
import {
isLoading,
} from '../../util/helpers';
class DiscoverCategories extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
// Check for an empty category index, or where we've only got one loaded
// This would be the case if you've refreshed from within a category and only loaded
@ -28,7 +24,7 @@ class DiscoverCategories extends React.Component {
}
render() {
if (helpers.isLoading(this.props.load_queue, ['spotify_browse/categories'])) {
if (isLoading(this.props.load_queue, ['spotify_browse/categories'])) {
return (
<div className="view discover-categories-view">
<Header icon="grid" title="Genre / Mood" />

View File

@ -2,22 +2,17 @@
import React from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Header from '../../components/Header';
import Icon from '../../components/Icon';
import PlaylistGrid from '../../components/PlaylistGrid';
import LazyLoadListener from '../../components/LazyLoadListener';
import Loader from '../../components/Loader';
import * as helpers from '../../helpers';
import * as uiActions from '../../services/ui/actions';
import * as spotifyActions from '../../services/spotify/actions';
import { isLoading } from '../../util/helpers';
import { collate } from '../../util/format';
class DiscoverCategory extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
this.loadCategory();
this.setWindowTitle();
@ -63,7 +58,7 @@ class DiscoverCategory extends React.Component {
}
render() {
if (helpers.isLoading(this.props.load_queue, ['spotify_browse/categories/'])) {
if (isLoading(this.props.load_queue, ['spotify_browse/categories/'])) {
return (
<div className="view discover-categories-view">
<Header>
@ -79,7 +74,7 @@ class DiscoverCategory extends React.Component {
return null;
}
const category = helpers.collate(this.props.category, { playlists: this.props.playlists });
const category = collate(this.props.category, { playlists: this.props.playlists });
return (
<div className="view discover-categories-view">

View File

@ -2,24 +2,17 @@
import React from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Link from '../../components/Link';
import PlaylistGrid from '../../components/PlaylistGrid';
import Header from '../../components/Header';
import Icon from '../../components/Icon';
import Parallax from '../../components/Parallax';
import Loader from '../../components/Loader';
import * as helpers from '../../helpers';
import * as uiActions from '../../services/ui/actions';
import * as mopidyActions from '../../services/mopidy/actions';
import * as spotifyActions from '../../services/spotify/actions';
import { isLoading } from '../../util/helpers';
class DiscoverFeatured extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
this.props.uiActions.setWindowTitle('Featured playlists');
if (!this.props.featured_playlists) {
@ -58,7 +51,7 @@ class DiscoverFeatured extends React.Component {
}
render() {
if (helpers.isLoading(this.props.load_queue, ['spotify_browse/featured-playlists'])) {
if (isLoading(this.props.load_queue, ['spotify_browse/featured-playlists'])) {
return (
<div className="view discover-featured-view preserve-3d">
<Header className="overlay" uiActions={this.props.uiActions}>

View File

@ -2,25 +2,19 @@
import React from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Link from '../../components/Link';
import Header from '../../components/Header';
import Icon from '../../components/Icon';
import AlbumGrid from '../../components/AlbumGrid';
import Parallax from '../../components/Parallax';
import LazyLoadListener from '../../components/LazyLoadListener';
import Loader from '../../components/Loader';
import * as helpers from '../../helpers';
import * as uiActions from '../../services/ui/actions';
import * as mopidyActions from '../../services/mopidy/actions';
import * as spotifyActions from '../../services/spotify/actions';
import { isLoading } from '../../util/helpers';
import { collate } from '../../util/format';
class DiscoverNewReleases extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
this.props.uiActions.setWindowTitle('New releases');
@ -70,7 +64,7 @@ class DiscoverNewReleases extends React.Component {
}
render() {
if (helpers.isLoading(this.props.load_queue, ['spotify_browse/new-releases'])) {
if (isLoading(this.props.load_queue, ['spotify_browse/new-releases'])) {
return (
<div className="view discover-new-releases-view">
<Header>
@ -94,7 +88,7 @@ class DiscoverNewReleases extends React.Component {
// Pull the first playlist out and we'll use this as a banner
let first_album = albums[0];
if (first_album) {
first_album = helpers.collate(first_album, { artists: this.props.artists });
first_album = collate(first_album, { artists: this.props.artists });
}
const options = (

View File

@ -3,10 +3,6 @@ import React from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import InputRange from 'react-input-range';
import Header from '../../components/Header';
import LinksSentence from '../../components/LinksSentence';
import ArtistGrid from '../../components/ArtistGrid';
import AlbumGrid from '../../components/AlbumGrid';
import TrackList from '../../components/TrackList';
import Thumbnail from '../../components/Thumbnail';
@ -17,11 +13,16 @@ import URILink from '../../components/URILink';
import ContextMenuTrigger from '../../components/ContextMenuTrigger';
import RelatedArtists from '../../components/RelatedArtists';
import Icon from '../../components/Icon';
import * as helpers from '../../helpers';
import * as uiActions from '../../services/ui/actions';
import * as mopidyActions from '../../services/mopidy/actions';
import * as spotifyActions from '../../services/spotify/actions';
import {
isLoading,
getFromUri,
uriType,
titleCase,
} from '../../util/helpers';
import { arrayOf } from '../../util/arrays';
class Discover extends React.Component {
constructor(props) {
@ -190,7 +191,7 @@ class Discover extends React.Component {
e,
context: 'track',
items: tracks,
uris: helpers.arrayOf('uri', tracks),
uris: arrayOf('uri', tracks),
};
this.props.uiActions.showContextMenu(data);
}
@ -202,7 +203,7 @@ class Discover extends React.Component {
const seeds = seeds_string.split('_').join(':').split(',');
for (let i = 0; i < seeds.length; i++) {
switch (helpers.uriType(seeds[i])) {
switch (uriType(seeds[i])) {
case 'artist':
this.props.spotifyActions.getArtist(seeds[i]);
break;
@ -263,7 +264,7 @@ class Discover extends React.Component {
for (let i = 0; i < this.state.seeds.length; i++) {
const uri = this.state.seeds[i];
switch (helpers.uriType(uri)) {
switch (uriType(uri)) {
case 'track':
if (typeof (this.props.tracks[uri]) !== 'undefined') {
seeds_objects.push(this.props.tracks[uri]);
@ -287,7 +288,7 @@ class Discover extends React.Component {
break;
case 'genre':
var name = helpers.getFromUri('genreid', uri);
var name = getFromUri('genreid', uri);
seeds_objects.push({
name: (name.charAt(0).toUpperCase() + name.slice(1)).replace('-', ' '),
uri,
@ -301,7 +302,7 @@ class Discover extends React.Component {
<div className="seeds">
{
seeds_objects.map((seed, index) => {
const type = helpers.uriType(seed.uri);
const type = uriType(seed.uri);
let images = null;
if (seed.images) {
if (type == 'artist') {
@ -318,7 +319,7 @@ class Discover extends React.Component {
{images ? <URILink className="thumbnail-wrapper" type={type} uri={seed.uri}><Thumbnail images={images} circle={seed.type == 'artist'} size="small" /></URILink> : null}
<div className="seed__details">
<div className="seed__label">
<span className="seed__label__text">{helpers.titleCase(type)}</span>
<span className="seed__label__text">{titleCase(type)}</span>
<Icon name="close" className="seed__label__remove" onClick={() => this.removeSeed(index)} />
</div>
<div className="seed__label__name">{seed.name}</div>
@ -358,7 +359,7 @@ class Discover extends React.Component {
enabled_tunabilities.push(tunability);
} else {
addable_tunabilities.push({
label: helpers.titleCase(tunability.name),
label: titleCase(tunability.name),
value: tunability.name,
});
}
@ -370,7 +371,7 @@ class Discover extends React.Component {
{enabled_tunabilities.map((tunability) => (
<div className="field tunability range" key={tunability.name}>
<div className="tunability__label">
{helpers.titleCase(tunability.name)}
{titleCase(tunability.name)}
<span className="remove" onClick={(e) => this.toggleTunability(tunability.name)}>
<Icon name="close" />
</span>
@ -476,7 +477,7 @@ class Discover extends React.Component {
}
render() {
const is_loading = helpers.isLoading(this.props.load_queue, ['spotify_recommendations']);
const is_loading = isLoading(this.props.load_queue, ['spotify_recommendations']);
const addable_tunabilities = [];
for (const key in this.state.tunabilities) {
if (this.state.tunabilities.hasOwnProperty(key)) {
@ -488,7 +489,7 @@ class Discover extends React.Component {
if (!tunability.enabled) {
addable_tunabilities.push({
label: helpers.titleCase(tunability.name),
label: titleCase(tunability.name),
value: tunability.name,
});
}