Files
Iris/src/js/services/core/actions.js
2017-10-26 19:26:38 +13:00

268 lines
6.2 KiB
JavaScript
Executable File

import * as helpers from '../../helpers'
var spotifyActions = require('../../services/spotify/actions')
var mopidyActions = require('../../services/mopidy/actions')
export function getBroadcasts(){
return (dispatch, getState) => {
var config = {
method: 'GET',
timeout: 15000,
url: 'https://gist.githubusercontent.com/jaedb/b677dccf80daf3ccb2ef12e96e495677/raw'
}
$.ajax(config).then(
response => {
dispatch({
type: 'BROADCASTS_LOADED',
broadcasts: JSON.parse(response)
})
},
(xhr, status, error) => {
dispatch(
handleException(
'Could not fetch broadcasts from GitHub',
{
config: config,
xhr: xhr,
status: status,
error: error
}
)
);
}
)
}
}
export function startSearch(search_type, query, only_mopidy = false){
return {
type: 'SEARCH_STARTED',
search_type: search_type,
query: query,
only_mopidy: only_mopidy
}
}
export function handleException(message, data = {}, description = null){
return {
type: 'HANDLE_EXCEPTION',
message: message,
description: description,
data: data
}
}
export function debugResponse(response){
return {
type: 'DEBUG',
response: response
}
}
export function startServices(){
return {
type: 'CORE_START_SERVICES'
}
}
export function set(data){
return {
type: 'CORE_SET',
data: data
}
}
/**
* Playlist manipulation
**/
export function reorderPlaylistTracks(uri, indexes, insert_before, snapshot_id = false){
var range = helpers.createRange(indexes );
switch(helpers.uriSource(uri )){
case 'spotify':
return {
type: 'SPOTIFY_REORDER_PLAYLIST_TRACKS',
key: uri,
range_start: range.start,
range_length: range.length,
insert_before: insert_before,
snapshot_id: snapshot_id
}
case 'm3u':
return {
type: 'MOPIDY_REORDER_PLAYLIST_TRACKS',
key: uri,
range_start: range.start,
range_length: range.length,
insert_before: insert_before
}
}
}
export function savePlaylist(uri, name, description = '', is_public = false, is_collaborative = false){
switch (helpers.uriSource(uri)){
case 'spotify':
return {
type: 'SPOTIFY_SAVE_PLAYLIST',
key: uri,
name: name,
description: (description == '' ? null : description),
is_public: is_public,
is_collaborative: is_collaborative
}
case 'm3u':
return {
type: 'MOPIDY_SAVE_PLAYLIST',
key: uri,
name: name
}
}
return false
}
export function createPlaylist(scheme, name, description = '', is_public = false, is_collaborative = false){
switch (scheme){
case 'spotify':
if (description == ''){
description = null
}
return spotifyActions.createPlaylist(name, description, is_public, is_collaborative )
default:
return mopidyActions.createPlaylist(name, scheme)
}
return false
}
export function deletePlaylist(uri){
switch (helpers.uriSource(uri)){
case 'spotify':
return spotifyActions.following(uri, 'DELETE')
default:
return mopidyActions.deletePlaylist(uri)
}
return false
}
export function removeTracksFromPlaylist(uri, tracks_indexes){
switch(helpers.uriSource(uri )){
case 'spotify':
return {
type: 'SPOTIFY_REMOVE_PLAYLIST_TRACKS',
key: uri,
tracks_indexes: tracks_indexes
}
case 'm3u':
return {
type: 'MOPIDY_REMOVE_PLAYLIST_TRACKS',
key: uri,
tracks_indexes: tracks_indexes
}
}
}
export function addTracksToPlaylist(uri, tracks_uris){
switch(helpers.uriSource(uri )){
case 'spotify':
return {
type: 'SPOTIFY_ADD_PLAYLIST_TRACKS',
key: uri,
tracks_uris: tracks_uris
}
case 'm3u':
return {
type: 'MOPIDY_ADD_PLAYLIST_TRACKS',
key: uri,
tracks_uris: tracks_uris
}
}
}
/**
* Asset libraries
**/
export function getLibraryPlaylists(){
return {
type: 'GET_LIBRARY_PLAYLISTS'
}
}
export function getLibraryAlbums(){
return {
type: 'GET_LIBRARY_ALBUMS'
}
}
export function getLibraryArtists(){
return {
type: 'GET_LIBRARY_ARTISTS'
}
}
/**
* Assets loaded
**/
export function albumLoaded(key,album){
return {
type: 'ALBUM_LOADED',
key: key,
album: album
}
}
export function albumsLoaded(albums){
return {
type: 'ALBUMS_LOADED',
albums: albums
}
}
export function artistLoaded(key,artist){
return {
type: 'ARTIST_LOADED',
key: key,
artist: artist
}
}
export function artistsLoaded(artists){
return {
type: 'ALBUMS_LOADED',
artists: artists
}
}
export function trackLoaded(key,track){
return {
type: 'TRACK_LOADED',
key: key,
track: track
}
}
export function tracksLoaded(tracks){
return {
type: 'TRACKS_LOADED',
tracks: tracks
}
}