From fa8e045946751f5fa99ed4e0df6311b51885e019 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 16 Sep 2024 13:29:04 +0800 Subject: [PATCH] Use getMonitorsByTeamId endpoint --- Client/src/Pages/PageSpeed/index.jsx | 46 ++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/Client/src/Pages/PageSpeed/index.jsx b/Client/src/Pages/PageSpeed/index.jsx index 738a5f3da..6dd03c0b7 100644 --- a/Client/src/Pages/PageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/index.jsx @@ -1,5 +1,5 @@ import { Box, Button, Grid, Stack } from "@mui/material"; -import { useEffect } from "react"; +import { useEffect, useState } from "react"; import { useTheme } from "@emotion/react"; import { useDispatch, useSelector } from "react-redux"; import { getPageSpeedByTeamId } from "../../Features/PageSpeedMonitor/pageSpeedMonitorSlice"; @@ -11,24 +11,52 @@ import Breadcrumbs from "../../Components/Breadcrumbs"; import Greeting from "../../Utils/greeting"; import SkeletonLayout from "./skeleton"; import Card from "./card"; +import { networkService } from "../../main"; const PageSpeed = ({ isAdmin }) => { const theme = useTheme(); const dispatch = useDispatch(); const navigate = useNavigate(); - const { authToken } = useSelector((state) => state.auth); - const { monitorsSummary, isLoading } = useSelector( - (state) => state.pageSpeedMonitors - ); + const { user, authToken } = useSelector((state) => state.auth); + const [isLoading, setIsLoading] = useState(false); + const [monitors, setMonitors] = useState([]); useEffect(() => { dispatch(getPageSpeedByTeamId(authToken)); }, [authToken, dispatch]); + useEffect(() => { + const fetchMonitors = async () => { + try { + setIsLoading(true); + const res = await networkService.getMonitorsByTeamId( + authToken, + user.teamId, + 10, + ["pagespeed"], + null, + "desc", + true, + null, + null + ); + if (res?.data?.data?.monitors) { + setMonitors(res.data.data.monitors); + } + } catch (error) { + console.log(error); + } finally { + setIsLoading(false); + } + }; + + fetchMonitors(); + }, []); + // will show skeletons only on initial load // since monitor state is being added to redux persist, there's no reason to display skeletons on every render - let isActuallyLoading = isLoading && monitorsSummary?.monitors?.length === 0; - + let isActuallyLoading = isLoading && monitors?.length === 0; + console.log(monitors); return ( { > {isActuallyLoading ? ( - ) : monitorsSummary?.monitors?.length !== 0 ? ( + ) : monitors?.length !== 0 ? ( { - {monitorsSummary?.monitors?.map((monitor) => ( + {monitors?.map((monitor) => ( ))}