|
1 | 1 | "use client"; |
2 | 2 |
|
| 3 | +import { SESSION_LOGOUT_ROUTE } from "@src/app/session-logout/constants"; |
3 | 4 | import { userExtendSession } from "@src/utils/auth/user-extend-session"; |
4 | 5 | import { createRef, JSX, useEffect } from "react"; |
5 | 6 | import styles from "./styles.module.css"; |
6 | 7 | import { userLogout } from "@src/utils/auth/user-logout"; |
7 | 8 | import useInactivityTimer from "@src/utils/auth/inactivity-timer"; |
8 | 9 | import { useSession } from "next-auth/react"; |
| 10 | +import { useRouter } from "next/navigation"; |
9 | 11 |
|
10 | 12 | const InactivityDialog = (): JSX.Element => { |
| 13 | + const router = useRouter(); |
11 | 14 | const { status } = useSession(); |
12 | 15 | const { isIdle, isTimedOut } = useInactivityTimer(); |
13 | 16 | const dialogRef = createRef<HTMLDialogElement>(); |
14 | 17 |
|
15 | 18 | useEffect(() => { |
16 | 19 | const isAuthenticated = status === "authenticated"; |
17 | 20 |
|
| 21 | + if (status === "unauthenticated") { |
| 22 | + dialogRef.current?.close(); |
| 23 | + router.push(SESSION_LOGOUT_ROUTE); |
| 24 | + return; |
| 25 | + } |
| 26 | + |
18 | 27 | if (isAuthenticated && isTimedOut) { |
19 | 28 | dialogRef.current?.close(); |
20 | 29 | userLogout(); |
21 | 30 | } else if (isAuthenticated && isIdle) { |
22 | 31 | dialogRef.current?.showModal(); |
23 | 32 | } |
24 | | - }, [dialogRef, isIdle, isTimedOut, status]); |
| 33 | + }, [dialogRef, isIdle, isTimedOut, router, status]); |
25 | 34 |
|
26 | 35 | return ( |
27 | 36 | <dialog ref={dialogRef} className={styles.warningDialog}> |
|
0 commit comments