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')}`;
|
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");
|
window.location.href = "/";
|
||||||
// Disconnect socket and redirect to homepage
|
}, 100);
|
||||||
if (socketRef.current) {
|
|
||||||
socketRef.current.disconnect();
|
|
||||||
}
|
|
||||||
window.location.href = "/";
|
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000);
|
||||||
return () => clearInterval(id);
|
return () => clearInterval(id);
|
||||||
|
|||||||
Reference in New Issue
Block a user