diff --git a/app/scenes/Settings/Security.js b/app/scenes/Settings/Security.js
index 3a065fe22d90..9e671badc2a6 100644
--- a/app/scenes/Settings/Security.js
+++ b/app/scenes/Settings/Security.js
@@ -18,38 +18,29 @@ function Security() {
const team = useCurrentTeam();
const { t } = useTranslation();
const { showToast } = useToasts();
- const [sharing, setSharing] = useState(team.documentEmbeds);
- const [documentEmbeds, setDocumentEmbeds] = useState(team.guestSignin);
- const [guestSignin, setGuestSignin] = useState(team.sharing);
+ const [data, setData] = useState({
+ sharing: team.sharing,
+ documentEmbeds: team.documentEmbeds,
+ guestSignin: team.guestSignin,
+ });
- const showSuccessMessage = debounce(() => {
- showToast(t("Settings saved"), { type: "success" });
- }, 500);
+ const showSuccessMessage = React.useCallback(
+ debounce(() => {
+ showToast(t("Settings saved"), { type: "success" });
+ }, 250),
+ [t, showToast]
+ );
const handleChange = React.useCallback(
async (ev: SyntheticInputEvent<*>) => {
- switch (ev.target.name) {
- case "sharing":
- setSharing(ev.target.checked);
- break;
- case "documentEmbeds":
- setDocumentEmbeds(ev.target.checked);
- break;
- case "guestSignin":
- setGuestSignin(ev.target.checked);
- break;
- default:
- }
+ const newData = { ...data, [ev.target.name]: ev.target.checked };
+ setData(newData);
- await auth.updateTeam({
- sharing,
- documentEmbeds,
- guestSignin,
- });
+ await auth.updateTeam(newData);
showSuccessMessage();
},
- [auth, sharing, documentEmbeds, guestSignin, showSuccessMessage]
+ [auth, data, showSuccessMessage]
);
return (
@@ -67,14 +58,14 @@ function Security() {