mediahub-fe/components/audio-player.tsx

42 lines
1.2 KiB
TypeScript
Raw Normal View History

2025-07-12 11:52:36 +00:00
import React, { useRef, useState, useEffect } from "react";
2025-07-17 01:02:30 +00:00
interface AudioPlayerProps {
urlAudio: string;
2025-07-19 12:51:23 +00:00
fileName: string;
2025-07-17 01:02:30 +00:00
}
const AudioPlayer: React.FC<AudioPlayerProps> = ({ urlAudio, fileName }) => {
2025-07-12 11:52:36 +00:00
const audioRef = useRef<HTMLAudioElement>(null);
const [currentTime, setCurrentTime] = useState(0);
useEffect(() => {
const audio = audioRef.current;
if (!audio) return;
const updateTime = () => {
2025-07-19 12:51:23 +00:00
setCurrentTime(audio?.currentTime);
2025-07-12 11:52:36 +00:00
};
audio.addEventListener("timeupdate", updateTime);
return () => {
audio.removeEventListener("timeupdate", updateTime);
};
}, []);
return (
2025-07-17 01:02:30 +00:00
<div className="mt-2">
<h2 className="text-lg font-semibold">{fileName}</h2>
2025-07-19 12:51:23 +00:00
{/* <a href={urlAudio} target="_blank">{urlAudio}</a> */}
2025-07-17 01:02:30 +00:00
<audio ref={audioRef} src={urlAudio} controls className="mt-1 w-full" />
2025-07-19 12:51:23 +00:00
{/* <div className="mt-2 space-x-2">
2025-07-12 11:52:36 +00:00
<button onClick={playAudio}> Play</button>
<button onClick={pauseAudio}> Pause</button>
<button onClick={stopAudio}> Stop</button>
</div>
2025-07-19 12:51:23 +00:00
<div className="mt-1 text-sm text-gray-500">{formatTime(currentTime)}</div> */}
2025-07-12 11:52:36 +00:00
</div>
);
};
export default AudioPlayer;