From ea6ac2568433ac86d89195cbc61e54e03e6a6665 Mon Sep 17 00:00:00 2001 From: dan Date: Sat, 7 Dec 2024 17:10:13 +0000 Subject: Revert "[Video] Revert safari hackfix (#5367)" (#7001) This reverts commit 94e7bfbe40ba6766361caaba99feff74a187613a. --- .../com/util/post-embeds/VideoEmbedInner/web-controls/utils.tsx | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/view/com/util/post-embeds/VideoEmbedInner/web-controls/utils.tsx') diff --git a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/utils.tsx b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/utils.tsx index f5d90b5f7..8aa2d3f7d 100644 --- a/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/utils.tsx +++ b/src/view/com/util/post-embeds/VideoEmbedInner/web-controls/utils.tsx @@ -1,5 +1,6 @@ import React, {useCallback, useEffect, useRef, useState} from 'react' +import {isSafari} from '#/lib/browser' import {useVideoVolumeState} from '../../VideoVolumeContext' export function useVideoElement(ref: React.RefObject) { @@ -37,6 +38,12 @@ export function useVideoElement(ref: React.RefObject) { const handleTimeUpdate = () => { if (!ref.current) return setCurrentTime(round(ref.current.currentTime) || 0) + // HACK: Safari randomly fires `stalled` events when changing between segments + // let's just clear the buffering state if the video is still progressing -sfn + if (isSafari) { + if (bufferingTimeout) clearTimeout(bufferingTimeout) + setBuffering(false) + } } const handleDurationChange = () => { -- cgit 1.4.1