I am trying to create an autologout after the user has been inactive for about 10secs but it is not working. it does not logout the user after the specified time.
const Layout = () => {
let timer;
useEffect(() => {
Object.values(events).forEach((item) => {
window.addEventListener(item, () => {
resetTimer();
handleLogoutTimer();
});
});
}, [])
const events = [
"load",
"mousemove",
"mousedown",
"click",
"scroll",
"keypress",
];
const handleLogoutTimer = () => {
timer = setTimeout(() => {
// clears any pending timer.
resetTimer();
// Listener clean up. Removes the existing event listener from the window
Object.values(events).forEach((item) => {
window.removeEventListener(item, resetTimer);
});
// logs out user
navLogout()
}, 10000); // 10000ms = 10secs. You can change the time.
};
// this resets the timer if it exists.
const resetTimer = () => {
if (timer) clearTimeout(timer);
};
return (
<div >
<Row>
<Col lg={5} className=''>
<Aside />
</Col>
<Col xl={19} lg={19} md={19} sm={24} xs={24}>
<Row>
<Col span={24}>
<Navbar />
</Col>
<Col span={24}>
<div className="outlet">
<Outlet />
</div>
</Col>
</Row>
</Col>
</Row>
</div>
)
}
export default Layout