import { Box, FormControl, FormControlLabel, Switch, Typography } from "@mui/material"; import { useCallback, useContext, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { GroupEnt } from "../../../../api/dashboard"; import { GroupPermission } from "../../../../api/user"; import Boolset from "../../../../util/boolset"; import SettingForm, { ProChip } from "../../../Pages/Setting/SettingForm"; import ProDialog from "../../Common/ProDialog"; import { NoMarginHelperText, SettingSection, SettingSectionContent } from "../../Settings/Settings"; import { AnonymousGroupID } from "../GroupRow"; import { GroupSettingContext } from "./GroupSettingWrapper"; const ShareSection = () => { const { t } = useTranslation("dashboard"); const { values, setGroup } = useContext(GroupSettingContext); const [proOpen, setProOpen] = useState(false); const permission = useMemo(() => { return new Boolset(values.permissions ?? ""); }, [values.permissions]); const onAllowCreateShareLinkChange = useCallback( (e: React.ChangeEvent) => { setGroup((p: GroupEnt) => ({ ...p, permissions: new Boolset(p.permissions).set(GroupPermission.share, e.target.checked).toString(), })); }, [setGroup], ); const onShareDownloadChange = useCallback( (e: React.ChangeEvent) => { setGroup((p: GroupEnt) => ({ ...p, permissions: new Boolset(p.permissions).set(GroupPermission.share_download, e.target.checked).toString(), })); }, [setGroup], ); const onProClick = (e: React.MouseEvent) => { e.stopPropagation(); setProOpen(true); }; return ( setProOpen(false)} /> {t("group.share")} {values?.id != AnonymousGroupID && ( } label={t("group.allowCreateShareLink")} /> {t("group.allowCreateShareLinkDes")} )} } label={ {t("group.shareFree")} } /> {t("group.shareFreeDes")} } label={t("group.allowDownloadShare")} /> {t("group.allowDownloadShareDes")} {values?.id != AnonymousGroupID && ( } label={ {t("group.esclateAnonymity")} } /> {t("group.esclateAnonymityDes")} )} ); }; export default ShareSection;