feat: implement clearAllTokenState function to manage token and socket state
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user