Skip to content

Commit bf5346b

Browse files
Updated the nowplaying song setup
1 parent 74d5822 commit bf5346b

File tree

13 files changed

+62
-23
lines changed

13 files changed

+62
-23
lines changed

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ VITE_CHUCK_NORRIS_API_LANG=en-US
55

66
VITE_GITHUB_API_URL=https://api.chucknorris.io/jokes
77

8+
VITE_SPOTIFY_CLIENT_BASIC=
89
VITE_SPOTIFY_CLIENT_ID=
910
VITE_SPOTIFY_CLIENT_SECRET=
1011
VITE_SPOTIFY_REFRESH_TOKEN=

src/environments/environment.dev.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export const environment: ISveltekitStarterEnvironmentConfig<SVELTEKIT_STARTER_E
3131
SESSION_KEY: import.meta.env.VITE_SESSION_KEY,
3232
},
3333
spotifyConfig: {
34+
SPOTIFY_CLIENT_BASIC: import.meta.env.VITE_SPOTIFY_CLIENT_BASIC,
3435
SPOTIFY_CLIENT_ID: import.meta.env.VITE_SPOTIFY_CLIENT_ID,
3536
SPOTIFY_CLIENT_SECRET: import.meta.env.VITE_SPOTIFY_CLIENT_SECRET,
3637
SPOTIFY_REFRESH_TOKEN: import.meta.env.VITE_SPOTIFY_REFRESH_TOKEN,

src/environments/environment.local.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const environment: ISveltekitStarterEnvironmentConfig<SVELTEKIT_STARTER_E
2828
SESSION_KEY: import.meta.env.VITE_SESSION_KEY,
2929
},
3030
spotifyConfig: {
31+
SPOTIFY_CLIENT_BASIC: import.meta.env.VITE_SPOTIFY_CLIENT_BASIC,
3132
SPOTIFY_CLIENT_ID: import.meta.env.VITE_SPOTIFY_CLIENT_ID,
3233
SPOTIFY_CLIENT_SECRET: import.meta.env.VITE_SPOTIFY_CLIENT_SECRET,
3334
SPOTIFY_REFRESH_TOKEN: import.meta.env.VITE_SPOTIFY_REFRESH_TOKEN,

src/environments/environment.prod.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const environment: ISveltekitStarterEnvironmentConfig<SVELTEKIT_STARTER_E
2828
SESSION_KEY: import.meta.env.VITE_SESSION_KEY,
2929
},
3030
spotifyConfig: {
31+
SPOTIFY_CLIENT_BASIC: import.meta.env.VITE_SPOTIFY_CLIENT_BASIC,
3132
SPOTIFY_CLIENT_ID: import.meta.env.VITE_SPOTIFY_CLIENT_ID,
3233
SPOTIFY_CLIENT_SECRET: import.meta.env.VITE_SPOTIFY_CLIENT_SECRET,
3334
SPOTIFY_REFRESH_TOKEN: import.meta.env.VITE_SPOTIFY_REFRESH_TOKEN,

src/environments/environment.qa.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export const environment: ISveltekitStarterEnvironmentConfig<SVELTEKIT_STARTER_E
2929
SESSION_KEY: import.meta.env.VITE_SESSION_KEY,
3030
},
3131
spotifyConfig: {
32+
SPOTIFY_CLIENT_BASIC: import.meta.env.VITE_SPOTIFY_CLIENT_BASIC,
3233
SPOTIFY_CLIENT_ID: import.meta.env.VITE_SPOTIFY_CLIENT_ID,
3334
SPOTIFY_CLIENT_SECRET: import.meta.env.VITE_SPOTIFY_CLIENT_SECRET,
3435
SPOTIFY_REFRESH_TOKEN: import.meta.env.VITE_SPOTIFY_REFRESH_TOKEN,

src/environments/environment.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const environment: ISveltekitStarterEnvironmentConfig<SVELTEKIT_STARTER_E
2828
SESSION_KEY: import.meta.env.VITE_SESSION_KEY,
2929
},
3030
spotifyConfig: {
31+
SPOTIFY_CLIENT_BASIC: import.meta.env.VITE_SPOTIFY_CLIENT_BASIC,
3132
SPOTIFY_CLIENT_ID: import.meta.env.VITE_SPOTIFY_CLIENT_ID,
3233
SPOTIFY_CLIENT_SECRET: import.meta.env.VITE_SPOTIFY_CLIENT_SECRET,
3334
SPOTIFY_REFRESH_TOKEN: import.meta.env.VITE_SPOTIFY_REFRESH_TOKEN,

src/global.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ interface ImportMetaEnv {
7676
VITE_CHUCK_NORRIS_API_URL: string;
7777
VITE_CHUCK_NORRIS_API_LANG: string;
7878
VITE_GITHUB_API_URL: string;
79+
VITE_SPOTIFY_CLIENT_BASIC: string;
7980
VITE_SPOTIFY_CLIENT_ID: string;
8081
VITE_SPOTIFY_CLIENT_SECRET: string;
8182
VITE_SPOTIFY_REFRESH_TOKEN: string;

src/lib/models/interfaces/ispotify-config.interface.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export interface ISpotifyConfig {
2+
SPOTIFY_CLIENT_BASIC: string;
23
SPOTIFY_CLIENT_ID: string;
34
SPOTIFY_CLIENT_SECRET: string;
45
SPOTIFY_REFRESH_TOKEN: string;

src/lib/shared/components/now-playing/NowPlaying.svelte

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,23 @@
5555
<script lang="ts">
5656
import { nowPlayingSong } from '$stores';
5757
import ExternalLink from '$ui/components/external-link/ExternalLink.svelte';
58+
import { onDestroy, onMount } from 'svelte';
59+
import { getNowPlayingSong } from './_now-playing';
60+
61+
let clearSetTimeout: any;
62+
63+
const getCurrentlyPlayingSong = (): void => {
64+
getNowPlayingSong().then((response) => nowPlayingSong.set(response));
65+
66+
clearSetTimeout = setTimeout(getCurrentlyPlayingSong, 120000);
67+
};
68+
onMount(async () => {
69+
getCurrentlyPlayingSong();
70+
});
71+
72+
onDestroy(() => {
73+
clearTimeout(clearSetTimeout);
74+
});
5875
</script>
5976

6077
<div class="flex flex-row-reverse sm:flex-row mb-8 space-x-0 sm:space-x-2 w-full">
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { getNowPlaying } from '$utils/spotify';
2+
3+
export const getNowPlayingSong = async () => {
4+
const response = await getNowPlaying();
5+
6+
if (response.status === 204 || response.status > 400) {
7+
return {
8+
isPlaying: false,
9+
};
10+
}
11+
12+
const song = await response.json();
13+
14+
if (song.item === null) {
15+
return {
16+
isPlaying: false,
17+
};
18+
}
19+
20+
const isPlaying = song.is_playing;
21+
const title = song.item.name;
22+
const artist = song.item.artists.map((_artist) => _artist.name).join(', ');
23+
const album = song.item.album.name;
24+
const albumImageUrl = song.item.album.images[0].url;
25+
const songUrl = song.item.external_urls.spotify;
26+
27+
return {
28+
album,
29+
albumImageUrl,
30+
artist,
31+
isPlaying,
32+
songUrl,
33+
title,
34+
};
35+
};

0 commit comments

Comments
 (0)