diff --git a/src/pages/CalendarPage.tsx b/src/pages/CalendarPage.tsx index 1895c1c..be6a7d2 100644 --- a/src/pages/CalendarPage.tsx +++ b/src/pages/CalendarPage.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, useCallback } from 'react' +import { useState, useEffect, useCallback, useRef } from 'react' import { BookingCalendar } from '../components/calendar/BookingCalendar' import { RENTAL_OBJECTS, MOCK_RENTAL_BOOKINGS } from '../data/rentalData' import { useModules } from '../contexts/ModulesContext' @@ -51,6 +51,15 @@ export function CalendarPage() { const { send, connected } = useHotelSocket({ slug, token: session?.token ?? null, onMessage: handleWsMessage }) + // Clear stale locks on WS reconnect (may have missed unlock/booking:created while disconnected) + const prevConnected = useRef(false) + useEffect(() => { + if (connected && !prevConnected.current) { + setLocks(new Map()) + } + prevConnected.current = connected + }, [connected]) + const handleCreate = async (data: Partial) => { try { const created = await api.bookings.create(slug, {