From f98b07dba37661300a55b88773a47fcae86f325c Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 21 Feb 2025 11:21:56 -0800 Subject: [PATCH] add DU specific hook --- .../Create/Hooks/useDUStatusPageFetch.jsx | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/Pages/DistributedUptimeStatus/Create/Hooks/useDUStatusPageFetch.jsx diff --git a/src/Pages/DistributedUptimeStatus/Create/Hooks/useDUStatusPageFetch.jsx b/src/Pages/DistributedUptimeStatus/Create/Hooks/useDUStatusPageFetch.jsx new file mode 100644 index 000000000..eecb161a3 --- /dev/null +++ b/src/Pages/DistributedUptimeStatus/Create/Hooks/useDUStatusPageFetch.jsx @@ -0,0 +1,46 @@ +import { useEffect, useState, useCallback } from "react"; +import { networkService } from "../../../../main"; +import { useSelector } from "react-redux"; +import { createToast } from "../../../../Utils/toastUtils"; + +const useDUStatusPageFetch = (isCreate = false, url) => { + const [isLoading, setIsLoading] = useState(true); + const [networkError, setNetworkError] = useState(false); + const [statusPage, setStatusPage] = useState(undefined); + const { authToken } = useSelector((state) => state.auth); + const fetchStatusPage = useCallback(async () => { + try { + const response = await networkService.getStatusPageByUrl({ + authToken, + url, + type: "distributed", + }); + + if (!response?.data?.data) return; + + const statusPage = response.data.data; + setStatusPage(statusPage); + } catch (error) { + // If there is a 404, status page is not found + if (error?.response?.status === 404) { + setStatusPage(undefined); + return; + } + createToast({ body: error.message }); + setNetworkError(true); + } finally { + setIsLoading(false); + } + }, [authToken, url]); + + useEffect(() => { + if (isCreate === true) { + return; + } + fetchStatusPage(); + }, [isCreate, fetchStatusPage]); + + return [statusPage, isLoading, networkError, fetchStatusPage]; +}; + +export { useDUStatusPageFetch };