import { ChangeEvent, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import toast from "react-hot-toast"; import { useUpdateLogoMutation, useUpdateServerMutation } from '../../../app/services/server'; import LogoUploader from "../../../common/component/AvatarUploader"; import Input from "../../../common/component/styled/Input"; import Label from "../../../common/component/styled/Label"; import Textarea from "../../../common/component/styled/Textarea"; import SaveTip from '../../../common/component/SaveTip'; import { useAppSelector } from '../../../app/store'; const Index = () => { const { t } = useTranslation("setting"); const { t: ct } = useTranslation(); const { loginUser, server } = useAppSelector((store) => { return { loginUser: store.authData.user, server: store.server }; }); const [uploadLogo, { isSuccess: uploadSuccess }] = useUpdateLogoMutation(); const [updateServer] = useUpdateServerMutation(); const [changed, setChanged] = useState(false); const [serverValues, setServerValues] = useState(server); const handleChange = (evt: ChangeEvent) => { const newValue = evt.target.value; const { type = "" } = evt.target.dataset; setServerValues((prev) => { return { ...prev, [type]: newValue }; }); }; const handleUpdateServer = () => { const { name, description } = serverValues; updateServer({ name, description }); }; const handleReset = () => { setServerValues(server); }; useEffect(() => { if (server) { setServerValues(server); } }, [server]); useEffect(() => { if (uploadSuccess) { toast.success(ct("tip.update")); } }, [uploadSuccess]); useEffect(() => { if (server && serverValues) { const { name, description } = serverValues; const { name: oName, description: oDescription } = server; if (oName !== name || oDescription !== description) { setChanged(true); } else { setChanged(false); } } }, [server, serverValues]); const { name, description, logo } = serverValues; const isAdmin = loginUser?.is_admin; if (!loginUser || !serverValues) return null; return ( <>
{isAdmin && (
{t("overview.upload_desc")}
)}