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) => {
setEvents(prev => {
setEvents((prev: EventsByDate) => {
const newEvents = { ...prev };
const oldDateKey = Object.keys(newEvents).find(key =>
newEvents[key].some((e: Event) => e.id === eventId)
@@ -342,12 +342,19 @@ const DayColumn = ({
return hours * 60 + minutes;
};
const sortedEvents = useMemo(() =>
[...events].sort((a, b) =>
parseTimeToMinutes(a.time) - parseTimeToMinutes(b.time)
),
[events]
);
const sortedEvents = useMemo(() => {
const seenIds = new Set<string>();
return [...events]
.sort((a, b) => parseTimeToMinutes(a.time) - parseTimeToMinutes(b.time))
.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(() => {
setIsMobile(width < 768); // Update isMobile after hydration