diff --git a/src/components/SpotifyCard.tsx b/src/components/SpotifyCard.tsx index a784f51..d6b3529 100644 --- a/src/components/SpotifyCard.tsx +++ b/src/components/SpotifyCard.tsx @@ -4,7 +4,17 @@ import { useEffect, useState } from 'react' import io from 'socket.io-client' import Image from 'next/image' import Link from 'next/link' -import type { SpotifyData } from '@/utils/interface' + +interface SpotifyData { + song?: { + artist: string[] + title: string + url: string + image: string + progress: number + length: number + } +} export const NowPlayingCard = () => { const [spotify, setSpotify] = useState({}) @@ -21,6 +31,15 @@ export const NowPlayingCard = () => { } }, []) + const Progress = () => { + if (spotify.song && spotify.song.length > 0) { + const progressPercentage = + (spotify.song.progress / spotify.song.length) * 100 + return `${progressPercentage}%` + } + return '0%' + } + return (
{spotify.song ? ( @@ -51,10 +70,7 @@ export const NowPlayingCard = () => {
diff --git a/src/pages/api/spotify.ts b/src/pages/api/spotify.ts index ad2d4ac..b9cdf5e 100644 --- a/src/pages/api/spotify.ts +++ b/src/pages/api/spotify.ts @@ -21,26 +21,21 @@ export default async function handler( ) { try { const song = await spotify.getCurrentSong() - if (!song.is_playing) { + if (!song || !song.isPlaying) { return res.status(200).json({ - is_playing: false, + nowplaying: false, }) } res.status(200).json({ - is_playing: true, - name: song.name, - album: { - name: song.album.name, + nowplaying: true, + song: { + artist: song.artists.name, + title: song.title, + url: song.url, image: song.album.image, - release: song.album.release_date, + progress: song.progress, + length: song.length, }, - artists: { - name: song.artists.name, - url: song.artists.url, - }, - url: song.url, - progress: song.progress, - duration: song.duration, }) } catch (error) { res diff --git a/src/utils/interface.ts b/src/utils/interface.ts index 5296a55..a48736a 100644 --- a/src/utils/interface.ts +++ b/src/utils/interface.ts @@ -3,7 +3,7 @@ interface Album { images: { url: string }[] - release_date: string + release: string[] } export interface Artist { @@ -18,14 +18,3 @@ export interface Item { external_urls: { spotify: string } duration_ms: number } - -export interface SpotifyData { - song?: { - title: string - artist: string[] - url: string - image: string - progress: number - duration: number - } -} diff --git a/src/utils/result.ts b/src/utils/result.ts index 362b235..c3c45e8 100644 --- a/src/utils/result.ts +++ b/src/utils/result.ts @@ -10,20 +10,20 @@ export class SongResultMap { const { item } = result return { - name: item.name, + progress: result.progress_ms, + title: item.name, album: { name: item.album.name, image: item.album.images[0]?.url, - release_date: item.album.release_date, + release: item.album.release, }, artists: { name: item.artists.map((x: Artist) => x.name), url: item.artists.map((x: Artist) => x.external_urls.spotify), }, url: item.external_urls.spotify, - progress: result.progress_ms, - duration: item.duration_ms, - is_playing: result.is_playing, + length: item.duration_ms, + isPlaying: result.is_playing, } } } diff --git a/src/utils/type.ts b/src/utils/type.ts index 1907c3b..fbd8c91 100644 --- a/src/utils/type.ts +++ b/src/utils/type.ts @@ -1,16 +1,16 @@ export type SongResult = { - is_playing: boolean - name: string + progress: number album: { name: string image?: string - release_date: string + release: string[] } artists: { name: string[] url: string[] } url: string - progress: number - duration: number + title: string + length: number + isPlaying: boolean }