diff --git a/components/previews/AudioPreview.tsx b/components/previews/AudioPreview.tsx index 677514b..3c569aa 100644 --- a/components/previews/AudioPreview.tsx +++ b/components/previews/AudioPreview.tsx @@ -1,13 +1,39 @@ -import { FunctionComponent } from 'react' +import { FunctionComponent, useState } from 'react' import ReactPlayer from 'react-player' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +enum PlayerState { + Loading, + Ready, + Playing, + Paused, +} + export const AudioPreview: FunctionComponent<{ file: any }> = ({ file }) => { + const [playerStatus, setPlayerStatus] = useState(PlayerState.Loading) + return (
-
- +
+ {playerStatus === PlayerState.Loading ? ( +
+ + + + +
+ ) : ( + + )}
{file.name}
@@ -24,6 +50,17 @@ export const AudioPreview: FunctionComponent<{ file: any }> = ({ file }) => { width="100%" height="48px" config={{ file: { forceAudio: true } }} + onReady={() => { + setPlayerStatus(PlayerState.Ready) + }} + onPlay={() => { + setPlayerStatus(PlayerState.Playing) + }} + onPause={() => { + setPlayerStatus(PlayerState.Paused) + }} + onError={() => setPlayerStatus(PlayerState.Paused)} + onEnded={() => setPlayerStatus(PlayerState.Paused)} />