diff --git a/frontend/src/components/footer.tsx b/frontend/src/components/footer.tsx
index ad0a30c..6055d1d 100644
--- a/frontend/src/components/footer.tsx
+++ b/frontend/src/components/footer.tsx
@@ -3,6 +3,7 @@ import React, {
} from 'react';
import {
+ AlertColor,
Alert,
AppBar,
Button,
@@ -25,7 +26,7 @@ enum UserFormType {
interface UserFormProps {
formType: UserFormType | null;
- close: (message?: string) => void;
+ close: (message?: string, severity?: AlertColor) => void;
username?: string;
}
@@ -76,7 +77,7 @@ function UserForm({ username: propUsername, formType, close }: UserFormProps) {
.then((res) => {
switch (res.status) {
case 200:
- close(`Action '${formType}' successful!`);
+ close(`Action '${formType}' successful!`, 'success');
break;
default:
setError(true);
@@ -89,22 +90,35 @@ function UserForm({ username: propUsername, formType, close }: UserFormProps) {
);
return (
- <>
+
);
}
@@ -127,7 +141,10 @@ function Footer() {
const [username, setUsername] = useState();
const [tempUser, setTempUser] = useState();
const [dialogTypeOpen, setDialogTypeOpen] = useState(null);
- const [snackbarMessage, setSnackbarMessage] = useState();
+ const [snackbarInfo, setSnackbarInfo] = useState<{
+ message: string,
+ severity: AlertColor,
+ } | undefined>();
const logout = useCallback(() => {
fetch(`${process.env.NODE_ENV === 'development' ? '//localhost:8080' : ''}/users/logout`, {
@@ -140,15 +157,15 @@ function Footer() {
.then((res) => {
switch (res.status) {
case 200:
- setSnackbarMessage('Logout successful!');
+ setSnackbarInfo({ message: 'Logout successful!', severity: 'success' });
setUsername(undefined);
break;
default:
- setSnackbarMessage('An error occurred while trying to log out.');
+ setSnackbarInfo({ message: 'An error occurred while trying to log out.', severity: 'error' });
break;
}
});
- }, [setSnackbarMessage]);
+ }, [setSnackbarInfo]);
useEffect(() => {
// Intuition: If the dialog was just closed (or on first render).
@@ -203,16 +220,20 @@ function Footer() {
setSnackbarMessage(undefined)}
- />
+ open={!!snackbarInfo}
+ autoHideDuration={10000}
+ onClose={() => setSnackbarInfo(undefined)}
+ >
+ {snackbarInfo?.message}
+
>
);
}