import Section from "Frontend/components/general/Section"; import Input from "Frontend/components/general/input/Input"; import {addToast, Button, Input as NextUiInput, Tooltip} from "@heroui/react"; import {Form, Formik} from "formik"; import {ArrowCounterClockwise, Check, Info, Trash} from "@phosphor-icons/react"; import React, {useEffect, useState} from "react"; import {useAuth} from "Frontend/util/auth"; import * as Yup from "yup"; import UserUpdateDto from "Frontend/generated/org/gameyfin/app/users/dto/UserUpdateDto"; import {EmailConfirmationEndpoint, MessageEndpoint, UserEndpoint} from "Frontend/generated/endpoints"; import {SmallInfoField} from "Frontend/components/general/SmallInfoField"; import {removeAvatar, uploadAvatar} from "Frontend/endpoints/AvatarEndpoint"; import Avatar from "Frontend/components/general/Avatar"; export default function ProfileManagement() { const auth = useAuth(); const [avatar, setAvatar] = useState(); const [configSaved, setConfigSaved] = useState(false); const [messagesEnabled, setMessagesEnabled] = useState(false); useEffect(() => { MessageEndpoint.isEnabled().then(setMessagesEnabled); }, []); useEffect(() => { if (configSaved) { setTimeout(() => setConfigSaved(false), 2000); } }, [configSaved]) function onFileSelected(event: any) { setAvatar(event.target.files[0]); } async function handleSubmit(values: any) { const userUpdate: UserUpdateDto = { username: values.username, email: values.email } if (values.newPassword.length > 0) { userUpdate.password = values.newPassword; } await UserEndpoint.updateUser(userUpdate); setConfigSaved(true); if (values.newPassword.length > 0) { addToast({ title: "Password changed", description: "Please log in again", color: "success" }); setTimeout(() => { auth.logout(); }, 500); } } return ( <> {(formik: { values: any; isSubmitting: any; dirty: boolean; }) => (

My Profile

{auth.state.user?.managedBySso &&

Your account is managed externally.

}
{formik.values.newPassword.length > 0 && }
{(auth.state.user?.emailConfirmed === false && !auth.state.user.managedBySso) && }
{!messagesEnabled &&
Email services are disabled. Please contact your administrator.
}
)}
); }