···11import React, {useCallback, useEffect, useRef, useState} from 'react'
2233+import {isSafari} from '#/lib/browser'
34import {useVideoVolumeState} from '../../VideoVolumeContext'
4556export function useVideoElement(ref: React.RefObject<HTMLVideoElement>) {
···3738 const handleTimeUpdate = () => {
3839 if (!ref.current) return
3940 setCurrentTime(round(ref.current.currentTime) || 0)
4141+ // HACK: Safari randomly fires `stalled` events when changing between segments
4242+ // let's just clear the buffering state if the video is still progressing -sfn
4343+ if (isSafari) {
4444+ if (bufferingTimeout) clearTimeout(bufferingTimeout)
4545+ setBuffering(false)
4646+ }
4047 }
41484249 const handleDurationChange = () => {