diff --git a/src/components/common/Audio.scss b/src/components/common/Audio.scss index 71598bc30..cabf783d1 100644 --- a/src/components/common/Audio.scss +++ b/src/components/common/Audio.scss @@ -233,7 +233,6 @@ } } - .seekline-buffered-progress, .seekline-play-progress { position: absolute; height: 2px; @@ -252,8 +251,14 @@ } } - .seekline-buffered-progress i { - background-color: var(--color-interactive-buffered) !important; + .seekline-buffered-progress { + height: 2px; + border-radius: 2px; + + position: absolute; + top: 6px; + + background-color: var(--color-interactive-buffered); } .seekline-thumb { @@ -352,6 +357,9 @@ } } -.has-replies .Audio[dir="rtl"] { - margin-bottom: 1.625rem; +.has-replies .Audio { + margin-bottom: 1rem; + [dir="rtl"] { + margin-bottom: 1.625rem; + } } diff --git a/src/components/common/Audio.tsx b/src/components/common/Audio.tsx index 6d01e2bec..a7a9591d9 100644 --- a/src/components/common/Audio.tsx +++ b/src/components/common/Audio.tsx @@ -25,7 +25,7 @@ import { getFileSizeString } from './helpers/documentInfo'; import { decodeWaveform, interpolateArray } from '../../util/waveform'; import useMediaWithLoadProgress from '../../hooks/useMediaWithLoadProgress'; import useShowTransition from '../../hooks/useShowTransition'; -import useBuffering from '../../hooks/useBuffering'; +import useBuffering, { BufferedRange } from '../../hooks/useBuffering'; import useAudioPlayer from '../../hooks/useAudioPlayer'; import useLang, { LangFn } from '../../hooks/useLang'; import { captureEvents } from '../../util/captureEvents'; @@ -116,7 +116,7 @@ const Audio: FC = ({ }, []); const { - isBuffered, bufferedProgress, bufferingHandlers, checkBuffering, + isBuffered, bufferedRanges, bufferingHandlers, checkBuffering, } = useBuffering(); const { @@ -296,7 +296,7 @@ const Audio: FC = ({ {playProgress < 1 && `${formatMediaDuration(duration * playProgress, duration)}`} - {renderSeekline(playProgress, bufferedProgress, seekerRef)} + {renderSeekline(playProgress, bufferedRanges, seekerRef)} )} {!withSeekline && renderSecondLine()} @@ -354,7 +354,7 @@ const Audio: FC = ({ duration, isPlaying, playProgress, - bufferedProgress, + bufferedRanges, seekerRef, (isDownloading || isUploading), date, @@ -375,7 +375,7 @@ function renderAudio( duration: number, isPlaying: boolean, playProgress: number, - bufferedProgress: number, + bufferedRanges: BufferedRange[], seekerRef: React.Ref, showProgress?: boolean, date?: number, @@ -396,7 +396,7 @@ function renderAudio( {formatMediaDuration(duration * playProgress, duration)} - {renderSeekline(playProgress, bufferedProgress, seekerRef)} + {renderSeekline(playProgress, bufferedRanges, seekerRef)} )} {!showSeekline && showProgress && ( @@ -499,7 +499,7 @@ function useWaveformCanvas( function renderSeekline( playProgress: number, - bufferedProgress: number, + bufferedRanges: BufferedRange[], seekerRef: React.Ref, ) { return ( @@ -507,11 +507,12 @@ function renderSeekline( className="seekline no-selection" ref={seekerRef as React.Ref} > - - ( +
- + ))} = ({ const [isFullscreen, setFullscreen, exitFullscreen] = useFullscreenStatus(videoRef, setIsPlayed); - const { isBuffered, bufferedProgress, bufferingHandlers } = useBuffering(); + const { + isBuffered, bufferedRanges, bufferingHandlers, bufferedProgress, + } = useBuffering(); const { shouldRender: shouldRenderSpinner, transitionClassNames: spinnerClassNames, @@ -229,6 +231,7 @@ const VideoPlayer: FC = ({ {!isGif && !shouldRenderSpinner && ( = ({ + bufferedRanges, bufferedProgress, currentTime, duration, @@ -156,7 +159,7 @@ const VideoPlayerControls: FC = ({ className={buildClassName('VideoPlayerControls', isForceMobileVersion && 'mobile', isVisible && 'active')} onClick={stopEvent} > - {renderSeekLine(currentTime, duration, bufferedProgress, seekerRef)} + {renderSeekLine(currentTime, duration, bufferedRanges, seekerRef)}