From 456798ca1519cd56289f61eccca657152c49a05a Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 17 Jun 2025 10:58:41 +0800 Subject: [PATCH] move state to parent --- client/src/Hooks/settingsHooks.js | 24 ++++++++++++++--- client/src/Pages/Settings/SettingsEmail.jsx | 14 +++++----- .../src/Pages/Settings/SettingsPagespeed.jsx | 12 ++++++--- client/src/Pages/Settings/index.jsx | 26 +++++++++++++++---- 4 files changed, 57 insertions(+), 19 deletions(-) diff --git a/client/src/Hooks/settingsHooks.js b/client/src/Hooks/settingsHooks.js index 7d3ff28fc..98a21c1fa 100644 --- a/client/src/Hooks/settingsHooks.js +++ b/client/src/Hooks/settingsHooks.js @@ -3,7 +3,7 @@ import { networkService } from "../main"; import { createToast } from "../Utils/toastUtils"; import { useTranslation } from "react-i18next"; -const useFetchSettings = ({ setSettingsData }) => { +const useFetchSettings = ({ setSettingsData, setIsApiKeySet, setIsEmailPasswordSet }) => { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(undefined); useEffect(() => { @@ -12,6 +12,8 @@ const useFetchSettings = ({ setSettingsData }) => { try { const response = await networkService.getAppSettings(); setSettingsData(response?.data?.data); + setIsApiKeySet(response?.data?.data?.pagespeedKeySet); + setIsEmailPasswordSet(response?.data?.data?.emailPasswordSet); } catch (error) { createToast({ body: "Failed to fetch settings" }); setError(error); @@ -20,12 +22,18 @@ const useFetchSettings = ({ setSettingsData }) => { } }; fetchSettings(); - }, []); + }, [setSettingsData]); return [isLoading, error]; }; -const useSaveSettings = () => { +const useSaveSettings = ({ + setSettingsData, + setIsApiKeySet, + setApiKeyHasBeenReset, + setIsEmailPasswordSet, + setEmailPasswordHasBeenReset, +}) => { const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(undefined); const { t } = useTranslation(); @@ -39,7 +47,15 @@ const useSaveSettings = () => { ttl: settings.checkTTL, }); } - console.log({ settingsResponse }); + setIsApiKeySet(settingsResponse.data.data.pagespeedKeySet); + setIsEmailPasswordSet(settingsResponse.data.data.emailPasswordSet); + if (settingsResponse.data.data.pagespeedKeySet === true) { + setApiKeyHasBeenReset(false); + } + if (settingsResponse.data.data.emailPasswordSet === true) { + setEmailPasswordHasBeenReset(false); + } + setSettingsData(settingsResponse.data.data); createToast({ body: t("settingsSuccessSaved") }); } catch (error) { createToast({ body: t("settingsFailedToSave") }); diff --git a/client/src/Pages/Settings/SettingsEmail.jsx b/client/src/Pages/Settings/SettingsEmail.jsx index e7ae88154..4bd6ff3ad 100644 --- a/client/src/Pages/Settings/SettingsEmail.jsx +++ b/client/src/Pages/Settings/SettingsEmail.jsx @@ -7,7 +7,7 @@ import Stack from "@mui/material/Stack"; // Utils import { useTheme } from "@emotion/react"; import { PropTypes } from "prop-types"; -import { useState } from "react"; +import { useState, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { PasswordEndAdornment } from "../../Components/Inputs/TextInput/Adornments"; import { useSendTestEmail } from "../../Hooks/useSendTestEmail"; @@ -20,7 +20,9 @@ const SettingsEmail = ({ handleChange, settingsData, setSettingsData, - isPasswordSet, + isEmailPasswordSet, + emailPasswordHasBeenReset, + setEmailPasswordHasBeenReset, }) => { // Setup const { t } = useTranslation(); @@ -43,7 +45,6 @@ const SettingsEmail = ({ } = settingsData?.settings || {}; // Local state const [password, setPassword] = useState(""); - const [hasBeenReset, setHasBeenReset] = useState(false); // Network const [isSending, , sendTestEmail] = useSendTestEmail(); // Using empty placeholder for unused error variable @@ -152,7 +153,7 @@ const SettingsEmail = ({ onChange={handleChange} /> - {(isPasswordSet === false || hasBeenReset === true) && ( + {(isEmailPasswordSet === false || emailPasswordHasBeenReset === true) && ( {t("settingsEmailPassword")} )} - {isPasswordSet === true && hasBeenReset === false && ( + + {isEmailPasswordSet === true && emailPasswordHasBeenReset === false && ( {t("settingsEmailFieldResetLabel")}