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

@ -1,13 +1,21 @@
import ReactGA from 'react-ga';
import { arrayOf } from '../../util/arrays';
import { uriSource, upgradeSpotifyPlaylistUris } from '../../util/helpers';
import {
formatTracks,
formatTrack,
formatSimpleObject,
formatAlbum,
formatArtist,
formatPlaylist,
formatUser,
} from '../../util/format';
const coreActions = require('./actions.js');
const uiActions = require('../ui/actions.js');
const pusherActions = require('../pusher/actions.js');
const mopidyActions = require('../mopidy/actions.js');
const spotifyActions = require('../spotify/actions.js');
const lastfmActions = require('../lastfm/actions.js');
const helpers = require('../../helpers.js');
const CoreMiddleware = (function () {
/**
@ -215,8 +223,8 @@ const CoreMiddleware = (function () {
* */
case 'PLAYLIST_TRACKS':
var tracks = helpers.formatTracks(action.tracks);
action.tracks_uris = helpers.arrayOf('uri', tracks);
var tracks = formatTracks(action.tracks);
action.tracks_uris = arrayOf('uri', tracks);
store.dispatch({
type: 'TRACKS_LOADED',
@ -228,7 +236,7 @@ const CoreMiddleware = (function () {
case 'PLAYLIST_TRACKS_ADDED':
store.dispatch(uiActions.createNotification({ level: 'warning', content: `Added ${action.tracks_uris.length} tracks to playlist` }));
switch (helpers.uriSource(action.key)) {
switch (uriSource(action.key)) {
case 'spotify':
store.dispatch(spotifyActions.getPlaylist(action.key));
break;
@ -318,7 +326,7 @@ const CoreMiddleware = (function () {
break;
}
switch (helpers.uriSource(action.uri)) {
switch (uriSource(action.uri)) {
case 'spotify':
store.dispatch(spotifyActions.getTrack(action.uri));
@ -346,7 +354,7 @@ const CoreMiddleware = (function () {
break;
}
switch (helpers.uriSource(action.uri)) {
switch (uriSource(action.uri)) {
case 'spotify':
store.dispatch(spotifyActions.getAlbum(action.uri));
@ -375,7 +383,7 @@ const CoreMiddleware = (function () {
break;
}
switch (helpers.uriSource(action.uri)) {
switch (uriSource(action.uri)) {
case 'spotify':
store.dispatch(spotifyActions.getArtist(action.uri, true));
@ -403,7 +411,7 @@ const CoreMiddleware = (function () {
break;
}
switch (helpers.uriSource(action.uri)) {
switch (uriSource(action.uri)) {
case 'spotify':
store.dispatch(spotifyActions.getPlaylist(action.uri));
@ -431,7 +439,7 @@ const CoreMiddleware = (function () {
break;
}
switch (helpers.uriSource(action.uri)) {
switch (uriSource(action.uri)) {
case 'spotify':
store.dispatch(spotifyActions.getUser(action.uri));
@ -457,7 +465,7 @@ const CoreMiddleware = (function () {
break;
}
switch (helpers.uriSource(action.uri)) {
switch (uriSource(action.uri)) {
case 'spotify':
store.dispatch(spotifyActions.getUserPlaylists(action.uri));
break;
@ -478,13 +486,13 @@ const CoreMiddleware = (function () {
case 'CURRENT_TRACK_LOADED':
store.dispatch(coreActions.trackLoaded(action.track));
action.track = helpers.formatTrack(action.track);
action.track = formatTrack(action.track);
next(action);
break;
case 'QUEUE_LOADED':
store.dispatch(coreActions.tracksLoaded(action.tracks));
action.tracks = helpers.formatTracks(action.tracks);
action.tracks = formatTracks(action.tracks);
next(action);
break;
@ -497,31 +505,25 @@ const CoreMiddleware = (function () {
var albums_loaded = [];
for (const raw_track of action.tracks) {
var track = helpers.formatTrack(raw_track);
var track = formatTrack(raw_track);
if (tracks_index[track.uri] !== undefined) {
track = { ...tracks_index[track.uri], ...track };
}
if (raw_track.album) {
track.album = helpers.formatSimpleObject(raw_track.album);
track.album = formatSimpleObject(raw_track.album);
if (!albums_index[raw_track.album.uri]) {
albums_loaded.push(raw_track.album);
}
// Copy the images to the track
/*
if (raw_track.album.images){
track.images = helpers.digestMopidyImages(store.getState().mopidy, raw_track.album.images);
} */
}
if (raw_track.artists && raw_track.artists.length > 0) {
track.artists = [];
for (var artist of raw_track.artists) {
track.artists.push(helpers.formatSimpleObject(artist));
track.artists.push(formatSimpleObject(artist));
// Not already in our index, so let's add it
if (!artists_index[artist.uri]) {
@ -552,22 +554,18 @@ const CoreMiddleware = (function () {
var tracks_loaded = [];
for (const raw_album of action.albums) {
let album = helpers.formatAlbum(raw_album);
let album = formatAlbum(raw_album);
if (albums_index[album.uri]) {
album = { ...albums_index[album.uri], ...album };
}
/*
if (raw_album.images && raw_album.images.length > 0){
album.images = helpers.digestMopidyImages(store.getState().mopidy, raw_album.images);
} */
if (raw_album.tracks) {
album.tracks_uris = [];
for (var track of raw_album.tracks) {
if (!track.album) {
track.album = helpers.formatSimpleObject(album);
track.album = formatSimpleObject(album);
}
album.tracks_uris.push(track.uri);
tracks_loaded.push(track);
@ -575,7 +573,7 @@ const CoreMiddleware = (function () {
}
if (raw_album.artists) {
album.artists_uris = helpers.arrayOf('uri', raw_album.artists);
album.artists_uris = arrayOf('uri', raw_album.artists);
artists_loaded = [...artists_loaded, ...raw_album.artists];
}
@ -600,7 +598,7 @@ const CoreMiddleware = (function () {
var tracks_loaded = [];
for (const raw_artist of action.artists) {
var artist = helpers.formatArtist(raw_artist);
var artist = formatArtist(raw_artist);
// Already have an artist in the index
if (artists_index[artist.uri]) {
@ -631,8 +629,8 @@ const CoreMiddleware = (function () {
// Migrate nested tracks objects into references to our tracks index
if (raw_artist.tracks) {
var tracks = helpers.formatTracks(raw_artist.tracks);
var tracks_uris = helpers.arrayOf('uri', tracks);
var tracks = formatTracks(raw_artist.tracks);
var tracks_uris = arrayOf('uri', tracks);
artist.tracks_uris = tracks_uris;
tracks_loaded = [...tracks_loaded, ...tracks];
}
@ -655,10 +653,10 @@ const CoreMiddleware = (function () {
var tracks_loaded = [];
for (var playlist of action.playlists) {
playlist = helpers.formatPlaylist(playlist);
playlist = formatPlaylist(playlist);
// Detect editability
switch (helpers.uriSource(playlist.uri)) {
switch (uriSource(playlist.uri)) {
case 'm3u':
playlist.can_edit = true;
break;
@ -681,8 +679,8 @@ const CoreMiddleware = (function () {
// Load our tracks
if (playlist.tracks) {
var tracks = helpers.formatTracks(playlist.tracks);
var tracks_uris = helpers.arrayOf('uri', tracks);
var tracks = formatTracks(playlist.tracks);
var tracks_uris = arrayOf('uri', tracks);
playlist.tracks_uris = tracks_uris;
delete playlist.tracks;
tracks_loaded = [...tracks_loaded, ...tracks];
@ -706,7 +704,7 @@ const CoreMiddleware = (function () {
var users_loaded = [];
for (let user of action.users) {
user = helpers.formatUser(user);
user = formatUser(user);
if (users_index[user.uri]) {
user = { ...users_index[user.uri], ...user };
@ -753,12 +751,12 @@ const CoreMiddleware = (function () {
// Pre-emptively format tracks
// Providers give us tracks in all kinds of structures, so this cleans things first
if (action.records_type == 'track') {
records = helpers.formatTracks(records);
records = formatTracks(records);
}
var records_type_plural = `${action.records_type}s`;
var records_index = {};
var records_uris = helpers.arrayOf('uri', records);
var records_uris = arrayOf('uri', records);
// Merge any extra data (eg more_track's albums)
if (action.extra_data) {
@ -768,7 +766,7 @@ const CoreMiddleware = (function () {
// If we're a list of playlists, we need to manually filter Spotify's new URI structure
// Really poor form because they haven't updated it everywhere, yet
if (action.records_type == 'playlist') {
records_uris = helpers.upgradeSpotifyPlaylistUris(records_uris);
records_uris = upgradeSpotifyPlaylistUris(records_uris);
}
// Append our parent object's reference to these records