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