frigate/web/src/hooks/use-event-utils.ts

38 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-02-20 07:54:08 +03:00
import { useCallback } from 'react';
import { Event } from '@/types/event';
export const useEventUtils = (events: Event[], segmentDuration: number) => {
const isStartOfEvent = useCallback((time: number): boolean => {
return events.some((event) => {
const segmentStart = getSegmentStart(event.start_time);
return time >= segmentStart && time < segmentStart + segmentDuration * 1000;
});
}, [events, segmentDuration]);
const isEndOfEvent = useCallback((time: number): boolean => {
return events.some((event) => {
if (typeof event.end_time === 'number') {
const segmentEnd = getSegmentEnd(event.end_time);
return time >= segmentEnd - segmentDuration * 1000 && time < segmentEnd;
}
return false; // Return false if end_time is undefined
});
}, [events, segmentDuration]);
const getSegmentStart = useCallback((time: number): number => {
return Math.floor(time / (segmentDuration * 1000)) * (segmentDuration * 1000);
}, [segmentDuration]);
const getSegmentEnd = useCallback((time: number): number => {
return Math.ceil(time / (segmentDuration * 1000)) * (segmentDuration * 1000);
}, [segmentDuration]);
const alignDateToTimeline = useCallback((time: number): number => {
const remainder = time % (segmentDuration * 1000);
const adjustment = remainder !== 0 ? segmentDuration * 1000 - remainder : 0;
return time + adjustment;
}, [segmentDuration]);
return { isStartOfEvent, isEndOfEvent, getSegmentStart, getSegmentEnd, alignDateToTimeline };
};