From f670ff82feb3ec97725d2ddbd98cadbd28b684b0 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Wed, 11 Jun 2025 19:16:00 +0200 Subject: [PATCH] refactor: add deleteTest logic to SpeedtestContext and improve context destructuring --- .../src/common/components/Header/HeaderComponent.jsx | 2 +- .../components/StorageDialog/tabs/Speedtests.jsx | 2 +- .../common/contexts/Speedtests/SpeedtestContext.jsx | 12 +++++++++++- .../components/LatestTest/LatestTestComponent.jsx | 4 ++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/client/src/common/components/Header/HeaderComponent.jsx b/client/src/common/components/Header/HeaderComponent.jsx index a100555c..64b792c2 100644 --- a/client/src/common/components/Header/HeaderComponent.jsx +++ b/client/src/common/components/Header/HeaderComponent.jsx @@ -34,7 +34,7 @@ const HeaderComponent = () => { const [icon, setIcon] = useState(faGear); const [status, updateStatus] = useContext(StatusContext); const [startedManually, setStartedManually] = useState(false); - const updateTests = useContext(SpeedtestContext)[1]; + const {updateTests} = useContext(SpeedtestContext); const [config, reloadConfig, checkConfig] = useContext(ConfigContext); const [updateAvailable, setUpdateAvailable] = useState(""); const [isDropdownOpen, setIsDropdownOpen] = useState(false); diff --git a/client/src/common/components/StorageDialog/tabs/Speedtests.jsx b/client/src/common/components/StorageDialog/tabs/Speedtests.jsx index eac1b6a7..bf105bcf 100644 --- a/client/src/common/components/StorageDialog/tabs/Speedtests.jsx +++ b/client/src/common/components/StorageDialog/tabs/Speedtests.jsx @@ -9,7 +9,7 @@ import {faFileExport, faFileImport, faTrashCan} from "@fortawesome/free-solid-sv export default ({tests}) => { const close = useContext(DialogContext); const [deleteWarning, setDeleteWarning] = useState(false); - const updateTests = useContext(SpeedtestContext)[1]; + const {updateTests} = useContext(SpeedtestContext); const updateToast = useContext(ToastNotificationContext); const deleteHistory = () => { diff --git a/client/src/common/contexts/Speedtests/SpeedtestContext.jsx b/client/src/common/contexts/Speedtests/SpeedtestContext.jsx index 1b36e3f6..ace86cdd 100644 --- a/client/src/common/contexts/Speedtests/SpeedtestContext.jsx +++ b/client/src/common/contexts/Speedtests/SpeedtestContext.jsx @@ -94,6 +94,16 @@ export const SpeedtestProvider = (props) => { } }, [speedtests]); + const deleteTest = useCallback((id) => { + setSpeedtests(prev => prev.filter(test => test.id !== id)); + if (speedtests.length === 1) { + setLastId(null); + setHasMore(false); + } else if (speedtests[speedtests.length - 1].id === id) { + setLastId(speedtests[speedtests.length - 2].id); + } + }); + const updateTests = useCallback(() => { refreshTests(); }, [refreshTests]); @@ -111,7 +121,7 @@ export const SpeedtestProvider = (props) => { }, [refreshTests]); return ( - + {props.children} ) diff --git a/client/src/pages/Home/components/LatestTest/LatestTestComponent.jsx b/client/src/pages/Home/components/LatestTest/LatestTestComponent.jsx index 7092667b..29b715fa 100644 --- a/client/src/pages/Home/components/LatestTest/LatestTestComponent.jsx +++ b/client/src/pages/Home/components/LatestTest/LatestTestComponent.jsx @@ -11,12 +11,12 @@ import {getIconBySpeed} from "@/common/utils/TestUtil"; import {downloadInfo, latestTestInfo, pingInfo, uploadInfo} from "@/pages/Home/components/LatestTest/utils/dialogs"; import {t} from "i18next"; -function LatestTestComponent() { +const LatestTestComponent = () => { const status = useContext(StatusContext)[0]; const [latest, setLatest] = useState(null); const [latestTestTime, setLatestTestTime] = useState("N/A"); const [setDialog] = useContext(InputDialogContext); - const [speedtests] = useContext(SpeedtestContext); + const {speedtests} = useContext(SpeedtestContext); const config = useContext(ConfigContext)[0]; useEffect(() => {