From 42dc4518e20a9443c6e1ea865176b311382e8652 Mon Sep 17 00:00:00 2001 From: HotelSync Date: Tue, 17 Mar 2026 18:29:14 +0300 Subject: [PATCH] Switch session storage from sessionStorage to localStorage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sessionStorage is per-tab — new tabs had no session, so WebSocket didn't connect and real-time lock/booking sync didn't work. localStorage shares session across tabs in the same browser. Co-Authored-By: Claude Sonnet 4.6 --- src/contexts/AuthContext.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/contexts/AuthContext.tsx b/src/contexts/AuthContext.tsx index 5d3d790..ddab047 100644 --- a/src/contexts/AuthContext.tsx +++ b/src/contexts/AuthContext.tsx @@ -13,7 +13,7 @@ const AuthContext = createContext(null) export function AuthProvider({ children }: { children: React.ReactNode }) { const [session, setSession] = useState(() => { - const stored = sessionStorage.getItem('hotelsync-session') + const stored = localStorage.getItem('hotelsync-session') return stored ? JSON.parse(stored) : null }) @@ -22,7 +22,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { const { access_token, user } = await api.auth.login(email, password) const s: AuthSession = { user, token: access_token } setSession(s) - sessionStorage.setItem('hotelsync-session', JSON.stringify(s)) + localStorage.setItem('hotelsync-session', JSON.stringify(s)) return user } catch (err) { if (err instanceof ApiError && err.status === 401) return null @@ -33,7 +33,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { const logout = async () => { try { await api.auth.logout() } catch { /* ignore */ } setSession(null) - sessionStorage.removeItem('hotelsync-session') + localStorage.removeItem('hotelsync-session') } return (