Auto eslint fix
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -2,150 +2,147 @@
|
||||
import ReactGA from 'react-ga';
|
||||
import { sha256 } from 'js-sha256';
|
||||
|
||||
var helpers = require('./../../helpers');
|
||||
var coreActions = require('../core/actions');
|
||||
var spotifyActions = require('./actions');
|
||||
var uiActions = require('../ui/actions');
|
||||
var pusherActions = require('../pusher/actions');
|
||||
const helpers = require('./../../helpers');
|
||||
const coreActions = require('../core/actions');
|
||||
const spotifyActions = require('./actions');
|
||||
const uiActions = require('../ui/actions');
|
||||
const pusherActions = require('../pusher/actions');
|
||||
|
||||
const SpotifyMiddleware = (function(){
|
||||
return store => next => action => {
|
||||
var spotify = store.getState().spotify;
|
||||
const SpotifyMiddleware = (function () {
|
||||
return (store) => (next) => (action) => {
|
||||
const { spotify } = store.getState();
|
||||
|
||||
switch(action.type){
|
||||
|
||||
case 'SPOTIFY_AUTHORIZATION_GRANTED':
|
||||
if (store.getState().ui.allow_reporting){
|
||||
ReactGA.event({category: 'Spotify', action: 'Authorization granted'});
|
||||
switch (action.type) {
|
||||
case 'SPOTIFY_AUTHORIZATION_GRANTED':
|
||||
if (store.getState().ui.allow_reporting) {
|
||||
ReactGA.event({ category: 'Spotify', action: 'Authorization granted' });
|
||||
}
|
||||
|
||||
// Flush out the previous user's library
|
||||
store.dispatch(spotifyActions.flushLibrary());
|
||||
// Flush out the previous user's library
|
||||
store.dispatch(spotifyActions.flushLibrary());
|
||||
|
||||
next(action);
|
||||
break;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_AUTHORIZATION_REVOKED':
|
||||
if (store.getState().ui.allow_reporting){
|
||||
ReactGA.event({ category: 'Spotify', action: 'Authorization revoked'});
|
||||
case 'SPOTIFY_AUTHORIZATION_REVOKED':
|
||||
if (store.getState().ui.allow_reporting) {
|
||||
ReactGA.event({ category: 'Spotify', action: 'Authorization revoked' });
|
||||
}
|
||||
|
||||
next(action);
|
||||
next(action);
|
||||
|
||||
// Now dispatch a getMe to get the backend-provided user
|
||||
store.dispatch(spotifyActions.getMe());
|
||||
// Now dispatch a getMe to get the backend-provided user
|
||||
store.dispatch(spotifyActions.getMe());
|
||||
|
||||
// Flush out the previous user's library
|
||||
store.dispatch(spotifyActions.flushLibrary());
|
||||
// Flush out the previous user's library
|
||||
store.dispatch(spotifyActions.flushLibrary());
|
||||
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_IMPORT_AUTHORIZATION':
|
||||
case 'SPOTIFY_IMPORT_AUTHORIZATION':
|
||||
|
||||
// Flush out the previous user's library
|
||||
store.dispatch(spotifyActions.flushLibrary());
|
||||
// Flush out the previous user's library
|
||||
store.dispatch(spotifyActions.flushLibrary());
|
||||
|
||||
// Wait a few moments before we fetch, allowing the import to complete first
|
||||
// TODO: Use callbacks for better code accuracy
|
||||
setTimeout(() => {store.dispatch(spotifyActions.getMe())}, 100);
|
||||
// Wait a few moments before we fetch, allowing the import to complete first
|
||||
// TODO: Use callbacks for better code accuracy
|
||||
setTimeout(() => { store.dispatch(spotifyActions.getMe()); }, 100);
|
||||
|
||||
next(action);
|
||||
break;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_RECOMMENDATIONS_LOADED':
|
||||
if (store.getState().ui.allow_reporting && action.seeds_uris){
|
||||
ReactGA.event({ category: 'Spotify', action: 'Recommendations', label: action.seeds_uris.join(',') })
|
||||
}
|
||||
next(action)
|
||||
break;
|
||||
case 'SPOTIFY_RECOMMENDATIONS_LOADED':
|
||||
if (store.getState().ui.allow_reporting && action.seeds_uris) {
|
||||
ReactGA.event({ category: 'Spotify', action: 'Recommendations', label: action.seeds_uris.join(',') });
|
||||
}
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_USER_LOADED':
|
||||
if (store.getState().ui.allow_reporting && action.data){
|
||||
case 'SPOTIFY_USER_LOADED':
|
||||
if (store.getState().ui.allow_reporting && action.data) {
|
||||
ReactGA.event({ category: 'User', action: 'Load', label: action.data.uri });
|
||||
}
|
||||
next(action)
|
||||
break;
|
||||
}
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_CREATE_PLAYLIST':
|
||||
store.dispatch(spotifyActions.createPlaylist(action.name, action.description, action.is_private, action.is_collaborative ))
|
||||
break;
|
||||
case 'SPOTIFY_CREATE_PLAYLIST':
|
||||
store.dispatch(spotifyActions.createPlaylist(action.name, action.description, action.is_private, action.is_collaborative));
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_REMOVE_PLAYLIST_TRACKS':
|
||||
var playlist = Object.assign({}, store.getState().core.playlists[action.key]);
|
||||
store.dispatch(spotifyActions.deleteTracksFromPlaylist(playlist.uri, playlist.snapshot_id, action.tracks_indexes ))
|
||||
break;
|
||||
case 'SPOTIFY_REMOVE_PLAYLIST_TRACKS':
|
||||
var playlist = { ...store.getState().core.playlists[action.key] };
|
||||
store.dispatch(spotifyActions.deleteTracksFromPlaylist(playlist.uri, playlist.snapshot_id, action.tracks_indexes));
|
||||
break;
|
||||
|
||||
|
||||
case 'SPOTIFY_ADD_PLAYLIST_TRACKS':
|
||||
store.dispatch(spotifyActions.addTracksToPlaylist(action.key, action.tracks_uris ))
|
||||
break;
|
||||
case 'SPOTIFY_ADD_PLAYLIST_TRACKS':
|
||||
store.dispatch(spotifyActions.addTracksToPlaylist(action.key, action.tracks_uris));
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_REORDER_PLAYLIST_TRACKS':
|
||||
store.dispatch(spotifyActions.reorderPlaylistTracks(action.key, action.range_start, action.range_length, action.insert_before, action.snapshot_id ))
|
||||
break;
|
||||
case 'SPOTIFY_REORDER_PLAYLIST_TRACKS':
|
||||
store.dispatch(spotifyActions.reorderPlaylistTracks(action.key, action.range_start, action.range_length, action.insert_before, action.snapshot_id));
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_SAVE_PLAYLIST':
|
||||
store.dispatch(spotifyActions.savePlaylist(action.key, action.name, action.description, action.is_public, action.is_collaborative, action.image))
|
||||
break;
|
||||
case 'SPOTIFY_SAVE_PLAYLIST':
|
||||
store.dispatch(spotifyActions.savePlaylist(action.key, action.name, action.description, action.is_public, action.is_collaborative, action.image));
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_NEW_RELEASES_LOADED':
|
||||
store.dispatch({
|
||||
type: 'ALBUMS_LOADED',
|
||||
albums: action.data.albums.items
|
||||
});
|
||||
case 'SPOTIFY_NEW_RELEASES_LOADED':
|
||||
store.dispatch({
|
||||
type: 'ALBUMS_LOADED',
|
||||
albums: action.data.albums.items,
|
||||
});
|
||||
|
||||
// Collate result into the three key values we want
|
||||
action.uris = helpers.arrayOf('uri', action.data.albums.items);
|
||||
action.more = action.data.albums.next;
|
||||
action.total = action.data.albums.total;
|
||||
// Collate result into the three key values we want
|
||||
action.uris = helpers.arrayOf('uri', action.data.albums.items);
|
||||
action.more = action.data.albums.next;
|
||||
action.total = action.data.albums.total;
|
||||
|
||||
// And pass on to our reducer
|
||||
next(action);
|
||||
break
|
||||
// And pass on to our reducer
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_ARTIST_ALBUMS_LOADED':
|
||||
store.dispatch(coreActions.albumsLoaded(action.data.items));
|
||||
store.dispatch({
|
||||
type: 'ARTIST_ALBUMS_LOADED',
|
||||
artist_uri: action.artist_uri,
|
||||
albums_uris: helpers.arrayOf('uri',action.data.items),
|
||||
more: action.data.next,
|
||||
total: action.data.total
|
||||
});
|
||||
break
|
||||
case 'SPOTIFY_ARTIST_ALBUMS_LOADED':
|
||||
store.dispatch(coreActions.albumsLoaded(action.data.items));
|
||||
store.dispatch({
|
||||
type: 'ARTIST_ALBUMS_LOADED',
|
||||
artist_uri: action.artist_uri,
|
||||
albums_uris: helpers.arrayOf('uri', action.data.items),
|
||||
more: action.data.next,
|
||||
total: action.data.total,
|
||||
});
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_USER_PLAYLISTS_LOADED':
|
||||
var playlists = []
|
||||
for(var i = 0; i < action.data.items.length; i++){
|
||||
var playlist = Object.assign(
|
||||
{},
|
||||
action.data.items[i],
|
||||
{
|
||||
tracks_total: action.data.items[i].tracks.total
|
||||
}
|
||||
)
|
||||
case 'SPOTIFY_USER_PLAYLISTS_LOADED':
|
||||
var playlists = [];
|
||||
for (var i = 0; i < action.data.items.length; i++) {
|
||||
var playlist = {
|
||||
|
||||
// remove our tracklist. It'll overwrite any full records otherwise
|
||||
delete playlist.tracks
|
||||
...action.data.items[i],
|
||||
tracks_total: action.data.items[i].tracks.total,
|
||||
};
|
||||
|
||||
playlists.push(playlist)
|
||||
}
|
||||
// remove our tracklist. It'll overwrite any full records otherwise
|
||||
delete playlist.tracks;
|
||||
|
||||
store.dispatch({
|
||||
type: 'PLAYLISTS_LOADED',
|
||||
playlists: playlists
|
||||
});
|
||||
playlists.push(playlist);
|
||||
}
|
||||
|
||||
store.dispatch({
|
||||
type: 'USER_PLAYLISTS_LOADED',
|
||||
key: action.key,
|
||||
uris: helpers.arrayOf('uri',playlists),
|
||||
more: action.data.next,
|
||||
total: action.data.total
|
||||
});
|
||||
break
|
||||
store.dispatch({
|
||||
type: 'PLAYLISTS_LOADED',
|
||||
playlists,
|
||||
});
|
||||
|
||||
/*
|
||||
store.dispatch({
|
||||
type: 'USER_PLAYLISTS_LOADED',
|
||||
key: action.key,
|
||||
uris: helpers.arrayOf('uri', playlists),
|
||||
more: action.data.next,
|
||||
total: action.data.total,
|
||||
});
|
||||
break;
|
||||
|
||||
/*
|
||||
|
||||
case 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED':
|
||||
var playlists = []
|
||||
@ -179,305 +176,299 @@ const SpotifyMiddleware = (function(){
|
||||
break
|
||||
*/
|
||||
|
||||
case 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED':
|
||||
store.dispatch(coreActions.playlistsLoaded(action.playlists.items));
|
||||
|
||||
action.uris = helpers.arrayOf('uri', action.playlists.items);
|
||||
action.more = action.playlists.next;
|
||||
action.total = action.playlists.total;
|
||||
delete action.playlists;
|
||||
case 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED':
|
||||
store.dispatch(coreActions.playlistsLoaded(action.playlists.items));
|
||||
|
||||
// Upgrade our URIs
|
||||
action.uris = helpers.upgradeSpotifyPlaylistUris(action.uris);
|
||||
action.uris = helpers.arrayOf('uri', action.playlists.items);
|
||||
action.more = action.playlists.next;
|
||||
action.total = action.playlists.total;
|
||||
delete action.playlists;
|
||||
|
||||
next(action);
|
||||
break;
|
||||
// Upgrade our URIs
|
||||
action.uris = helpers.upgradeSpotifyPlaylistUris(action.uris);
|
||||
|
||||
case 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED_MORE':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED',
|
||||
uri: action.uri,
|
||||
playlists: action.data.playlists
|
||||
});
|
||||
break;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_CATEGORY_LOADED':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_CATEGORIES_LOADED',
|
||||
categories: [action.category]
|
||||
});
|
||||
break;
|
||||
case 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED_MORE':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED',
|
||||
uri: action.uri,
|
||||
playlists: action.data.playlists,
|
||||
});
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_CATEGORIES_LOADED':
|
||||
var categories_index = Object.assign({}, spotify.categories);
|
||||
var categories_loaded = [];
|
||||
case 'SPOTIFY_CATEGORY_LOADED':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_CATEGORIES_LOADED',
|
||||
categories: [action.category],
|
||||
});
|
||||
break;
|
||||
|
||||
for (var raw_category of action.categories){
|
||||
var category = Object.assign({}, raw_category);
|
||||
case 'SPOTIFY_CATEGORIES_LOADED':
|
||||
var categories_index = { ...spotify.categories };
|
||||
var categories_loaded = [];
|
||||
|
||||
if (!category.uri){
|
||||
category.uri = "category:"+category.id;
|
||||
}
|
||||
for (const raw_category of action.categories) {
|
||||
let category = { ...raw_category };
|
||||
|
||||
if (categories_index[category.uri] !== undefined){
|
||||
category = Object.assign({}, categories_index[category.uri], category);
|
||||
}
|
||||
if (!category.uri) {
|
||||
category.uri = `category:${category.id}`;
|
||||
}
|
||||
|
||||
if (category.icons){
|
||||
category.icons = helpers.formatImages(category.icons);
|
||||
}
|
||||
if (categories_index[category.uri] !== undefined) {
|
||||
category = { ...categories_index[category.uri], ...category };
|
||||
}
|
||||
|
||||
categories_loaded.push(category);
|
||||
}
|
||||
if (category.icons) {
|
||||
category.icons = helpers.formatImages(category.icons);
|
||||
}
|
||||
|
||||
action.categories = categories_loaded;
|
||||
next(action);
|
||||
break;
|
||||
categories_loaded.push(category);
|
||||
}
|
||||
|
||||
case 'SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryPlaylistsProcessor(action.data))
|
||||
break
|
||||
action.categories = categories_loaded;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_LOADED':
|
||||
var playlists = []
|
||||
for (var playlist of action.playlists){
|
||||
Object.assign(
|
||||
playlist,
|
||||
{
|
||||
uri: playlist.uri.replace(/spotify:user:([^:]*?):/i, "spotify:"),
|
||||
can_edit: (store.getState().spotify.me && store.getState().spotify.me.id == playlist.owner.id),
|
||||
source: 'spotify',
|
||||
in_library: true, // assumed because we asked for library items
|
||||
tracks_total: playlist.tracks.total
|
||||
}
|
||||
);
|
||||
case 'SPOTIFY_GET_LIBRARY_PLAYLISTS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryPlaylistsProcessor(action.data));
|
||||
break;
|
||||
|
||||
// remove our tracklist. It'll overwrite any full records otherwise
|
||||
delete playlist.tracks
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_LOADED':
|
||||
var playlists = [];
|
||||
for (var playlist of action.playlists) {
|
||||
Object.assign(
|
||||
playlist,
|
||||
{
|
||||
uri: playlist.uri.replace(/spotify:user:([^:]*?):/i, 'spotify:'),
|
||||
can_edit: (store.getState().spotify.me && store.getState().spotify.me.id == playlist.owner.id),
|
||||
source: 'spotify',
|
||||
in_library: true, // assumed because we asked for library items
|
||||
tracks_total: playlist.tracks.total,
|
||||
},
|
||||
);
|
||||
|
||||
playlists.push(playlist)
|
||||
}
|
||||
// remove our tracklist. It'll overwrite any full records otherwise
|
||||
delete playlist.tracks;
|
||||
|
||||
store.dispatch({
|
||||
type: 'PLAYLISTS_LOADED',
|
||||
playlists: playlists
|
||||
});
|
||||
playlists.push(playlist);
|
||||
}
|
||||
|
||||
// Append our action with the uris. This gets handed down to subsequent middleware and our reducer.
|
||||
action.uris = helpers.arrayOf('uri',playlists)
|
||||
next(action)
|
||||
break
|
||||
store.dispatch({
|
||||
type: 'PLAYLISTS_LOADED',
|
||||
playlists,
|
||||
});
|
||||
|
||||
case 'SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryArtistsProcessor(action.data))
|
||||
break
|
||||
// Append our action with the uris. This gets handed down to subsequent middleware and our reducer.
|
||||
action.uris = helpers.arrayOf('uri', playlists);
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ARTISTS_LOADED':
|
||||
var artists = []
|
||||
for (var i = 0; i < action.artists.length; i++){
|
||||
artists.push(
|
||||
Object.assign(
|
||||
{},
|
||||
action.artists[i],
|
||||
{
|
||||
source: 'spotify',
|
||||
in_library: true // assumed because we asked for library items
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
store.dispatch({
|
||||
type: 'ARTISTS_LOADED',
|
||||
artists: artists
|
||||
});
|
||||
case 'SPOTIFY_GET_LIBRARY_ARTISTS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryArtistsProcessor(action.data));
|
||||
break;
|
||||
|
||||
// Append our action with the uris. This gets handed down to subsequent middleware and our reducer.
|
||||
action.uris = helpers.arrayOf('uri',artists)
|
||||
next(action)
|
||||
break
|
||||
case 'SPOTIFY_LIBRARY_ARTISTS_LOADED':
|
||||
var artists = [];
|
||||
for (var i = 0; i < action.artists.length; i++) {
|
||||
artists.push(
|
||||
{
|
||||
|
||||
case 'SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryAlbumsProcessor(action.data))
|
||||
break
|
||||
...action.artists[i],
|
||||
source: 'spotify',
|
||||
in_library: true, // assumed because we asked for library items
|
||||
|
||||
case 'SPOTIFY_GET_LIBRARY_TRACKS_AND_PLAY_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryTracksAndPlayProcessor(action.data))
|
||||
break
|
||||
},
|
||||
);
|
||||
}
|
||||
store.dispatch({
|
||||
type: 'ARTISTS_LOADED',
|
||||
artists,
|
||||
});
|
||||
|
||||
case 'SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getAllPlaylistTracksProcessor(action.data))
|
||||
break
|
||||
// Append our action with the uris. This gets handed down to subsequent middleware and our reducer.
|
||||
action.uris = helpers.arrayOf('uri', artists);
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ALBUMS_LOADED':
|
||||
var albums = []
|
||||
for (var i = 0; i < action.albums.length; i++){
|
||||
albums.push(
|
||||
Object.assign(
|
||||
{},
|
||||
action.albums[i].album,
|
||||
{
|
||||
in_library: true, // assumed because we asked for library items
|
||||
source: 'spotify',
|
||||
added_at: action.albums[i].added_at,
|
||||
tracks: action.albums[i].album.tracks.items,
|
||||
tracks_more: action.albums[i].album.tracks.next,
|
||||
tracks_total: action.albums[i].album.tracks.total
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
case 'SPOTIFY_GET_LIBRARY_ALBUMS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryAlbumsProcessor(action.data));
|
||||
break;
|
||||
|
||||
store.dispatch({
|
||||
type: 'ALBUMS_LOADED',
|
||||
albums: albums
|
||||
});
|
||||
case 'SPOTIFY_GET_LIBRARY_TRACKS_AND_PLAY_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getLibraryTracksAndPlayProcessor(action.data));
|
||||
break;
|
||||
|
||||
// Append our action with the uris. This gets handed down to subsequent middleware and our reducer.
|
||||
action.uris = helpers.arrayOf('uri',albums)
|
||||
next(action)
|
||||
break
|
||||
case 'SPOTIFY_GET_ALL_PLAYLIST_TRACKS_PROCESSOR':
|
||||
store.dispatch(spotifyActions.getAllPlaylistTracksProcessor(action.data));
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_FAVORITES_LOADED':
|
||||
if (action.artists.length > 0){
|
||||
store.dispatch({
|
||||
type: 'ARTISTS_LOADED',
|
||||
artists: action.artists
|
||||
})
|
||||
action.artists_uris = helpers.arrayOf('uri',action.artists)
|
||||
}
|
||||
if (action.tracks.length > 0){
|
||||
store.dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: action.tracks
|
||||
})
|
||||
action.tracks_uris = helpers.arrayOf('uri',action.tracks)
|
||||
}
|
||||
next(action)
|
||||
break
|
||||
case 'SPOTIFY_LIBRARY_ALBUMS_LOADED':
|
||||
var albums = [];
|
||||
for (var i = 0; i < action.albums.length; i++) {
|
||||
albums.push(
|
||||
{
|
||||
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED':
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED_MORE':
|
||||
if (action.data){
|
||||
store.dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: action.data.items
|
||||
});
|
||||
}
|
||||
next(action);
|
||||
break;
|
||||
...action.albums[i].album,
|
||||
in_library: true, // assumed because we asked for library items
|
||||
source: 'spotify',
|
||||
added_at: action.albums[i].added_at,
|
||||
tracks: action.albums[i].album.tracks.items,
|
||||
tracks_more: action.albums[i].album.tracks.next,
|
||||
tracks_total: action.albums[i].album.tracks.total,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
case 'SPOTIFY_TRACK_LOADED':
|
||||
store.dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: [action.data]
|
||||
});
|
||||
next(action);
|
||||
break
|
||||
store.dispatch({
|
||||
type: 'ALBUMS_LOADED',
|
||||
albums,
|
||||
});
|
||||
|
||||
// Append our action with the uris. This gets handed down to subsequent middleware and our reducer.
|
||||
action.uris = helpers.arrayOf('uri', albums);
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_FAVORITES_LOADED':
|
||||
if (action.artists.length > 0) {
|
||||
store.dispatch({
|
||||
type: 'ARTISTS_LOADED',
|
||||
artists: action.artists,
|
||||
});
|
||||
action.artists_uris = helpers.arrayOf('uri', action.artists);
|
||||
}
|
||||
if (action.tracks.length > 0) {
|
||||
store.dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: action.tracks,
|
||||
});
|
||||
action.tracks_uris = helpers.arrayOf('uri', action.tracks);
|
||||
}
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED':
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED_MORE':
|
||||
if (action.data) {
|
||||
store.dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: action.data.items,
|
||||
});
|
||||
}
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_TRACK_LOADED':
|
||||
store.dispatch({
|
||||
type: 'TRACKS_LOADED',
|
||||
tracks: [action.data],
|
||||
});
|
||||
next(action);
|
||||
break;
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Searching
|
||||
* More results are lazy-loaded on demand, based on the _more URL
|
||||
**/
|
||||
* */
|
||||
|
||||
case 'SEARCH_STARTED':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_CLEAR_SEARCH_RESULTS'
|
||||
});
|
||||
next(action);
|
||||
break
|
||||
case 'SEARCH_STARTED':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_CLEAR_SEARCH_RESULTS',
|
||||
});
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_TRACKS':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'tracks',
|
||||
results: helpers.formatTracks(action.data.tracks.items),
|
||||
more: action.data.tracks.next
|
||||
});
|
||||
break
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_TRACKS':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'tracks',
|
||||
results: helpers.formatTracks(action.data.tracks.items),
|
||||
more: action.data.tracks.next,
|
||||
});
|
||||
break;
|
||||
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ARTISTS':
|
||||
|
||||
store.dispatch({
|
||||
type: 'ARTISTS_LOADED',
|
||||
artists: action.data.artists.items
|
||||
});
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ARTISTS':
|
||||
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'artists',
|
||||
results: helpers.arrayOf('uri',action.data.playlists.items),
|
||||
more: action.data.playlists.next
|
||||
});
|
||||
break
|
||||
store.dispatch({
|
||||
type: 'ARTISTS_LOADED',
|
||||
artists: action.data.artists.items,
|
||||
});
|
||||
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ALBUMS':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'artists',
|
||||
results: helpers.arrayOf('uri', action.data.playlists.items),
|
||||
more: action.data.playlists.next,
|
||||
});
|
||||
break;
|
||||
|
||||
store.dispatch({
|
||||
type: 'ALBUMS_LOADED',
|
||||
albums: action.data.albums.items
|
||||
});
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_ALBUMS':
|
||||
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'playlists',
|
||||
results: helpers.arrayOf('uri',action.data.albums.items),
|
||||
more: action.data.albums.next
|
||||
});
|
||||
break
|
||||
store.dispatch({
|
||||
type: 'ALBUMS_LOADED',
|
||||
albums: action.data.albums.items,
|
||||
});
|
||||
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_PLAYLISTS':
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'playlists',
|
||||
results: helpers.arrayOf('uri', action.data.albums.items),
|
||||
more: action.data.albums.next,
|
||||
});
|
||||
break;
|
||||
|
||||
var playlists = []
|
||||
for (var i = 0; i < action.data.playlists.items.length; i++){
|
||||
playlists.push(Object.assign(
|
||||
{},
|
||||
action.data.playlists.items[i],
|
||||
{
|
||||
tracks_total: action.data.playlists.items[i].tracks.total
|
||||
}
|
||||
))
|
||||
}
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED_MORE_PLAYLISTS':
|
||||
|
||||
store.dispatch({
|
||||
type: 'PLAYLISTS_LOADED',
|
||||
playlists: playlists
|
||||
});
|
||||
var playlists = [];
|
||||
for (var i = 0; i < action.data.playlists.items.length; i++) {
|
||||
playlists.push({
|
||||
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'playlists',
|
||||
results: helpers.arrayOf('uri',action.data.playlists.items),
|
||||
more: action.data.playlists.next
|
||||
});
|
||||
break
|
||||
...action.data.playlists.items[i],
|
||||
tracks_total: action.data.playlists.items[i].tracks.total,
|
||||
});
|
||||
}
|
||||
|
||||
store.dispatch({
|
||||
type: 'PLAYLISTS_LOADED',
|
||||
playlists,
|
||||
});
|
||||
|
||||
store.dispatch({
|
||||
type: 'SPOTIFY_SEARCH_RESULTS_LOADED',
|
||||
context: 'playlists',
|
||||
results: helpers.arrayOf('uri', action.data.playlists.items),
|
||||
more: action.data.playlists.next,
|
||||
});
|
||||
break;
|
||||
|
||||
|
||||
case 'SPOTIFY_ME_LOADED':
|
||||
var me = Object.assign({}, helpers.formatUser(action.me));
|
||||
case 'SPOTIFY_ME_LOADED':
|
||||
var me = { ...helpers.formatUser(action.me) };
|
||||
|
||||
// We are Anonymous currently so use 'me' name as my Pusher username
|
||||
if (store.getState().pusher.username == 'Anonymous'){
|
||||
store.dispatch(pusherActions.setUsername(me.name));
|
||||
}
|
||||
// We are Anonymous currently so use 'me' name as my Pusher username
|
||||
if (store.getState().pusher.username == 'Anonymous') {
|
||||
store.dispatch(pusherActions.setUsername(me.name));
|
||||
}
|
||||
|
||||
if (store.getState().ui.allow_reporting){
|
||||
var hashed_username = sha256(me.id);
|
||||
ReactGA.set({userId: hashed_username});
|
||||
ReactGA.event({category: 'Spotify', action: 'Authorization verified', label: hashed_username});
|
||||
if (store.getState().ui.allow_reporting) {
|
||||
const hashed_username = sha256(me.id);
|
||||
ReactGA.set({ userId: hashed_username });
|
||||
ReactGA.event({ category: 'Spotify', action: 'Authorization verified', label: hashed_username });
|
||||
}
|
||||
|
||||
store.dispatch(coreActions.userLoaded(me));
|
||||
action.me = me;
|
||||
next(action);
|
||||
break;
|
||||
store.dispatch(coreActions.userLoaded(me));
|
||||
action.me = me;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
// This action is irrelevant to us, pass it on to the next middleware
|
||||
default:
|
||||
return next(action);
|
||||
}
|
||||
// This action is irrelevant to us, pass it on to the next middleware
|
||||
default:
|
||||
return next(action);
|
||||
}
|
||||
};
|
||||
}());
|
||||
|
||||
})();
|
||||
|
||||
export default SpotifyMiddleware
|
||||
export default SpotifyMiddleware;
|
||||
|
||||
@ -1,358 +1,347 @@
|
||||
|
||||
import * as helpers from '../../helpers'
|
||||
import * as helpers from '../../helpers';
|
||||
|
||||
export default function reducer(spotify = {}, action){
|
||||
switch (action.type){
|
||||
export default function reducer(spotify = {}, action) {
|
||||
switch (action.type) {
|
||||
case 'SPOTIFY_SET':
|
||||
return { ...spotify, ...action.data };
|
||||
|
||||
case 'SPOTIFY_SET':
|
||||
return Object.assign({},spotify,action.data)
|
||||
case 'PUSHER_SPOTIFY_TOKEN':
|
||||
if (spotify.authorization) return spotify;
|
||||
return {
|
||||
...spotify,
|
||||
authorizing: false,
|
||||
authorization: false,
|
||||
access_token: action.data.access_token,
|
||||
token_expiry: action.data.token_expiry,
|
||||
};
|
||||
|
||||
case 'PUSHER_SPOTIFY_TOKEN':
|
||||
if (spotify.authorization) return spotify;
|
||||
return Object.assign({}, spotify, {
|
||||
authorizing: false,
|
||||
authorization: false,
|
||||
access_token: action.data.access_token,
|
||||
token_expiry: action.data.token_expiry
|
||||
})
|
||||
case 'SPOTIFY_AUTHORIZATION_GRANTED':
|
||||
return {
|
||||
...spotify,
|
||||
enabled: true,
|
||||
authorizing: false,
|
||||
authorization: action.data,
|
||||
access_token: action.data.access_token,
|
||||
refresh_token: action.data.refresh_token,
|
||||
token_expiry: action.data.token_expiry,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_AUTHORIZATION_GRANTED':
|
||||
return Object.assign({}, spotify, {
|
||||
enabled: true,
|
||||
authorizing: false,
|
||||
authorization: action.data,
|
||||
access_token: action.data.access_token,
|
||||
refresh_token: action.data.refresh_token,
|
||||
token_expiry: action.data.token_expiry
|
||||
})
|
||||
case 'SPOTIFY_AUTHORIZATION_REVOKED':
|
||||
return {
|
||||
...spotify,
|
||||
authorizing: false,
|
||||
authorization: false,
|
||||
access_token: false,
|
||||
refresh_token: false,
|
||||
token_expiry: 0,
|
||||
me: false,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_AUTHORIZATION_REVOKED':
|
||||
return Object.assign({}, spotify, {
|
||||
authorizing: false,
|
||||
authorization: false,
|
||||
access_token: false,
|
||||
refresh_token: false,
|
||||
token_expiry: 0,
|
||||
me: false
|
||||
})
|
||||
case 'SPOTIFY_IMPORT_AUTHORIZATION':
|
||||
return {
|
||||
...spotify,
|
||||
authorizing: false,
|
||||
authorization: action.authorization,
|
||||
access_token: action.authorization.access_token,
|
||||
refresh_token: action.authorization.refresh_token,
|
||||
token_expiry: action.authorization.token_expiry,
|
||||
me: action.me,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_IMPORT_AUTHORIZATION':
|
||||
return Object.assign({}, spotify, {
|
||||
authorizing: false,
|
||||
authorization: action.authorization,
|
||||
access_token: action.authorization.access_token,
|
||||
refresh_token: action.authorization.refresh_token,
|
||||
token_expiry: action.authorization.token_expiry,
|
||||
me: action.me
|
||||
});
|
||||
case 'SPOTIFY_TOKEN_REFRESHING':
|
||||
return { ...spotify, refreshing_token: true };
|
||||
|
||||
case 'SPOTIFY_TOKEN_REFRESHING':
|
||||
return Object.assign({}, spotify, { refreshing_token: true })
|
||||
case 'SPOTIFY_TOKEN_REFRESHED':
|
||||
return {
|
||||
...spotify,
|
||||
refreshing_token: false,
|
||||
access_token: action.data.access_token,
|
||||
token_expiry: action.data.token_expiry,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_TOKEN_REFRESHED':
|
||||
return Object.assign({}, spotify, {
|
||||
refreshing_token: false,
|
||||
access_token: action.data.access_token,
|
||||
token_expiry: action.data.token_expiry
|
||||
});
|
||||
case 'SPOTIFY_TOKEN_CHANGED':
|
||||
return {
|
||||
...spotify,
|
||||
access_token: action.spotify_token.access_token,
|
||||
token_expiry: action.spotify_token.token_expiry,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_TOKEN_CHANGED':
|
||||
return Object.assign({}, spotify, {
|
||||
access_token: action.spotify_token.access_token,
|
||||
token_expiry: action.spotify_token.token_expiry
|
||||
});
|
||||
case 'SPOTIFY_ME_LOADED':
|
||||
return { ...spotify, me: action.me };
|
||||
|
||||
case 'SPOTIFY_ME_LOADED':
|
||||
return Object.assign({}, spotify, { me: action.me })
|
||||
|
||||
case 'SPOTIFY_FEATURED_PLAYLISTS_LOADED':
|
||||
return Object.assign({}, spotify, { featured_playlists: action.data })
|
||||
case 'SPOTIFY_FEATURED_PLAYLISTS_LOADED':
|
||||
return { ...spotify, featured_playlists: action.data };
|
||||
|
||||
|
||||
case 'SPOTIFY_NEW_RELEASES_LOADED':
|
||||
var new_releases = [];
|
||||
if (spotify.new_releases){
|
||||
case 'SPOTIFY_NEW_RELEASES_LOADED':
|
||||
var new_releases = [];
|
||||
if (spotify.new_releases) {
|
||||
new_releases = Object.assign([], spotify.new_releases);
|
||||
}
|
||||
return Object.assign({}, spotify, {
|
||||
new_releases: helpers.removeDuplicates([...new_releases, ...action.uris]),
|
||||
new_releases_more: action.more,
|
||||
new_releases_total: action.total
|
||||
});
|
||||
}
|
||||
return {
|
||||
...spotify,
|
||||
new_releases: helpers.removeDuplicates([...new_releases, ...action.uris]),
|
||||
new_releases_more: action.more,
|
||||
new_releases_total: action.total,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_DISCOVER_LOADED':
|
||||
if (!action.data ){
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
discover: []
|
||||
}
|
||||
);
|
||||
}
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
discover: [...spotify.discover, ...[action.data]]
|
||||
}
|
||||
);
|
||||
case 'SPOTIFY_DISCOVER_LOADED':
|
||||
if (!action.data) {
|
||||
return {
|
||||
|
||||
case 'CLEAR_SPOTIFY_RECOMMENDATIONS':
|
||||
return Object.assign({}, spotify, {recommendations: {artists_uris: [], albums_uris: [], tracks_uris: []}});
|
||||
...spotify,
|
||||
discover: [],
|
||||
};
|
||||
}
|
||||
return {
|
||||
|
||||
case 'SPOTIFY_RECOMMENDATIONS_LOADED':
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
recommendations: {
|
||||
artists_uris: action.artists_uris,
|
||||
albums_uris: action.albums_uris,
|
||||
tracks_uris: action.tracks_uris
|
||||
}
|
||||
});
|
||||
...spotify,
|
||||
discover: [...spotify.discover, ...[action.data]],
|
||||
};
|
||||
|
||||
case 'SPOTIFY_FAVORITES_LOADED':
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
favorite_artists: action.artists_uris,
|
||||
favorite_tracks: action.tracks_uris
|
||||
})
|
||||
case 'CLEAR_SPOTIFY_RECOMMENDATIONS':
|
||||
return { ...spotify, recommendations: { artists_uris: [], albums_uris: [], tracks_uris: [] } };
|
||||
|
||||
case 'SPOTIFY_AUTOCOMPLETE_LOADING':
|
||||
var autocomplete_results = spotify.autocomplete_results
|
||||
autocomplete_results[action.field_id] = {loading: true}
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
autocomplete_results: autocomplete_results
|
||||
})
|
||||
case 'SPOTIFY_RECOMMENDATIONS_LOADED':
|
||||
return {
|
||||
|
||||
case 'SPOTIFY_AUTOCOMPLETE_LOADED':
|
||||
var autocomplete_results = spotify.autocomplete_results
|
||||
autocomplete_results[action.field_id] = action.results
|
||||
autocomplete_results[action.field_id].loading = false
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
autocomplete_results: autocomplete_results
|
||||
})
|
||||
...spotify,
|
||||
recommendations: {
|
||||
artists_uris: action.artists_uris,
|
||||
albums_uris: action.albums_uris,
|
||||
tracks_uris: action.tracks_uris,
|
||||
},
|
||||
};
|
||||
|
||||
case 'SPOTIFY_AUTOCOMPLETE_CLEAR':
|
||||
var autocomplete_results = spotify.autocomplete_results
|
||||
if (typeof(autocomplete_results[action.field_id]) !== 'undefined'){
|
||||
delete autocomplete_results[action.field_id]
|
||||
}
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
autocomplete_results: autocomplete_results
|
||||
})
|
||||
case 'SPOTIFY_FAVORITES_LOADED':
|
||||
return {
|
||||
|
||||
case 'SPOTIFY_GENRES_LOADED':
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
genres: action.genres
|
||||
})
|
||||
...spotify,
|
||||
favorite_artists: action.artists_uris,
|
||||
favorite_tracks: action.tracks_uris,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_AUTOCOMPLETE_LOADING':
|
||||
var { autocomplete_results } = spotify;
|
||||
autocomplete_results[action.field_id] = { loading: true };
|
||||
return {
|
||||
|
||||
...spotify,
|
||||
autocomplete_results,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_AUTOCOMPLETE_LOADED':
|
||||
var { autocomplete_results } = spotify;
|
||||
autocomplete_results[action.field_id] = action.results;
|
||||
autocomplete_results[action.field_id].loading = false;
|
||||
return {
|
||||
|
||||
...spotify,
|
||||
autocomplete_results,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_AUTOCOMPLETE_CLEAR':
|
||||
var { autocomplete_results } = spotify;
|
||||
if (typeof (autocomplete_results[action.field_id]) !== 'undefined') {
|
||||
delete autocomplete_results[action.field_id];
|
||||
}
|
||||
return {
|
||||
|
||||
...spotify,
|
||||
autocomplete_results,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_GENRES_LOADED':
|
||||
return {
|
||||
|
||||
...spotify,
|
||||
genres: action.genres,
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Categories
|
||||
**/
|
||||
* */
|
||||
|
||||
case 'SPOTIFY_CATEGORIES_LOADED':
|
||||
var categories = Object.assign({}, spotify.categories);
|
||||
for (var category of action.categories){
|
||||
categories[category.uri] = category
|
||||
}
|
||||
return Object.assign({}, spotify, { categories: categories });
|
||||
case 'SPOTIFY_CATEGORIES_LOADED':
|
||||
var categories = { ...spotify.categories };
|
||||
for (var category of action.categories) {
|
||||
categories[category.uri] = category;
|
||||
}
|
||||
return { ...spotify, categories };
|
||||
|
||||
case 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED':
|
||||
var categories = Object.assign({}, spotify.categories)
|
||||
var playlists_uris = [];
|
||||
case 'SPOTIFY_CATEGORY_PLAYLISTS_LOADED':
|
||||
var categories = { ...spotify.categories };
|
||||
var playlists_uris = [];
|
||||
|
||||
if (categories[action.uri].playlists_uris){
|
||||
playlists_uris = categories[action.uri].playlists_uris;
|
||||
}
|
||||
if (categories[action.uri].playlists_uris) {
|
||||
playlists_uris = categories[action.uri].playlists_uris;
|
||||
}
|
||||
|
||||
var category = Object.assign(
|
||||
{},
|
||||
categories[action.uri],
|
||||
{
|
||||
playlists_uris: [...playlists_uris, ...action.uris],
|
||||
playlists_more: action.more,
|
||||
playlists_total: action.total
|
||||
}
|
||||
)
|
||||
categories[action.uri] = category
|
||||
return Object.assign({}, spotify, { categories: categories });
|
||||
var category = {
|
||||
|
||||
...categories[action.uri],
|
||||
playlists_uris: [...playlists_uris, ...action.uris],
|
||||
playlists_more: action.more,
|
||||
playlists_total: action.total,
|
||||
};
|
||||
categories[action.uri] = category;
|
||||
return { ...spotify, categories };
|
||||
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Library
|
||||
**/
|
||||
* */
|
||||
|
||||
case 'SPOTIFY_FLUSH_LIBRARY':
|
||||
return Object.assign(
|
||||
{},
|
||||
spotify,
|
||||
{
|
||||
library_playlists: null,
|
||||
library_playlists_loaded_all: null,
|
||||
library_playlists_status: null,
|
||||
library_albums: null,
|
||||
library_albums_status: null,
|
||||
library_albums_loaded_all: null,
|
||||
library_artists: null,
|
||||
library_artists_status: null,
|
||||
library_artists_loaded_all: null,
|
||||
library_tracks: null,
|
||||
library_tracks_status: null,
|
||||
library_tracks_loaded_all: null
|
||||
}
|
||||
)
|
||||
case 'SPOTIFY_FLUSH_LIBRARY':
|
||||
return {
|
||||
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_LOADED':
|
||||
if (spotify.library_playlists){
|
||||
var uris = [...spotify.library_playlists,...action.uris]
|
||||
} else {
|
||||
var uris = action.uris
|
||||
}
|
||||
return Object.assign({}, spotify, { library_playlists: helpers.removeDuplicates(uris) })
|
||||
...spotify,
|
||||
library_playlists: null,
|
||||
library_playlists_loaded_all: null,
|
||||
library_playlists_status: null,
|
||||
library_albums: null,
|
||||
library_albums_status: null,
|
||||
library_albums_loaded_all: null,
|
||||
library_artists: null,
|
||||
library_artists_status: null,
|
||||
library_artists_loaded_all: null,
|
||||
library_tracks: null,
|
||||
library_tracks_status: null,
|
||||
library_tracks_loaded_all: null,
|
||||
};
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ARTISTS_LOADED':
|
||||
if (spotify.library_artists){
|
||||
var uris = [...spotify.library_artists,...action.uris]
|
||||
} else {
|
||||
var uris = action.uris
|
||||
}
|
||||
return Object.assign({}, spotify, { library_artists: helpers.removeDuplicates(uris) })
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_LOADED':
|
||||
if (spotify.library_playlists) {
|
||||
var uris = [...spotify.library_playlists, ...action.uris];
|
||||
} else {
|
||||
var { uris } = action;
|
||||
}
|
||||
return { ...spotify, library_playlists: helpers.removeDuplicates(uris) };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ALBUMS_LOADED':
|
||||
if (spotify.library_albums){
|
||||
var uris = [...spotify.library_albums,...action.uris]
|
||||
} else {
|
||||
var uris = action.uris
|
||||
}
|
||||
return Object.assign({}, spotify, { library_albums: helpers.removeDuplicates(uris) })
|
||||
case 'SPOTIFY_LIBRARY_ARTISTS_LOADED':
|
||||
if (spotify.library_artists) {
|
||||
var uris = [...spotify.library_artists, ...action.uris];
|
||||
} else {
|
||||
var { uris } = action;
|
||||
}
|
||||
return { ...spotify, library_artists: helpers.removeDuplicates(uris) };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED':
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED_MORE':
|
||||
var tracks = action.data.items;
|
||||
var uris = [];
|
||||
case 'SPOTIFY_LIBRARY_ALBUMS_LOADED':
|
||||
if (spotify.library_albums) {
|
||||
var uris = [...spotify.library_albums, ...action.uris];
|
||||
} else {
|
||||
var { uris } = action;
|
||||
}
|
||||
return { ...spotify, library_albums: helpers.removeDuplicates(uris) };
|
||||
|
||||
if (tracks){
|
||||
tracks = helpers.formatTracks(tracks);
|
||||
uris = helpers.arrayOf('uri', tracks);
|
||||
if (spotify.library_tracks){
|
||||
uris = [...spotify.library_tracks, ...uris]
|
||||
}
|
||||
}
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED':
|
||||
case 'SPOTIFY_LIBRARY_TRACKS_LOADED_MORE':
|
||||
var tracks = action.data.items;
|
||||
var uris = [];
|
||||
|
||||
return Object.assign({}, spotify, {
|
||||
library_tracks: helpers.removeDuplicates(uris),
|
||||
library_tracks_more: action.data.next
|
||||
})
|
||||
if (tracks) {
|
||||
tracks = helpers.formatTracks(tracks);
|
||||
uris = helpers.arrayOf('uri', tracks);
|
||||
if (spotify.library_tracks) {
|
||||
uris = [...spotify.library_tracks, ...uris];
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...spotify,
|
||||
library_tracks: helpers.removeDuplicates(uris),
|
||||
library_tracks_more: action.data.next,
|
||||
};
|
||||
|
||||
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_LOADED_ALL':
|
||||
return Object.assign({}, spotify, { library_playlists_loaded_all: true })
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_LOADED_ALL':
|
||||
return { ...spotify, library_playlists_loaded_all: true };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_CLEAR':
|
||||
return Object.assign({}, spotify, { library_playlists: [] })
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_CLEAR':
|
||||
return { ...spotify, library_playlists: [] };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ARTISTS_CLEAR':
|
||||
return Object.assign({}, spotify, { library_artists: [] })
|
||||
case 'SPOTIFY_LIBRARY_ARTISTS_CLEAR':
|
||||
return { ...spotify, library_artists: [] };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ALBUMS_CLEAR':
|
||||
return Object.assign({}, spotify, { library_albums: [] })
|
||||
case 'SPOTIFY_LIBRARY_ALBUMS_CLEAR':
|
||||
return { ...spotify, library_albums: [] };
|
||||
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ALBUM_CHECK':
|
||||
var items = Object.assign([], spotify.library_albums)
|
||||
var index = items.indexOf(action.key)
|
||||
if (index > -1 && !action.in_library){
|
||||
items.splice(index, 1)
|
||||
} else if (index < 0 && action.in_library){
|
||||
items.push(action.key)
|
||||
}
|
||||
return Object.assign({}, spotify, { library_albums: items });
|
||||
case 'SPOTIFY_LIBRARY_ALBUM_CHECK':
|
||||
var items = Object.assign([], spotify.library_albums);
|
||||
var index = items.indexOf(action.key);
|
||||
if (index > -1 && !action.in_library) {
|
||||
items.splice(index, 1);
|
||||
} else if (index < 0 && action.in_library) {
|
||||
items.push(action.key);
|
||||
}
|
||||
return { ...spotify, library_albums: items };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_ARTIST_CHECK':
|
||||
var items = Object.assign([], spotify.library_artists)
|
||||
var index = items.indexOf(action.key)
|
||||
if (index > -1 && !action.in_library){
|
||||
items.splice(index, 1)
|
||||
} else if (index < 0 && action.in_library){
|
||||
items.push(action.key)
|
||||
}
|
||||
return Object.assign({}, spotify, { library_artists: items });
|
||||
case 'SPOTIFY_LIBRARY_ARTIST_CHECK':
|
||||
var items = Object.assign([], spotify.library_artists);
|
||||
var index = items.indexOf(action.key);
|
||||
if (index > -1 && !action.in_library) {
|
||||
items.splice(index, 1);
|
||||
} else if (index < 0 && action.in_library) {
|
||||
items.push(action.key);
|
||||
}
|
||||
return { ...spotify, library_artists: items };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_PLAYLIST_CHECK':
|
||||
var items = Object.assign([], spotify.library_playlists)
|
||||
var index = items.indexOf(action.key)
|
||||
if (index > -1 && !action.in_library){
|
||||
items.splice(index, 1)
|
||||
} else if (index < 0 && action.in_library){
|
||||
items.push(action.key)
|
||||
}
|
||||
return Object.assign({}, spotify, { library_playlists: items });
|
||||
case 'SPOTIFY_LIBRARY_PLAYLIST_CHECK':
|
||||
var items = Object.assign([], spotify.library_playlists);
|
||||
var index = items.indexOf(action.key);
|
||||
if (index > -1 && !action.in_library) {
|
||||
items.splice(index, 1);
|
||||
} else if (index < 0 && action.in_library) {
|
||||
items.push(action.key);
|
||||
}
|
||||
return { ...spotify, library_playlists: items };
|
||||
|
||||
case 'SPOTIFY_LIBRARY_TRACK_CHECK':
|
||||
var items = Object.assign([], spotify.library_tracks)
|
||||
var index = items.indexOf(action.key)
|
||||
if (index > -1 && !action.in_library) {
|
||||
items.splice(index, 1)
|
||||
} else if (index < 0 && action.in_library){
|
||||
items.push(action.key)
|
||||
}
|
||||
return Object.assign({}, spotify, { library_tracks: items });
|
||||
case 'SPOTIFY_LIBRARY_TRACK_CHECK':
|
||||
var items = Object.assign([], spotify.library_tracks);
|
||||
var index = items.indexOf(action.key);
|
||||
if (index > -1 && !action.in_library) {
|
||||
items.splice(index, 1);
|
||||
} else if (index < 0 && action.in_library) {
|
||||
items.push(action.key);
|
||||
}
|
||||
return { ...spotify, library_tracks: items };
|
||||
|
||||
|
||||
/**
|
||||
/**
|
||||
* Searching
|
||||
**/
|
||||
* */
|
||||
|
||||
case 'SPOTIFY_CLEAR_SEARCH_RESULTS':
|
||||
return Object.assign({}, spotify, { search_results: {} });
|
||||
case 'SPOTIFY_CLEAR_SEARCH_RESULTS':
|
||||
return { ...spotify, search_results: {} };
|
||||
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED':
|
||||
case 'SPOTIFY_SEARCH_RESULTS_LOADED':
|
||||
|
||||
// Fetch or create our container
|
||||
if (spotify.search_results){
|
||||
var search_results = Object.assign({}, spotify.search_results)
|
||||
} else {
|
||||
var search_results = {}
|
||||
}
|
||||
// Fetch or create our container
|
||||
if (spotify.search_results) {
|
||||
var search_results = { ...spotify.search_results };
|
||||
} else {
|
||||
var search_results = {};
|
||||
}
|
||||
|
||||
search_results.query = action.query;
|
||||
search_results.query = action.query;
|
||||
|
||||
if (search_results.results){
|
||||
search_results[action.context] = [...search_results[action.context], ...action.results]
|
||||
} else {
|
||||
search_results[action.context] = action.results
|
||||
}
|
||||
if (search_results.results) {
|
||||
search_results[action.context] = [...search_results[action.context], ...action.results];
|
||||
} else {
|
||||
search_results[action.context] = action.results;
|
||||
}
|
||||
|
||||
if (action.more){
|
||||
search_results[action.context+'_more'] = action.more
|
||||
} else {
|
||||
search_results[action.context+'_more'] = null
|
||||
}
|
||||
return Object.assign({}, spotify, { search_results: search_results });
|
||||
if (action.more) {
|
||||
search_results[`${action.context}_more`] = action.more;
|
||||
} else {
|
||||
search_results[`${action.context}_more`] = null;
|
||||
}
|
||||
return { ...spotify, search_results };
|
||||
|
||||
default:
|
||||
return spotify
|
||||
}
|
||||
default:
|
||||
return spotify;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user