diff --git a/.changeset/audio-player-controls.md b/.changeset/audio-player-controls.md new file mode 100644 index 0000000000..39a3df1624 --- /dev/null +++ b/.changeset/audio-player-controls.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/fuselage': minor +--- + +feat(fuselage): extract controlled AudioPlayerControls from AudioPlayer diff --git a/packages/fuselage/src/components/AudioPlayer/AudioPlayer.tsx b/packages/fuselage/src/components/AudioPlayer/AudioPlayer.tsx index faa056fbc8..043a8be046 100644 --- a/packages/fuselage/src/components/AudioPlayer/AudioPlayer.tsx +++ b/packages/fuselage/src/components/AudioPlayer/AudioPlayer.tsx @@ -2,14 +2,10 @@ import { useMergedRefs, useResizeObserver } from '@rocket.chat/fuselage-hooks'; import type { TrackHTMLAttributes } from 'react'; import { useState, useRef, forwardRef } from 'react'; -import { Box, Button, IconButton, Margins } from '../..'; +import { Box } from '../..'; import { useOwnerDocument } from '../../contexts'; -import { Slider } from '../Slider'; -const getMaskTime = (durationTime: number) => - new Date(durationTime * 1000) - .toISOString() - .slice(durationTime > 60 * 60 ? 11 : 14, 19); +import AudioPlayerControls from './AudioPlayerControls'; function forceDownload( ownerDocument: Document, @@ -150,60 +146,33 @@ const AudioPlayer = forwardRef( display='flex' alignItems='center' > - { + if (audioRef.current) { + audioRef.current.currentTime = time; + } + }} + onChangePlaybackSpeed={handlePlaybackSpeedSingleControl} + download={download} + downloadHref={src} + onDownload={(e) => { + const { host } = new URL(src); + if (host !== ownerDocument.defaultView?.location.host) { + e.preventDefault(); + forceDownload(ownerDocument, src); + } + }} + playLabel={playLabel} + pauseLabel={pauseLabel} + audioPlaybackRangeLabel={audioPlaybackRangeLabel} + changePlaybackSpeedLabel={changePlaybackSpeedLabel} + downloadAudioFileLabel={downloadAudioFileLabel} /> - - - {isPlaying || currentTime > 0 - ? getMaskTime(currentTime) - : getMaskTime(durationTime)} - - - { - if (audioRef.current) { - audioRef.current.currentTime = value; - } - }} - /> - - - - - {download && ( - { - const { host } = new URL(src); - if (host !== ownerDocument.defaultView?.location.host) { - e.preventDefault(); - forceDownload(ownerDocument, src); - } - }} - /> - )}