import { ActionIcon, Box, Group, Loader, Text, Tooltip } from '@mantine/core'; import { useDisclosure } from '@mantine/hooks'; import { PlayIcon, PauseIcon, SkipBackIcon, SkipForwardIcon, GearIcon, SpotifyLogoIcon, FloppyDiskIcon, ClockCounterClockwiseIcon, } from '@phosphor-icons/react'; import { useSpotify } from '@/lib/spotify/hooks'; import { useAuth } from '@/contexts/auth-context'; import SpotifySheet from './spotify-sheet'; const SpotifyControlsBar = () => { const { roles } = useAuth(); const isAdmin = roles?.includes('Admin') || false; const [sheetOpened, { open: openSheet, close: closeSheet }] = useDisclosure(false); const { isAuthenticated, playbackState, currentTrack, isLoading, error, play, pause, skipNext, skipPrevious, activeDevice, capturedState, isCaptureLoading, isResumeLoading, capturePlaybackState, resumePlaybackState, } = useSpotify(); if (!isAdmin) return null; if (!isAuthenticated) { return ( Connect Spotify ); } const isPlaying = playbackState?.is_playing || false; const hasActiveDevice = !!activeDevice; return ( {currentTrack && ( {currentTrack.album.images[2] && ( {currentTrack.album.name} )} {currentTrack.name} {currentTrack.artists.map(a => a.name).join(', ')} {currentTrack.album.name} )} isPlaying ? pause() : play()} disabled={!hasActiveDevice || isLoading} loading={isLoading} > {isPlaying ? : } {activeDevice && ( Playing on {activeDevice.name} )} {error && ( {error} )} {isAuthenticated && !hasActiveDevice && !isLoading && ( No active device. Please select a device in settings. )} ); }; export default SpotifyControlsBar;