From 14d5036e8b819beb6eb6e1c0e0fa6c58e62e9cc2 Mon Sep 17 00:00:00 2001 From: angel Date: Fri, 11 Jul 2025 20:47:56 +0000 Subject: [PATCH] feat: enhance mobile experience with responsive audio player and navigation improvements --- .env.local | 2 +- app/components/AudioPlayer.tsx | 357 ++++++++++++++++++----------- app/components/ihateserverside.tsx | 102 +++++---- app/components/menu.tsx | 156 +++++++++++-- app/globals.css | 110 +++++++-- 5 files changed, 508 insertions(+), 219 deletions(-) diff --git a/.env.local b/.env.local index 44eabfd..022b1eb 100644 --- a/.env.local +++ b/.env.local @@ -1 +1 @@ -NEXT_PUBLIC_COMMIT_SHA=35febc5 +NEXT_PUBLIC_COMMIT_SHA=d8a8534 diff --git a/app/components/AudioPlayer.tsx b/app/components/AudioPlayer.tsx index 74357fb..cbb2a13 100644 --- a/app/components/AudioPlayer.tsx +++ b/app/components/AudioPlayer.tsx @@ -10,10 +10,12 @@ import { Progress } from '@/components/ui/progress'; import { useToast } from '@/hooks/use-toast'; import { useLastFmScrobbler } from '@/hooks/use-lastfm-scrobbler'; import { useStandaloneLastFm } from '@/hooks/use-standalone-lastfm'; +import { useIsMobile } from '@/hooks/use-mobile'; export const AudioPlayer: React.FC = () => { const { currentTrack, playPreviousTrack, addToQueue, playNextTrack, clearQueue, queue, toggleShuffle, shuffle, toggleCurrentTrackStar } = useAudioPlayer(); const router = useRouter(); + const isMobile = useIsMobile(); const audioRef = useRef(null); const preloadAudioRef = useRef(null); const [progress, setProgress] = useState(0); @@ -354,109 +356,119 @@ export const AudioPlayer: React.FC = () => { return null; } - // Mini player (collapsed state) - if (isMinimized) { + // Mobile compact mini player :3 + if (isMobile) { return ( -
-
setIsMinimized(false)} - > -
- {currentTrack.name} -
-
-

- {currentTrack.name} -

-
-

{currentTrack.artist}

-
- {/* Heart icon for favoriting */} - -
- - - -
+
+ +
+ {/* Track info */} +
setIsFullScreen(true)} + > + {currentTrack.name} +
+

{currentTrack.name}

+

{currentTrack.artist}

+
+
+ + {/* Mobile controls */} +
+ + + + +
+
+ + {/* Full Screen Player for mobile */} + setIsFullScreen(false)} + onOpenQueue={handleOpenQueue} + />
+ + {/* Single audio element - shared across all UI states */}