import React from "react"; import LoadingButton from "@mui/lab/LoadingButton"; import Box from "@mui/material/Box"; import DialogActions from "@mui/material/DialogActions"; import DialogContent from "@mui/material/DialogContent"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import { useSnackbar } from "notistack"; import { useApi } from "../contexts/ApiContext"; import { useI18n } from "../contexts/I18nContext"; import { useUser } from "../contexts/UserContext"; import { title } from "../util"; const LoginForm: React.FC = () => { const { enqueueSnackbar } = useSnackbar(); const { t } = useI18n(); const { login } = useUser(); const api = useApi(); const [username, setUsername] = React.useState(""); const [password, setPassword] = React.useState(""); const [loading, setLoading] = React.useState(false); const operation = api.operations["bananas.login:create"]; const { properties } = operation.request.body.schema; const handleSubmit = (event: React.FormEvent) => { event.preventDefault(); setLoading(true); login(username, password) .then((user) => { if (user != null) { enqueueSnackbar(`${t("Welcome,")} ${user.full_name}`, { variant: "success", }); } else { enqueueSnackbar(t("Unable to log in with provided credentials."), { variant: "error", }); } }) .finally(() => setLoading(false)); }; return ( setUsername(e.target.value)} /> setPassword(e.target.value)} /> {t("Log in")} ); }; export default LoginForm;