[Perf] Video: Avoid redundant renders
This commit is contained in:
parent
c6bd762a4c
commit
f17f1f533e
@ -2,6 +2,7 @@ import type React from '../lib/teact/teact';
|
|||||||
import { useCallback, useMemo, useState } from '../lib/teact/teact';
|
import { useCallback, useMemo, useState } from '../lib/teact/teact';
|
||||||
import { debounce } from '../util/schedulers';
|
import { debounce } from '../util/schedulers';
|
||||||
import { isSafariPatchInProgress } from '../util/patchSafariProgressiveAudio';
|
import { isSafariPatchInProgress } from '../util/patchSafariProgressiveAudio';
|
||||||
|
import { areDeepEqual } from '../util/areDeepEqual';
|
||||||
|
|
||||||
type BufferingEvent = (e: Event | React.SyntheticEvent<HTMLMediaElement>) => void;
|
type BufferingEvent = (e: Event | React.SyntheticEvent<HTMLMediaElement>) => void;
|
||||||
|
|
||||||
@ -33,9 +34,11 @@ const useBuffering = (noInitiallyBuffered = false, onTimeUpdate?: AnyToVoidFunct
|
|||||||
if (!isSafariPatchInProgress(media)) {
|
if (!isSafariPatchInProgress(media)) {
|
||||||
if (media.buffered.length) {
|
if (media.buffered.length) {
|
||||||
const ranges = getTimeRanges(media.buffered, media.duration);
|
const ranges = getTimeRanges(media.buffered, media.duration);
|
||||||
setBufferedRanges(ranges);
|
|
||||||
const bufferedLength = ranges.reduce((acc, { start, end }) => acc + end - start, 0);
|
const bufferedLength = ranges.reduce((acc, { start, end }) => acc + end - start, 0);
|
||||||
setBufferedProgress(bufferedLength / media.duration);
|
setBufferedProgress(bufferedLength / media.duration);
|
||||||
|
setBufferedRanges((currentRanges) => {
|
||||||
|
return areDeepEqual(currentRanges, ranges) ? currentRanges : ranges;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
setIsBufferedDebounced(media.readyState >= MIN_READY_STATE || media.currentTime > 0);
|
setIsBufferedDebounced(media.readyState >= MIN_READY_STATE || media.currentTime > 0);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user