refactor: add deleteTest logic to SpeedtestContext and improve context destructuring

This commit is contained in:
Mathias Wagner
2025-06-11 19:16:00 +02:00
parent 7c41c01574
commit f670ff82fe
4 changed files with 15 additions and 5 deletions

View File

@@ -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);

View File

@@ -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 = () => {

View File

@@ -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 (
<SpeedtestContext.Provider value={[speedtests, updateTests, loadMoreTests, loading, hasMore]}>
<SpeedtestContext.Provider value={{speedtests, updateTests, deleteTest, loadMoreTests, loading, hasMore}}>
{props.children}
</SpeedtestContext.Provider>
)

View File

@@ -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(() => {