From c1e1966977a1efbf080b6f16d644881f2857824c Mon Sep 17 00:00:00 2001 From: apatil Date: Wed, 7 May 2025 20:22:45 +0100 Subject: [PATCH] Prettify music player --- src/app/music/page.tsx | 17 +++--- src/components/AudioPlayer/AudioPlayer.tsx | 63 ++++++++++++++++++++++ src/components/AudioPlayer/index.ts | 1 + src/components/Header/Header.tsx | 2 +- 4 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 src/components/AudioPlayer/AudioPlayer.tsx create mode 100644 src/components/AudioPlayer/index.ts diff --git a/src/app/music/page.tsx b/src/app/music/page.tsx index 5603cc7..0918859 100644 --- a/src/app/music/page.tsx +++ b/src/app/music/page.tsx @@ -1,24 +1,27 @@ 'use client'; import { useEffect, useState } from 'react'; import { - Container, Typography, List, ListItem, ListItemText, Box, Button, Input, useMediaQuery + Container, Typography, List, ListItem, ListItemText, Box, Button, Input } from '@mui/material'; import UploadIcon from '@mui/icons-material/Upload'; -import { useTheme } from '@mui/material/styles'; +import AudioPlayer from '@/components/AudioPlayer/AudioPlayer'; + export default function Home() { const [tracks, setTracks] = useState([]); const [currentTrack, setCurrentTrack] = useState(null); const [uploading, setUploading] = useState(false); - const theme = useTheme(); - const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + + useEffect(() => { fetchTracks(); }, []); + const fetchTracks = async () => { const res = await fetch('/api/tracks'); const data = await res.json(); setTracks(data); }; + const handleUpload = async (e: React.ChangeEvent) => { if (!e.target.files?.length) return; const formData = new FormData(); @@ -33,6 +36,7 @@ export default function Home() { fetchTracks(); } }; + return ( @@ -44,7 +48,7 @@ export default function Home() { id="upload-mp3" type="file" sx={{ display: 'none' }} - inputProps={{ accept: '.mp3' }} + inputProps={{ accept: '.mp3, .m4a, audio/mpeg, audio/mp4, audio/x-m4a' }} onChange={handleUpload} />