import { Select, Textarea, Option, Divider, Switch } from "@mui/joy"; import { Button } from "@usememos/mui"; import { isEqual } from "lodash-es"; import { ExternalLinkIcon } from "lucide-react"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; import { Link } from "react-router-dom"; import { identityProviderServiceClient } from "@/grpcweb"; import { workspaceSettingNamePrefix } from "@/store/v1"; import { workspaceStore } from "@/store/v2"; import { IdentityProvider } from "@/types/proto/api/v1/idp_service"; import { WorkspaceGeneralSetting } from "@/types/proto/api/v1/workspace_setting_service"; import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting"; import { useTranslate } from "@/utils/i18n"; import showUpdateCustomizedProfileDialog from "../UpdateCustomizedProfileDialog"; const WorkspaceSection = () => { const t = useTranslate(); const originalSetting = WorkspaceGeneralSetting.fromPartial( workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.GENERAL)?.generalSetting || {}, ); const [workspaceGeneralSetting, setWorkspaceGeneralSetting] = useState(originalSetting); const [identityProviderList, setIdentityProviderList] = useState([]); useEffect(() => { setWorkspaceGeneralSetting(originalSetting); }, [workspaceStore.getWorkspaceSettingByKey(WorkspaceSettingKey.GENERAL)]); const handleUpdateCustomizedProfileButtonClick = () => { showUpdateCustomizedProfileDialog(); }; const updatePartialSetting = (partial: Partial) => { setWorkspaceGeneralSetting( WorkspaceGeneralSetting.fromPartial({ ...workspaceGeneralSetting, ...partial, }), ); }; const handleSaveGeneralSetting = async () => { try { await workspaceStore.upsertWorkspaceSetting({ name: `${workspaceSettingNamePrefix}${WorkspaceSettingKey.GENERAL}`, generalSetting: workspaceGeneralSetting, }); } catch (error: any) { toast.error(error.details); console.error(error); return; } toast.success(t("message.update-succeed")); }; useEffect(() => { fetchIdentityProviderList(); }, []); const fetchIdentityProviderList = async () => { const { identityProviders } = await identityProviderServiceClient.listIdentityProviders({}); setIdentityProviderList(identityProviders); }; return (

{t("common.basic")}

{t("setting.system-section.server-name")}:{" "} {workspaceGeneralSetting.customProfile?.title || "Memos"}

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

{t("setting.system-section.additional-style")}