Upgrading Spotify's playlist URI format; Settings user objects and using formatUser + formatImages
This commit is contained in:
@ -693,7 +693,8 @@ const CoreMiddleware = (function(){
|
||||
var users_loaded = [];
|
||||
|
||||
for (var user of action.users){
|
||||
|
||||
user = helpers.formatUser(user);
|
||||
|
||||
if (users_index[user.uri]){
|
||||
user = Object.assign({}, users_index[user.uri], user);
|
||||
}
|
||||
|
||||
@ -9,22 +9,32 @@ const GeniusMiddleware = (function(){
|
||||
switch(action.type){
|
||||
|
||||
case 'GENIUS_ME_LOADED':
|
||||
var me = helpers.formatUser(action.me);
|
||||
Object.assign(
|
||||
me,
|
||||
{
|
||||
uri: "genius:user:"+me.id
|
||||
}
|
||||
);
|
||||
|
||||
store.dispatch({
|
||||
type: 'GENIUS_USER_LOADED',
|
||||
user: action.me
|
||||
});
|
||||
action.me = me;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'GENIUS_USER_LOADED':
|
||||
var user = Object.assign(
|
||||
{},
|
||||
action.user,
|
||||
var user = helpers.formatUser(action.user);
|
||||
Object.assign(
|
||||
user,
|
||||
{
|
||||
uri: "genius:user:"+action.user.id
|
||||
uri: "genius:user:"+user.id
|
||||
}
|
||||
);
|
||||
store.dispatch(coreActions.userLoaded(user));
|
||||
action.user = user;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
|
||||
@ -8,14 +8,16 @@ const LastfmMiddleware = (function(){
|
||||
switch(action.type){
|
||||
|
||||
case 'LASTFM_ME_LOADED':
|
||||
var user = Object.assign(
|
||||
{},
|
||||
action.me,
|
||||
var me = helpers.formatUser(action.me);
|
||||
Object.assign(
|
||||
me,
|
||||
{
|
||||
uri: "lastfm:user:"+action.me.name
|
||||
uri: "lastfm:user:"+me.name
|
||||
}
|
||||
);
|
||||
store.dispatch(coreActions.userLoaded(user));
|
||||
store.dispatch(coreActions.userLoaded(me));
|
||||
action.me = me;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -258,7 +258,7 @@ export function getMe(){
|
||||
response => {
|
||||
dispatch({
|
||||
type: 'SPOTIFY_ME_LOADED',
|
||||
data: response
|
||||
me: response
|
||||
});
|
||||
},
|
||||
error => {
|
||||
@ -734,9 +734,9 @@ export function following(uri, method = 'GET'){
|
||||
break
|
||||
case 'playlist':
|
||||
if (method == 'GET'){
|
||||
endpoint = 'users/'+ helpers.getFromUri('userid',uri) +'/playlists/'+ helpers.getFromUri('playlistid',uri) +'/followers/contains?ids='+ getState().spotify.me.id
|
||||
endpoint = 'playlists/'+ helpers.getFromUri('playlistid',uri) +'/followers/contains?ids='+ getState().spotify.me.id
|
||||
} else {
|
||||
endpoint = 'users/'+ helpers.getFromUri('userid',uri) +'/playlists/'+ helpers.getFromUri('playlistid',uri) +'/followers'
|
||||
endpoint = 'playlists/'+ helpers.getFromUri('playlistid',uri) +'/followers'
|
||||
}
|
||||
break
|
||||
}
|
||||
@ -1471,7 +1471,7 @@ export function getPlaylist(uri){
|
||||
return (dispatch, getState) => {
|
||||
|
||||
// get the main playlist object
|
||||
sendRequest(dispatch, getState, 'users/'+ helpers.getFromUri('userid',uri) +'/playlists/'+ helpers.getFromUri('playlistid',uri) +'?market='+getState().spotify.country )
|
||||
sendRequest(dispatch, getState, 'playlists/'+ helpers.getFromUri('playlistid',uri) +'?market='+getState().spotify.country )
|
||||
.then(
|
||||
response => {
|
||||
|
||||
@ -1607,7 +1607,7 @@ export function getPlaylistTracksAndPlay(uri, shuffle){
|
||||
'Loading playlist tracks',
|
||||
{
|
||||
uri: uri,
|
||||
next: 'users/'+ helpers.getFromUri('userid',uri) +'/playlists/'+ helpers.getFromUri('playlistid',uri) +'/tracks?market='+getState().spotify.country,
|
||||
next: 'playlists/'+ helpers.getFromUri('playlistid',uri) +'/tracks?market='+getState().spotify.country,
|
||||
shuffle: shuffle
|
||||
}
|
||||
))
|
||||
@ -1687,7 +1687,7 @@ export function toggleFollowingPlaylist(uri, method){
|
||||
if (method == 'DELETE' ) var new_state = 0
|
||||
|
||||
return (dispatch, getState) => {
|
||||
sendRequest(dispatch, getState, 'users/'+ helpers.getFromUri('userid',uri) + '/playlists/'+ helpers.getFromUri('playlistid',uri) + '/followers', method )
|
||||
sendRequest(dispatch, getState, 'playlists/'+ helpers.getFromUri('playlistid',uri) + '/followers', method )
|
||||
.then(
|
||||
response => {
|
||||
dispatch({
|
||||
@ -1708,7 +1708,7 @@ export function toggleFollowingPlaylist(uri, method){
|
||||
|
||||
export function addTracksToPlaylist(uri, tracks_uris){
|
||||
return (dispatch, getState) => {
|
||||
sendRequest(dispatch, getState, 'users/'+ helpers.getFromUri('userid',uri) + '/playlists/'+ helpers.getFromUri('playlistid',uri) + '/tracks', 'POST', { uris: tracks_uris } )
|
||||
sendRequest(dispatch, getState, 'playlists/'+ helpers.getFromUri('playlistid',uri) + '/tracks', 'POST', { uris: tracks_uris } )
|
||||
.then(
|
||||
response => {
|
||||
dispatch({
|
||||
@ -1730,7 +1730,7 @@ export function addTracksToPlaylist(uri, tracks_uris){
|
||||
|
||||
export function deleteTracksFromPlaylist(uri, snapshot_id, tracks_indexes){
|
||||
return (dispatch, getState) => {
|
||||
sendRequest(dispatch, getState, 'users/'+ helpers.getFromUri('userid',uri) + '/playlists/'+ helpers.getFromUri('playlistid',uri) + '/tracks', 'DELETE', { snapshot_id: snapshot_id, positions: tracks_indexes } )
|
||||
sendRequest(dispatch, getState, 'playlists/'+ helpers.getFromUri('playlistid',uri) + '/tracks', 'DELETE', { snapshot_id: snapshot_id, positions: tracks_indexes } )
|
||||
.then(
|
||||
response => {
|
||||
dispatch({
|
||||
@ -1752,7 +1752,7 @@ export function deleteTracksFromPlaylist(uri, snapshot_id, tracks_indexes){
|
||||
|
||||
export function reorderPlaylistTracks(uri, range_start, range_length, insert_before, snapshot_id){
|
||||
return (dispatch, getState) => {
|
||||
sendRequest(dispatch, getState, 'users/'+ helpers.getFromUri('userid',uri) + '/playlists/'+ helpers.getFromUri('playlistid',uri) + '/tracks', 'PUT', { uri: uri, range_start: range_start, range_length: range_length, insert_before: insert_before, snapshot_id: snapshot_id } )
|
||||
sendRequest(dispatch, getState, 'playlists/'+ helpers.getFromUri('playlistid',uri) + '/tracks', 'PUT', { uri: uri, range_start: range_start, range_length: range_length, insert_before: insert_before, snapshot_id: snapshot_id } )
|
||||
.then(
|
||||
response => {
|
||||
dispatch({
|
||||
|
||||
@ -250,16 +250,16 @@ const SpotifyMiddleware = (function(){
|
||||
|
||||
case 'SPOTIFY_LIBRARY_PLAYLISTS_LOADED':
|
||||
var playlists = []
|
||||
for(var i = 0; i < action.playlists.length; i++){
|
||||
var playlist = Object.assign(
|
||||
{},
|
||||
action.playlists[i],
|
||||
for (var playlist of action.playlists){
|
||||
Object.assign(
|
||||
playlist,
|
||||
{
|
||||
uri: playlist.uri.replace(/spotify:user:([^:]*?):/i, "spotify:"),
|
||||
source: 'spotify',
|
||||
in_library: true, // assumed because we asked for library items
|
||||
tracks_total: action.playlists[i].tracks.total
|
||||
tracks_total: playlist.tracks.total
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
// remove our tracklist. It'll overwrite any full records otherwise
|
||||
delete playlist.tracks
|
||||
@ -463,30 +463,21 @@ const SpotifyMiddleware = (function(){
|
||||
|
||||
|
||||
case 'SPOTIFY_ME_LOADED':
|
||||
var me = Object.assign({}, helpers.formatUser(action.me));
|
||||
|
||||
// We've loaded 'me' and we are Anonymous currently
|
||||
if (action.data && store.getState().pusher.username == 'Anonymous'){
|
||||
if (action.data.display_name !== null){
|
||||
var name = action.data.display_name;
|
||||
} else {
|
||||
var name = action.data.id;
|
||||
}
|
||||
|
||||
// Use 'me' name as my Pusher username
|
||||
store.dispatch(pusherActions.setUsername(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 = md5(action.data.id);
|
||||
var hashed_username = md5(me.id);
|
||||
ReactGA.set({userId: hashed_username});
|
||||
ReactGA.event({category: 'Spotify', action: 'Authorization verified', label: hashed_username});
|
||||
}
|
||||
|
||||
store.dispatch({
|
||||
type: 'USERS_LOADED',
|
||||
users: [action.data]
|
||||
});
|
||||
|
||||
store.dispatch(coreActions.userLoaded(me));
|
||||
action.me = me;
|
||||
next(action);
|
||||
break;
|
||||
|
||||
|
||||
@ -63,7 +63,7 @@ export default function reducer(spotify = {}, action){
|
||||
});
|
||||
|
||||
case 'SPOTIFY_ME_LOADED':
|
||||
return Object.assign({}, spotify, { me: action.data })
|
||||
return Object.assign({}, spotify, { me: action.me })
|
||||
|
||||
case 'SPOTIFY_FEATURED_PLAYLISTS_LOADED':
|
||||
return Object.assign({}, spotify, { featured_playlists: action.data })
|
||||
|
||||
Reference in New Issue
Block a user