♻️ (spotify) simplify hook

This commit is contained in:
2020-07-23 22:42:37 +02:00
parent 7d6805a776
commit c729b65284
5 changed files with 32 additions and 36 deletions

View File

@@ -1,10 +1,27 @@
const LOFI = 'spotify:playlist:0vvXsWCC9xrXsKd4FyS8kM'
const LOFI_MAX = 250
const PLAYLIST_IDS = [
'spotify:playlist:0vvXsWCC9xrXsKd4FyS8kM',
'spotify:playlist:5G1gAuXjmJHgEoI7XzrXOP',
'spotify:playlist:5OJs7eATLrvZ2Ea9als3lK',
'spotify:playlist:5NKv3Ucc0kqe1Me7CEdWty',
'spotify:playlist:0jGkhFr4yxLlHnpRg2Njj4'
]
interface SpotifyTracks {
items: Array<{ track: { name: string } }>
}
const random = (max: number) => {
return Math.floor(Math.random() * Math.floor(max))
}
const getHeaders = (token: string) => ({
headers: {
accept: 'application/json',
'content-type': 'application/json',
authorization: `Bearer ${token}`
}
})
export const redirectToSpotifyConnect = () => {
const authorizeURL = new URL('https://accounts.spotify.com/authorize')
authorizeURL.searchParams.append(
@@ -23,19 +40,21 @@ export const redirectToSpotifyConnect = () => {
}
export const playOnSpotify = async (token: string, deviceId: string) => {
const playlistId = PLAYLIST_IDS[random(PLAYLIST_IDS.length - 1)]
const trackResult = await fetch(
`https://api.spotify.com/v1/playlists/${playlistId}/tracks?fields=items(track(name))`
)
const tracks = (await trackResult.json()) as SpotifyTracks
await fetch(
`https://api.spotify.com/v1/me/player/play?device_id=${deviceId}`,
{
method: 'PUT',
headers: {
accept: 'application/json',
'content-type': 'application/json',
authorization: `Bearer ${token}`
},
...getHeaders(token),
body: JSON.stringify({
context_uri: LOFI,
context_uri: PLAYLIST_IDS[random(PLAYLIST_IDS.length - 1)],
offset: {
position: random(LOFI_MAX)
position: random(tracks?.items?.length || 0)
}
})
}
@@ -47,11 +66,7 @@ export const pauseOnSpotify = async (token: string, deviceId: string) => {
`https://api.spotify.com/v1/me/player/pause?device_id=${deviceId}`,
{
method: 'PUT',
headers: {
accept: 'application/json',
'content-type': 'application/json',
authorization: `Bearer ${token}`
}
...getHeaders(token)
}
)
}