fix video playback stutter when GenAI dialog is open in detail stream

Inline `onOpen` callback in DetailStream.tsx:522 creates a new function identity every render. GenAISummaryChip.tsx:98's useEffect depends on [open, onOpen], so it re-fires on every parent re-render while the dialog is open. Each fire calls onSeek -> setCurrentTime -> seekToTimestamp, creating a continuous re-render + seek loop
This commit is contained in:
Josh Hawkins 2026-04-09 14:43:57 -05:00
parent 556d5d8c9d
commit 05286a9560

View File

@ -6,7 +6,7 @@ import {
ThreatLevel, ThreatLevel,
THREAT_LEVEL_LABELS, THREAT_LEVEL_LABELS,
} from "@/types/review"; } from "@/types/review";
import React, { useEffect, useMemo, useState } from "react"; import React, { useEffect, useMemo, useRef, useState } from "react";
import { isDesktop } from "react-device-detect"; import { isDesktop } from "react-device-detect";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { MdAutoAwesome } from "react-icons/md"; import { MdAutoAwesome } from "react-icons/md";
@ -95,11 +95,12 @@ export function GenAISummaryDialog({
const Trigger = isDesktop ? DialogTrigger : DrawerTrigger; const Trigger = isDesktop ? DialogTrigger : DrawerTrigger;
const Content = isDesktop ? DialogContent : DrawerContent; const Content = isDesktop ? DialogContent : DrawerContent;
const onOpenRef = useRef(onOpen);
onOpenRef.current = onOpen;
useEffect(() => { useEffect(() => {
if (onOpen) { onOpenRef.current?.(open);
onOpen(open); }, [open]);
}
}, [open, onOpen]);
if (!aiAnalysis) { if (!aiAnalysis) {
return null; return null;