Files
cally/components/pages/calendar/useCalendarControls.ts
Milan Paunovic 70db8bdc0b New calendar
2024-12-15 16:29:34 +01:00

45 lines
1.5 KiB
TypeScript

import { useCallback } from 'react';
import debounce from 'debounce';
import { useSetAtom } from 'jotai';
import {
editVisibleAtom,
eventForEditAtom,
selectedNewEventDateAtom,
selectedDateAtom,
} from '@/components/pages/calendar/atoms';
import {DateOrDateTime} from "@howljs/calendar-kit";
export const useCalendarControls = (events: any[]) => {
const setEditVisible = useSetAtom(editVisibleAtom);
const setEventForEdit = useSetAtom(eventForEditAtom);
const setSelectedNewEndDate = useSetAtom(selectedNewEventDateAtom);
const setSelectedDate = useSetAtom(selectedDateAtom);
const handlePressEvent = useCallback((event: any) => {
const foundEvent = events?.find(x => x.id === event.id);
setEditVisible(true);
setEventForEdit(foundEvent!);
}, [events, setEditVisible, setEventForEdit]);
const handlePressCell = useCallback((date: DateOrDateTime) => {
const selectedDate = new Date(date.dateTime!);
const minutes = selectedDate.getMinutes();
selectedDate.setMinutes(minutes - (minutes % 30), 0, 0); // Also sets seconds and milliseconds to 0
setSelectedNewEndDate(selectedDate);
}, [setSelectedNewEndDate]);
const debouncedOnDateChanged = useCallback(
debounce((date: string) => {
setSelectedDate(new Date(date));
}, 50),
[setSelectedDate]
);
return {
handlePressEvent,
handlePressCell,
debouncedOnDateChanged
};
};