Fix "ghost" events on mobile when dragging

This commit is contained in:
2025-03-28 13:42:38 -04:00
parent 684cf33360
commit e0db22871a

View File

@@ -188,7 +188,7 @@ const Calendar = () => {
}, []); }, []);
const handleEventMove = (eventId: string, newDate: Date) => { const handleEventMove = (eventId: string, newDate: Date) => {
setEvents(prev => { setEvents((prev: EventsByDate) => {
const newEvents = { ...prev }; const newEvents = { ...prev };
const oldDateKey = Object.keys(newEvents).find(key => const oldDateKey = Object.keys(newEvents).find(key =>
newEvents[key].some((e: Event) => e.id === eventId) newEvents[key].some((e: Event) => e.id === eventId)
@@ -342,12 +342,19 @@ const DayColumn = ({
return hours * 60 + minutes; return hours * 60 + minutes;
}; };
const sortedEvents = useMemo(() => const sortedEvents = useMemo(() => {
[...events].sort((a, b) => const seenIds = new Set<string>();
parseTimeToMinutes(a.time) - parseTimeToMinutes(b.time) return [...events]
), .sort((a, b) => parseTimeToMinutes(a.time) - parseTimeToMinutes(b.time))
[events] .filter(event => {
); if (seenIds.has(event.id)) {
//console.warn(`Duplicate event ID detected: ${event.id}`);
return false;
}
seenIds.add(event.id);
return true;
});
}, [events]);
useEffect(() => { useEffect(() => {
setIsMobile(width < 768); // Update isMobile after hydration setIsMobile(width < 768); // Update isMobile after hydration