Fix "ghost" events on mobile when dragging
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user