diff --git a/src/components/HeaderBar/CurrentDJ.js b/src/components/HeaderBar/CurrentDJ.js index 070390223..ad865e0c0 100644 --- a/src/components/HeaderBar/CurrentDJ.js +++ b/src/components/HeaderBar/CurrentDJ.js @@ -1,10 +1,13 @@ import React from 'react'; import PropTypes from 'prop-types'; import { translate } from '@u-wave/react-translate'; +import PlayTime from './PlayTime'; -const CurrentDJ = ({ t, className, dj }) => ( +const CurrentDJ = ({ + t, className, dj, startTime, mediaDuration, +}) => (
- {t('booth.currentDJ', { user: dj.username })} + {t('booth.currentDJ', { user: dj.username })} -
); @@ -14,6 +17,8 @@ CurrentDJ.propTypes = { dj: PropTypes.shape({ username: PropTypes.string.isRequired, }), + startTime: PropTypes.number.isRequired, + mediaDuration: PropTypes.number.isRequired, }; export default translate()(CurrentDJ); diff --git a/src/components/HeaderBar/PlayTime.js b/src/components/HeaderBar/PlayTime.js new file mode 100644 index 000000000..26092b0a5 --- /dev/null +++ b/src/components/HeaderBar/PlayTime.js @@ -0,0 +1,23 @@ +import cx from 'clsx'; +import React from 'react'; +import PropTypes from 'prop-types'; +import formatDuration from 'format-duration'; +import useClock from '../../hooks/useClock'; + +function PlayTime({ className, startTime, mediaDuration }) { + const currentTime = useClock(); + const currentElapsed = currentTime - startTime; + return ( + + {formatDuration(currentElapsed)} / {formatDuration(mediaDuration * 1000)} + + ); +} + +PlayTime.propTypes = { + className: PropTypes.string, + startTime: PropTypes.number.isRequired, + mediaDuration: PropTypes.number.isRequired, +}; + +export default React.memo(PlayTime); diff --git a/src/components/HeaderBar/index.js b/src/components/HeaderBar/index.js index 5baeb2156..eb025621b 100644 --- a/src/components/HeaderBar/index.js +++ b/src/components/HeaderBar/index.js @@ -16,6 +16,8 @@ const HeaderBar = ({ mediaStartTime, volume, muted, + startTime, + mediaDuration, onVolumeChange, onVolumeMute, onVolumeUnmute, @@ -35,7 +37,7 @@ const HeaderBar = ({
- {dj && } + {dj && }
{media && (