feat: implement clearAllTokenState function to manage token and socket state

This commit is contained in:
2025-09-19 19:43:35 +02:00
parent 84c6d72faf
commit e44a7672d5

View File

@@ -15,6 +15,21 @@ export default function EventPage() {
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`; return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
}; };
// Function to clear all token and queue state
const clearAllTokenState = () => {
console.log("Clearing all token state");
setHasAccess(false);
setTokenExpiry(null);
setPosition(null);
setEstimatedWait(null);
try {
localStorage.removeItem("event_token");
} catch (e) {}
if (socketRef.current) {
socketRef.current.disconnect();
}
};
const [connected, setConnected] = useState(false); const [connected, setConnected] = useState(false);
const [position, setPosition] = useState<number | null>(null); const [position, setPosition] = useState<number | null>(null);
const [estimatedWait, setEstimatedWait] = useState<number | null>(null); const [estimatedWait, setEstimatedWait] = useState<number | null>(null);
@@ -106,11 +121,11 @@ export default function EventPage() {
}); });
socket.on("token_expired", () => { socket.on("token_expired", () => {
setHasAccess(false); console.log("Token expired received from server");
setTokenExpiry(null); clearAllTokenState();
localStorage.removeItem("event_token"); setTimeout(() => {
// Redirect to homepage
window.location.href = "/"; window.location.href = "/";
}, 100);
}); });
}) })
.catch(error => { .catch(error => {
@@ -123,17 +138,10 @@ export default function EventPage() {
}; };
}, [eventId, loading]); }, [eventId, loading]);
// Check for existing token on page load // Check for existing token on page load and clear everything
useEffect(() => { useEffect(() => {
try { console.log('Page loaded, clearing any existing token state');
const existingToken = localStorage.getItem("event_token"); clearAllTokenState();
if (existingToken) {
console.log('Found existing token, clearing it');
localStorage.removeItem("event_token");
}
} catch (e) {
console.log('localStorage access error:', e);
}
}, []); }, []);
// Token expiry timer - ellenőrzés minden másodpercben // Token expiry timer - ellenőrzés minden másodpercben
@@ -144,15 +152,11 @@ export default function EventPage() {
const msLeft = tokenExpiry - Date.now(); const msLeft = tokenExpiry - Date.now();
console.log('Token check - ms left:', msLeft); console.log('Token check - ms left:', msLeft);
if (msLeft <= 0) { if (msLeft <= 0) {
console.log('Token expired, redirecting to homepage'); console.log('Token expired locally, redirecting to homepage');
setHasAccess(false); clearAllTokenState();
setTokenExpiry(null); setTimeout(() => {
localStorage.removeItem("event_token");
// Disconnect socket and redirect to homepage
if (socketRef.current) {
socketRef.current.disconnect();
}
window.location.href = "/"; window.location.href = "/";
}, 100);
} }
}, 1000); }, 1000);
return () => clearInterval(id); return () => clearInterval(id);