forked from Github/frigate
Fix linter and fix lint issues (#10141)
This commit is contained in:
@@ -7,7 +7,7 @@ export function useResizeObserver(...refs: MutableRefObject<Element | null>[]) {
|
||||
height: 0,
|
||||
x: -Infinity,
|
||||
y: -Infinity,
|
||||
})
|
||||
}),
|
||||
);
|
||||
const resizeObserver = useMemo(
|
||||
() =>
|
||||
@@ -16,7 +16,7 @@ export function useResizeObserver(...refs: MutableRefObject<Element | null>[]) {
|
||||
setDimensions(entries.map((entry) => entry.contentRect));
|
||||
});
|
||||
}),
|
||||
[]
|
||||
[],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import { FilterType } from "@/types/filter";
|
||||
import { useMemo, useState } from "react";
|
||||
|
||||
type useApiFilterReturn<F extends FilterType> = [
|
||||
filter: F | undefined,
|
||||
setFilter: (filter: F) => void,
|
||||
searchParams: {
|
||||
// accept any type for a filter
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
[key: string]: any;
|
||||
},
|
||||
];
|
||||
|
||||
@@ -13,12 +13,12 @@ type useCameraActivityReturn = {
|
||||
};
|
||||
|
||||
export default function useCameraActivity(
|
||||
camera: CameraConfig
|
||||
camera: CameraConfig,
|
||||
): useCameraActivityReturn {
|
||||
const [activeObjects, setActiveObjects] = useState<string[]>([]);
|
||||
const hasActiveObjects = useMemo(
|
||||
() => activeObjects.length > 0,
|
||||
[activeObjects]
|
||||
[activeObjects],
|
||||
);
|
||||
|
||||
const { payload: detectingMotion } = useMotionActivity(camera.name);
|
||||
@@ -56,7 +56,7 @@ export default function useCameraActivity(
|
||||
}
|
||||
}
|
||||
}
|
||||
}, [event, activeObjects]);
|
||||
}, [camera, event, activeObjects]);
|
||||
|
||||
return {
|
||||
activeTracking: hasActiveObjects,
|
||||
|
||||
@@ -6,7 +6,7 @@ import { LivePlayerMode } from "@/types/live";
|
||||
|
||||
export default function useCameraLiveMode(
|
||||
cameraConfig: CameraConfig,
|
||||
preferredMode?: string
|
||||
preferredMode?: string,
|
||||
): LivePlayerMode | undefined {
|
||||
const { data: config } = useSWR<FrigateConfig>("config");
|
||||
|
||||
@@ -18,7 +18,7 @@ export default function useCameraLiveMode(
|
||||
return (
|
||||
cameraConfig &&
|
||||
Object.keys(config.go2rtc.streams || {}).includes(
|
||||
cameraConfig.live.stream_name
|
||||
cameraConfig.live.stream_name,
|
||||
)
|
||||
);
|
||||
}, [config, cameraConfig]);
|
||||
@@ -32,10 +32,12 @@ export default function useCameraLiveMode(
|
||||
}
|
||||
|
||||
return undefined;
|
||||
// config will be updated if camera config is updated
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [cameraConfig, restreamEnabled]);
|
||||
const [viewSource] = usePersistence<LivePlayerMode>(
|
||||
`${cameraConfig.name}-source`,
|
||||
defaultLiveMode
|
||||
defaultLiveMode,
|
||||
);
|
||||
|
||||
if (
|
||||
|
||||
@@ -3,7 +3,7 @@ import { ReviewSegment } from "@/types/review";
|
||||
|
||||
export const useEventUtils = (
|
||||
events: ReviewSegment[],
|
||||
segmentDuration: number
|
||||
segmentDuration: number,
|
||||
) => {
|
||||
const isStartOfEvent = useCallback(
|
||||
(time: number): boolean => {
|
||||
@@ -12,7 +12,9 @@ export const useEventUtils = (
|
||||
return time >= segmentStart && time < segmentStart + segmentDuration;
|
||||
});
|
||||
},
|
||||
[events, segmentDuration]
|
||||
// we know that these deps are correct
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[events, segmentDuration],
|
||||
);
|
||||
|
||||
const isEndOfEvent = useCallback(
|
||||
@@ -25,21 +27,23 @@ export const useEventUtils = (
|
||||
return false;
|
||||
});
|
||||
},
|
||||
[events, segmentDuration]
|
||||
// we know that these deps are correct
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[events, segmentDuration],
|
||||
);
|
||||
|
||||
const getSegmentStart = useCallback(
|
||||
(time: number): number => {
|
||||
return Math.floor(time / segmentDuration) * segmentDuration;
|
||||
},
|
||||
[segmentDuration]
|
||||
[segmentDuration],
|
||||
);
|
||||
|
||||
const getSegmentEnd = useCallback(
|
||||
(time: number): number => {
|
||||
return Math.ceil(time / segmentDuration) * segmentDuration;
|
||||
},
|
||||
[segmentDuration]
|
||||
[segmentDuration],
|
||||
);
|
||||
|
||||
const alignEndDateToTimeline = useCallback(
|
||||
@@ -48,16 +52,16 @@ export const useEventUtils = (
|
||||
const adjustment = remainder !== 0 ? segmentDuration - remainder : 0;
|
||||
return time + adjustment;
|
||||
},
|
||||
[segmentDuration]
|
||||
[segmentDuration],
|
||||
);
|
||||
|
||||
const alignStartDateToTimeline = useCallback(
|
||||
(time: number): number => {
|
||||
const remainder = time % segmentDuration;
|
||||
const adjustment = remainder === 0 ? 0 : -(remainder);
|
||||
const adjustment = remainder === 0 ? 0 : -remainder;
|
||||
return time + adjustment;
|
||||
},
|
||||
[segmentDuration]
|
||||
[segmentDuration],
|
||||
);
|
||||
|
||||
return {
|
||||
|
||||
@@ -37,7 +37,7 @@ function useDraggableHandler({
|
||||
e.stopPropagation();
|
||||
setIsDragging(true);
|
||||
},
|
||||
[setIsDragging]
|
||||
[setIsDragging],
|
||||
);
|
||||
|
||||
const handleMouseUp = useCallback(
|
||||
@@ -48,7 +48,7 @@ function useDraggableHandler({
|
||||
setIsDragging(false);
|
||||
}
|
||||
},
|
||||
[isDragging, setIsDragging]
|
||||
[isDragging, setIsDragging],
|
||||
);
|
||||
|
||||
const handleMouseMove = useCallback(
|
||||
@@ -90,13 +90,13 @@ function useDraggableHandler({
|
||||
visibleTimelineHeight - timelineTop + parentScrollTop,
|
||||
Math.max(
|
||||
segmentHeight + scrolled,
|
||||
e.clientY - timelineTop + parentScrollTop
|
||||
)
|
||||
e.clientY - timelineTop + parentScrollTop,
|
||||
),
|
||||
);
|
||||
|
||||
const segmentIndex = Math.floor(newHandlePosition / segmentHeight);
|
||||
const segmentStartTime = alignStartDateToTimeline(
|
||||
timelineStart - segmentIndex * segmentDuration
|
||||
timelineStart - segmentIndex * segmentDuration,
|
||||
);
|
||||
|
||||
if (showHandlebar) {
|
||||
@@ -105,7 +105,7 @@ function useDraggableHandler({
|
||||
thumb.style.top = `${newHandlePosition - segmentHeight}px`;
|
||||
if (currentTimeRef.current) {
|
||||
currentTimeRef.current.textContent = new Date(
|
||||
segmentStartTime * 1000
|
||||
segmentStartTime * 1000,
|
||||
).toLocaleTimeString([], {
|
||||
hour: "2-digit",
|
||||
minute: "2-digit",
|
||||
@@ -116,12 +116,14 @@ function useDraggableHandler({
|
||||
if (setHandlebarTime) {
|
||||
setHandlebarTime(
|
||||
timelineStart -
|
||||
(newHandlePosition / segmentHeight) * segmentDuration
|
||||
(newHandlePosition / segmentHeight) * segmentDuration,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// we know that these deps are correct
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[
|
||||
isDragging,
|
||||
contentRef,
|
||||
@@ -129,7 +131,7 @@ function useDraggableHandler({
|
||||
showHandlebar,
|
||||
timelineDuration,
|
||||
timelineStart,
|
||||
]
|
||||
],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -141,6 +143,8 @@ function useDraggableHandler({
|
||||
block: "center",
|
||||
});
|
||||
}
|
||||
// temporary until behavior is decided
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
return { handleMouseDown, handleMouseUp, handleMouseMove };
|
||||
|
||||
@@ -2,7 +2,7 @@ import { useCallback, useEffect } from "react";
|
||||
|
||||
export default function useKeyboardListener(
|
||||
keys: string[],
|
||||
listener: (key: string, down: boolean, repeat: boolean) => void
|
||||
listener: (key: string, down: boolean, repeat: boolean) => void,
|
||||
) {
|
||||
const keyDownListener = useCallback(
|
||||
(e: KeyboardEvent) => {
|
||||
@@ -15,7 +15,7 @@ export default function useKeyboardListener(
|
||||
listener(e.key, true, e.repeat);
|
||||
}
|
||||
},
|
||||
[listener]
|
||||
[keys, listener],
|
||||
);
|
||||
|
||||
const keyUpListener = useCallback(
|
||||
@@ -29,7 +29,7 @@ export default function useKeyboardListener(
|
||||
listener(e.key, false, false);
|
||||
}
|
||||
},
|
||||
[listener]
|
||||
[keys, listener],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -39,5 +39,5 @@ export default function useKeyboardListener(
|
||||
document.removeEventListener("keydown", keyDownListener);
|
||||
document.removeEventListener("keyup", keyUpListener);
|
||||
};
|
||||
}, [listener]);
|
||||
}, [listener, keyDownListener, keyUpListener]);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,9 @@ export default function useOverlayState(key: string) {
|
||||
newLocationState[key] = value;
|
||||
navigate(location.pathname, { state: newLocationState });
|
||||
},
|
||||
[navigate]
|
||||
// we know that these deps are correct
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
[key, navigate],
|
||||
);
|
||||
|
||||
const overlayStateValue = location.state && location.state[key];
|
||||
|
||||
@@ -9,7 +9,7 @@ type usePersistenceReturn<S> = [
|
||||
|
||||
export function usePersistence<S>(
|
||||
key: string,
|
||||
defaultValue: S | undefined = undefined
|
||||
defaultValue: S | undefined = undefined,
|
||||
): usePersistenceReturn<S> {
|
||||
const [value, setInternalValue] = useState<S | undefined>(defaultValue);
|
||||
const [loaded, setLoaded] = useState<boolean>(false);
|
||||
@@ -23,7 +23,7 @@ export function usePersistence<S>(
|
||||
|
||||
update();
|
||||
},
|
||||
[key]
|
||||
[key],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -4,13 +4,13 @@ import { ReviewSegment } from "@/types/review";
|
||||
export const useSegmentUtils = (
|
||||
segmentDuration: number,
|
||||
events: ReviewSegment[],
|
||||
severityType: string
|
||||
severityType: string,
|
||||
) => {
|
||||
const getSegmentStart = useCallback(
|
||||
(time: number): number => {
|
||||
return Math.floor(time / segmentDuration) * segmentDuration;
|
||||
},
|
||||
[segmentDuration]
|
||||
[segmentDuration],
|
||||
);
|
||||
|
||||
const getSegmentEnd = useCallback(
|
||||
@@ -23,7 +23,7 @@ export const useSegmentUtils = (
|
||||
return Date.now() / 1000 + segmentDuration;
|
||||
}
|
||||
},
|
||||
[segmentDuration]
|
||||
[segmentDuration],
|
||||
);
|
||||
|
||||
const mapSeverityToNumber = useCallback((severity: string): number => {
|
||||
@@ -41,7 +41,7 @@ export const useSegmentUtils = (
|
||||
|
||||
const displaySeverityType = useMemo(
|
||||
() => mapSeverityToNumber(severityType ?? ""),
|
||||
[severityType]
|
||||
[mapSeverityToNumber, severityType],
|
||||
);
|
||||
|
||||
const getSeverity = useCallback(
|
||||
@@ -54,7 +54,7 @@ export const useSegmentUtils = (
|
||||
|
||||
if (activeEvents?.length === 0) return [0];
|
||||
const severityValues = activeEvents.map((event) =>
|
||||
mapSeverityToNumber(event.severity)
|
||||
mapSeverityToNumber(event.severity),
|
||||
);
|
||||
const highestSeverityValue = Math.max(...severityValues);
|
||||
|
||||
@@ -67,7 +67,7 @@ export const useSegmentUtils = (
|
||||
return [highestSeverityValue];
|
||||
}
|
||||
},
|
||||
[events, getSegmentStart, getSegmentEnd, mapSeverityToNumber]
|
||||
[events, getSegmentStart, getSegmentEnd, mapSeverityToNumber],
|
||||
);
|
||||
|
||||
const getReviewed = useCallback(
|
||||
@@ -80,12 +80,12 @@ export const useSegmentUtils = (
|
||||
);
|
||||
});
|
||||
},
|
||||
[events, getSegmentStart, getSegmentEnd]
|
||||
[events, getSegmentStart, getSegmentEnd],
|
||||
);
|
||||
|
||||
const shouldShowRoundedCorners = useCallback(
|
||||
(
|
||||
segmentTime: number
|
||||
segmentTime: number,
|
||||
): {
|
||||
roundTopPrimary: boolean;
|
||||
roundBottomPrimary: boolean;
|
||||
@@ -163,7 +163,7 @@ export const useSegmentUtils = (
|
||||
roundBottomSecondary,
|
||||
};
|
||||
},
|
||||
[events, getSegmentStart, getSegmentEnd, segmentDuration, severityType]
|
||||
[events, getSegmentStart, getSegmentEnd, segmentDuration, severityType],
|
||||
);
|
||||
|
||||
const getEventStart = useCallback(
|
||||
@@ -178,7 +178,7 @@ export const useSegmentUtils = (
|
||||
|
||||
return matchingEvent?.start_time ?? 0;
|
||||
},
|
||||
[events, getSegmentStart, getSegmentEnd, severityType]
|
||||
[events, getSegmentStart, getSegmentEnd, severityType],
|
||||
);
|
||||
|
||||
const getEventThumbnail = useCallback(
|
||||
@@ -193,7 +193,7 @@ export const useSegmentUtils = (
|
||||
|
||||
return matchingEvent?.thumb_path ?? "";
|
||||
},
|
||||
[events, getSegmentStart, getSegmentEnd, severityType]
|
||||
[events, getSegmentStart, getSegmentEnd, severityType],
|
||||
);
|
||||
|
||||
return {
|
||||
@@ -204,6 +204,6 @@ export const useSegmentUtils = (
|
||||
getReviewed,
|
||||
shouldShowRoundedCorners,
|
||||
getEventStart,
|
||||
getEventThumbnail
|
||||
getEventThumbnail,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user