diff --git a/src/modules/reverse-proxy/table/ReverseProxyStatusCell.tsx b/src/modules/reverse-proxy/table/ReverseProxyStatusCell.tsx index 5cba5c93..d7fabca6 100644 --- a/src/modules/reverse-proxy/table/ReverseProxyStatusCell.tsx +++ b/src/modules/reverse-proxy/table/ReverseProxyStatusCell.tsx @@ -6,7 +6,7 @@ import { import useFetchApi from "@utils/api"; import Badge from "@components/Badge"; import { Loader2 } from "lucide-react"; -import { useMemo } from "react"; +import { useRef } from "react"; type Props = { serviceId: string; @@ -21,38 +21,33 @@ export default function ReverseProxyStatusCell({ meta, enabled, }: Readonly) { - const status = meta?.status; - const certificateIssued = !!meta?.certificate_issued_at; + const dataRef = useRef(undefined); - const isSettingUp = - enabled && - status !== undefined && - status !== ReverseProxyStatus.ACTIVE && - !certificateIssued; + const isActive = + meta?.status === ReverseProxyStatus.ACTIVE || + dataRef.current?.meta?.status === ReverseProxyStatus.ACTIVE; + + const certificateIssued = + !!meta?.certificate_issued_at || + !!dataRef.current?.meta?.certificate_issued_at; + + const shouldPoll = !!enabled && !(isActive && certificateIssued); const { data } = useFetchApi( `/reverse-proxies/services/${serviceId}`, true, false, - isSettingUp, + shouldPoll, { refreshInterval: POLL_INTERVAL_MS }, ); - const currentStatus = data?.meta?.status ?? status; - - const currentCertificateIssued = useMemo(() => { - if (data && data?.meta) return !!data?.meta?.certificate_issued_at; - return certificateIssued; - }, [data]); + dataRef.current = data; - if ( - !enabled || - (currentStatus === ReverseProxyStatus.ACTIVE && currentCertificateIssued) - ) { + if (!enabled || (isActive && certificateIssued)) { return null; } - if (!currentCertificateIssued) { + if (!certificateIssued) { return (