import React, { useState } from "react"; import { useHistory } from "react-router"; import { useTranslation } from "react-i18next"; import { Container, Form, Row, Col, Button, Modal } from "react-bootstrap"; import { useUser, userService } from "@/services/user"; import ChangePasswordDialog from "./ChangePasswordDialog"; import ChangeAvatarDialog from "./ChangeAvatarDialog"; import ChangeNicknameDialog from "./ChangeNicknameDialog"; import "./index.css"; const ConfirmLogoutDialog: React.FC<{ onClose: () => void; onConfirm: () => void; }> = ({ onClose, onConfirm }) => { const { t } = useTranslation(); return ( {t("settings.dialogConfirmLogout.title")} {t("settings.dialogConfirmLogout.prompt")} ); }; const SettingsPage: React.FC = (_) => { const { i18n, t } = useTranslation(); const user = useUser(); const history = useHistory(); const [dialog, setDialog] = useState< null | "changepassword" | "changeavatar" | "changenickname" | "logout" >(null); const language = i18n.language.slice(0, 2); return ( <> {user ? (

{t("settings.subheaders.account")}

setDialog("changeavatar")} > {t("settings.changeAvatar")}
setDialog("changenickname")} > {t("settings.changeNickname")}
setDialog("changepassword")} > {t("settings.changePassword")}
{ setDialog("logout"); }} > {t("settings.logout")}
) : null}

{t("settings.subheaders.customization")}

{t("settings.languagePrimary")}
{t("settings.languageSecondary")} { void i18n.changeLanguage(e.target.value); }} >
{(() => { switch (dialog) { case "changepassword": return setDialog(null)} />; case "logout": return ( setDialog(null)} onConfirm={() => { void userService.logout().then(() => { history.push("/"); }); }} /> ); case "changeavatar": return setDialog(null)} />; case "changenickname": return setDialog(null)} />; default: return null; } })()} ); }; export default SettingsPage;