|
| 1 | +import Button from "@mui/material/Button"; |
| 2 | +import ButtonGroup from "@mui/material/ButtonGroup"; |
| 3 | +import Dialog from "@mui/material/Dialog"; |
| 4 | +import DialogActions from "@mui/material/DialogActions"; |
| 5 | +import DialogContent from "@mui/material/DialogContent"; |
| 6 | +import DialogTitle from "@mui/material/DialogTitle"; |
| 7 | +import { useEffect, useState } from "react"; |
| 8 | +import { injectIntl, IntlShape } from "react-intl"; |
| 9 | +import { useAuth } from "../../auth/auth"; |
| 10 | + |
| 11 | +interface SessionExpiredDialogProps { |
| 12 | + intl: IntlShape; |
| 13 | +} |
| 14 | + |
| 15 | +const SessionExpiredDialog = ({ intl }: SessionExpiredDialogProps) => { |
| 16 | + const { login, logout, addAccessTokenExpiredCallback } = useAuth(); |
| 17 | + const { formatMessage } = intl; |
| 18 | + const [showSessionExpiredDialog, setShowSessionExpiredDialog] = |
| 19 | + useState(false); |
| 20 | + |
| 21 | + useEffect(() => { |
| 22 | + return addAccessTokenExpiredCallback(() => |
| 23 | + setShowSessionExpiredDialog(true), |
| 24 | + ); |
| 25 | + }, [setShowSessionExpiredDialog, addAccessTokenExpiredCallback]); |
| 26 | + |
| 27 | + return ( |
| 28 | + <Dialog open={showSessionExpiredDialog}> |
| 29 | + <DialogTitle> |
| 30 | + {formatMessage({ id: "session_expired_title" })} |
| 31 | + </DialogTitle> |
| 32 | + <DialogContent> |
| 33 | + {formatMessage({ id: "session_expired_body" })} |
| 34 | + </DialogContent> |
| 35 | + <DialogActions> |
| 36 | + <ButtonGroup fullWidth sx={{ justifyContent: "space-between", gap: 2 }}> |
| 37 | + <Button |
| 38 | + variant="text" |
| 39 | + onClick={() => logout({ returnTo: window.location.origin })} |
| 40 | + color="secondary" |
| 41 | + > |
| 42 | + {formatMessage({ id: "log_out" })} |
| 43 | + </Button> |
| 44 | + <Button variant="text" onClick={() => login()} color="primary"> |
| 45 | + {formatMessage({ id: "log_in" })} |
| 46 | + </Button> |
| 47 | + </ButtonGroup> |
| 48 | + </DialogActions> |
| 49 | + </Dialog> |
| 50 | + ); |
| 51 | +}; |
| 52 | + |
| 53 | +export default injectIntl(SessionExpiredDialog); |
0 commit comments