import { useState } from "react"; import { useTranslation } from "react-i18next"; import { toast } from "react-hot-toast"; import { useGlobalStore } from "@/store/module"; import * as api from "@/helpers/api"; import Icon from "./Icon"; import { generateDialog } from "./Dialog"; import LocaleSelect from "./LocaleSelect"; import AppearanceSelect from "./AppearanceSelect"; type Props = DialogProps; const UpdateCustomizedProfileDialog: React.FC = ({ destroy }: Props) => { const { t } = useTranslation(); const globalStore = useGlobalStore(); const [state, setState] = useState(globalStore.state.systemStatus.customizedProfile); const handleCloseButtonClick = () => { destroy(); }; const handleNameChanged = (e: React.ChangeEvent) => { setState((state) => { return { ...state, name: e.target.value as string, }; }); }; const handleLogoUrlChanged = (e: React.ChangeEvent) => { setState((state) => { return { ...state, logoUrl: e.target.value as string, }; }); }; const handleDescriptionChanged = (e: React.ChangeEvent) => { setState((state) => { return { ...state, description: e.target.value as string, }; }); }; const handleLocaleSelectChange = (locale: Locale) => { setState((state) => { return { ...state, locale: locale, }; }); }; const handleAppearanceSelectChange = (appearance: Appearance) => { setState((state) => { return { ...state, appearance: appearance, }; }); }; const handleRestoreButtonClick = () => { setState({ name: "memos", logoUrl: "/logo.webp", description: "", locale: "en", appearance: "system", externalUrl: "", }); }; const handleSaveButtonClick = async () => { if (state.name === "") { toast.error("Please fill server name"); return; } try { await api.upsertSystemSetting({ name: "customized-profile", value: JSON.stringify(state), }); await globalStore.fetchSystemStatus(); } catch (error) { console.error(error); return; } toast.success(t("message.succeed-update-customized-profile")); destroy(); }; return ( <>

{t("setting.system-section.customize-server.title")}

{t("setting.system-section.server-name")} ({t("setting.system-section.customize-server.default")})

{t("setting.system-section.customize-server.icon-url")}

Description

Server locale

Server appearance

); }; function showUpdateCustomizedProfileDialog() { generateDialog( { className: "update-customized-profile-dialog", dialogName: "update-customized-profile-dialog", }, UpdateCustomizedProfileDialog ); } export default showUpdateCustomizedProfileDialog;