From f17f1f533eaf12638813fb848a4bf336dd543197 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Sun, 22 Jan 2023 18:12:40 +0100 Subject: [PATCH] [Perf] Video: Avoid redundant renders --- src/hooks/useBuffering.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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);