2020-11-28 22:11:11 +01:00
|
|
|
import { ref } from '@vue/composition-api'
|
|
|
|
|
|
|
|
import store from '@/store'
|
2021-03-01 23:09:14 +01:00
|
|
|
import { fetchData } from '@/utils/api'
|
2020-11-28 22:11:11 +01:00
|
|
|
|
|
|
|
const favoriteArtists = ref([])
|
|
|
|
const favoriteAlbums = ref([])
|
|
|
|
const favoriteSpotifyPlaylists = ref([])
|
|
|
|
const favoritePlaylists = ref([])
|
|
|
|
const favoriteTracks = ref([])
|
|
|
|
|
|
|
|
const isRefreshingFavorites = ref(false)
|
|
|
|
|
2021-08-11 11:47:45 +02:00
|
|
|
const setAllFavorites = data => {
|
|
|
|
const { tracks, albums, artists, playlists } = data
|
|
|
|
|
|
|
|
isRefreshingFavorites.value = false
|
|
|
|
|
|
|
|
favoriteArtists.value = artists
|
|
|
|
favoriteAlbums.value = albums
|
|
|
|
favoritePlaylists.value = playlists
|
|
|
|
favoriteTracks.value = tracks
|
|
|
|
}
|
|
|
|
|
|
|
|
const refreshFavorites = ({ isInitial = false }) => {
|
2020-11-28 22:11:11 +01:00
|
|
|
if (!isInitial) {
|
|
|
|
isRefreshingFavorites.value = true
|
|
|
|
}
|
|
|
|
|
2021-03-12 21:02:06 +01:00
|
|
|
fetchData('getUserFavorites').then(setAllFavorites).catch(console.error)
|
2020-11-28 22:11:11 +01:00
|
|
|
|
|
|
|
if (store.getters.isLoggedWithSpotify) {
|
2021-03-12 21:02:06 +01:00
|
|
|
fetchData('getUserSpotifyPlaylists', {
|
2021-03-12 20:12:46 +01:00
|
|
|
spotifyUser: store.getters.getSpotifyUser.id
|
|
|
|
})
|
2021-05-29 12:04:32 +02:00
|
|
|
.then(spotifyPlaylists => {
|
2021-08-11 12:15:40 +02:00
|
|
|
if (spotifyPlaylists.error === 'spotifyNotEnabled') {
|
|
|
|
favoriteSpotifyPlaylists.value = []
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2021-03-12 21:02:06 +01:00
|
|
|
favoriteSpotifyPlaylists.value = spotifyPlaylists
|
|
|
|
})
|
|
|
|
.catch(console.error)
|
2021-08-11 11:47:45 +02:00
|
|
|
} else {
|
|
|
|
favoriteSpotifyPlaylists.value = []
|
2020-11-28 22:11:11 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-08-11 11:47:45 +02:00
|
|
|
export const useFavorites = () => ({
|
|
|
|
favoriteArtists,
|
|
|
|
favoriteAlbums,
|
|
|
|
favoriteSpotifyPlaylists,
|
|
|
|
favoritePlaylists,
|
|
|
|
favoriteTracks,
|
|
|
|
isRefreshingFavorites,
|
|
|
|
refreshFavorites
|
|
|
|
})
|