import { debounce } from "lodash"; import { observer } from "mobx-react"; import { PadlockIcon } from "outline-icons"; import { useState } from "react"; import * as React from "react"; import { useTranslation, Trans } from "react-i18next"; import Checkbox from "~/components/Checkbox"; import Heading from "~/components/Heading"; import HelpText from "~/components/HelpText"; import InputSelect from "~/components/InputSelect"; import Scene from "~/components/Scene"; import env from "~/env"; import useCurrentTeam from "~/hooks/useCurrentTeam"; import useStores from "~/hooks/useStores"; import useToasts from "~/hooks/useToasts"; function Security() { const { auth } = useStores(); const team = useCurrentTeam(); const { t } = useTranslation(); const { showToast } = useToasts(); const [data, setData] = useState({ sharing: team.sharing, documentEmbeds: team.documentEmbeds, guestSignin: team.guestSignin, defaultUserRole: team.defaultUserRole, }); const notes = { member: t("New user accounts will be given member permissions by default"), viewer: t("New user accounts will be given viewer permissions by default"), }; const showSuccessMessage = React.useMemo( () => debounce(() => { showToast(t("Settings saved"), { type: "success", }); }, 250), [showToast, t] ); const handleChange = React.useCallback( async (ev: React.ChangeEvent) => { const newData = { ...data, [ev.target.name]: ev.target.checked }; setData(newData); await auth.updateTeam(newData); showSuccessMessage(); }, [auth, data, showSuccessMessage] ); const handleDefaultRoleChange = async (newDefaultRole: string) => { const newData = { ...data, defaultUserRole: newDefaultRole }; setData(newData); await auth.updateTeam(newData); showSuccessMessage(); }; return ( }> Security Settings that impact the access, security, and content of your knowledge base. ); } export default observer(Security);