Skip to content

Commit f7aa0c0

Browse files
committed
Prefer resolved media duration and remember last
1 parent d180c57 commit f7aa0c0

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

apps/web/app/s/[videoId]/_components/video/media-player.tsx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2417,13 +2417,29 @@ function MediaPlayerTime(props: MediaPlayerTimeProps) {
24172417
const mediaCurrentTime = useMediaSelector(
24182418
(state) => state.mediaCurrentTime ?? 0,
24192419
);
2420+
const mediaDuration = useMediaSelector((state) => state.mediaDuration ?? 0);
24202421
const [, seekableEnd = 0] = useMediaSelector(
24212422
(state) => state.mediaSeekable ?? [0, 0],
24222423
);
2424+
const resolvedDuration = React.useMemo(() => {
2425+
const candidates = [
2426+
mediaDuration,
2427+
seekableEnd,
2428+
fallbackDuration ?? 0,
2429+
].filter((duration) => Number.isFinite(duration) && duration > 0);
2430+
2431+
return candidates.length > 0 ? Math.max(...candidates) : 0;
2432+
}, [fallbackDuration, mediaDuration, seekableEnd]);
2433+
const lastKnownDurationRef = React.useRef(resolvedDuration);
2434+
2435+
React.useEffect(() => {
2436+
if (resolvedDuration > 0) {
2437+
lastKnownDurationRef.current = resolvedDuration;
2438+
}
2439+
}, [resolvedDuration]);
2440+
24232441
const effectiveDuration =
2424-
Number.isFinite(fallbackDuration) && (fallbackDuration ?? 0) > 0
2425-
? Math.max(seekableEnd, fallbackDuration ?? 0)
2426-
: seekableEnd;
2442+
resolvedDuration > 0 ? resolvedDuration : lastKnownDurationRef.current;
24272443

24282444
const times = React.useMemo(() => {
24292445
if (variant === "remaining") {

0 commit comments

Comments
 (0)