diff --git a/src/hooks/useBuffering.ts b/src/hooks/useBuffering.ts index dc00d7d2d..5f0b0ff52 100644 --- a/src/hooks/useBuffering.ts +++ b/src/hooks/useBuffering.ts @@ -2,6 +2,7 @@ import type React from '../lib/teact/teact'; import { useCallback, useMemo, useState } from '../lib/teact/teact'; import { debounce } from '../util/schedulers'; import { isSafariPatchInProgress } from '../util/patchSafariProgressiveAudio'; +import { areDeepEqual } from '../util/areDeepEqual'; type BufferingEvent = (e: Event | React.SyntheticEvent) => void; @@ -33,9 +34,11 @@ const useBuffering = (noInitiallyBuffered = false, onTimeUpdate?: AnyToVoidFunct if (!isSafariPatchInProgress(media)) { if (media.buffered.length) { const ranges = getTimeRanges(media.buffered, media.duration); - setBufferedRanges(ranges); const bufferedLength = ranges.reduce((acc, { start, end }) => acc + end - start, 0); setBufferedProgress(bufferedLength / media.duration); + setBufferedRanges((currentRanges) => { + return areDeepEqual(currentRanges, ranges) ? currentRanges : ranges; + }); } setIsBufferedDebounced(media.readyState >= MIN_READY_STATE || media.currentTime > 0);