import { Alert, FormControl, FormControlLabel, Switch, Typography } from "@mui/material"; import { useCallback, useContext, useMemo } from "react"; import { useTranslation } from "react-i18next"; import { GroupEnt, StoragePolicy } from "../../../../api/dashboard"; import { GroupPermission } from "../../../../api/user"; import Boolset from "../../../../util/boolset"; import SizeInput from "../../../Common/SizeInput"; import { DenseFilledTextField } from "../../../Common/StyledComponents"; import InPrivate from "../../../Icons/InPrivate"; import SettingForm, { ProChip } from "../../../Pages/Setting/SettingForm"; import { NoMarginHelperText, SettingSection, SettingSectionContent } from "../../Settings/Settings"; import { AnonymousGroupID } from "../GroupRow"; import { GroupSettingContext } from "./GroupSettingWrapper"; import PolicySelectionInput from "./PolicySelectionInput"; const BasicInfoSection = () => { const { t } = useTranslation("dashboard"); const { values, setGroup } = useContext(GroupSettingContext); const permission = useMemo(() => { return new Boolset(values.permissions ?? ""); }, [values.permissions]); const onNameChange = useCallback( (e: React.ChangeEvent) => { setGroup((p: GroupEnt) => ({ ...p, name: e.target.value })); }, [setGroup], ); const onPolicyChange = useCallback( (value: number) => { setGroup((p: GroupEnt) => ({ ...p, edges: { ...p.edges, storage_policies: { id: value } as StoragePolicy }, })); }, [setGroup], ); const onMaxStorageChange = useCallback( (size: number) => { setGroup((p: GroupEnt) => ({ ...p, max_storage: size ? size : undefined, })); }, [setGroup], ); const onIsAdminChange = useCallback( (e: React.ChangeEvent) => { setGroup((p: GroupEnt) => ({ ...p, permissions: new Boolset(p.permissions).set(GroupPermission.is_admin, e.target.checked).toString(), })); }, [setGroup], ); return ( {t("policy.basicInfo")} {values?.id == AnonymousGroupID && ( } severity="info"> {t("group.anonymousHint")} )} {t("group.nameOfGroupDes")} {values?.id != AnonymousGroupID && ( <> {t("group.availablePoliciesDes")} {t("group.availablePolicyDesPro")} {t("group.initialStorageQuotaDes")} } label={t("group.isAdmin")} /> {t("group.isAdminDes")} )} ); }; export default BasicInfoSection;