diff --git a/web/src/components/timeline/DetailStream.tsx b/web/src/components/timeline/DetailStream.tsx
index 8fb569dd7..73e0cf530 100644
--- a/web/src/components/timeline/DetailStream.tsx
+++ b/web/src/components/timeline/DetailStream.tsx
@@ -201,7 +201,7 @@ type ReviewGroupProps = {
review: ReviewSegment;
id: string;
config: FrigateConfig;
- onSeek: (timestamp: number) => void;
+ onSeek: (timestamp: number, play?: boolean) => void;
isActive?: boolean;
onActivate?: () => void;
onOpenUpload?: (e: Event) => void;
@@ -325,7 +325,7 @@ function ReviewGroup({
type EventCollapsibleProps = {
event: Event;
effectiveTime?: number;
- onSeek: (ts: number) => void;
+ onSeek: (ts: number, play?: boolean) => void;
onOpenUpload?: (e: Event) => void;
};
function EventCollapsible({
@@ -450,9 +450,7 @@ function EventCollapsible({
{
- onSeek(ts);
- }}
+ onSeek={onSeek}
effectiveTime={effectiveTime}
/>
@@ -492,7 +490,9 @@ function LifecycleItem({ event, isActive, onSeek }: LifecycleItemProps) {
return (
onSeek?.(event.timestamp ?? 0, false)}
+ onClick={() => {
+ onSeek?.(event.timestamp ?? 0, false);
+ }}
className={cn(
"flex cursor-pointer items-center gap-2 text-sm text-primary-variant",
isActive
@@ -518,7 +518,7 @@ function ObjectTimeline({
effectiveTime,
}: {
eventId: string;
- onSeek: (ts: number) => void;
+ onSeek: (ts: number, play?: boolean) => void;
effectiveTime?: number;
}) {
const { t } = useTranslation("views/events");
@@ -548,7 +548,7 @@ function ObjectTimeline({
Math.abs((effectiveTime ?? 0) - (event.timestamp ?? 0)) <= 0.5;
return (
= time) {
- mainControllerRef.current?.seekToTimestamp(time, !play);
+ mainControllerRef.current?.seekToTimestamp(time, play);
} else {
updateSelectedSegment(time, true);
}
@@ -1005,7 +1005,9 @@ function Timeline({
) : timelineType == "detail" ? (
manuallySetCurrentTime(timestamp, true)}
+ onSeek={(timestamp, play) =>
+ manuallySetCurrentTime(timestamp, play ?? true)
+ }
reviewItems={mainCameraReviewItems}
/>
) : (