import { Circle, Loader } from 'lucide-react' import { useEffect, useState } from 'react' import { useParams } from 'common' import { useInvalidateProjectsInfiniteQuery } from 'data/projects/org-projects-infinite-query' import { Project, useInvalidateProjectDetailsQuery } from 'data/projects/project-detail-query' import { useProjectStatusQuery } from 'data/projects/project-status-query' import { PROJECT_STATUS } from 'lib/constants' import { Badge } from 'ui' export interface PausingStateProps { project: Project } export const PausingState = ({ project }: PausingStateProps) => { const { ref } = useParams() const [startPolling, setStartPolling] = useState(false) const { invalidateProjectsQuery } = useInvalidateProjectsInfiniteQuery() const { invalidateProjectDetailsQuery } = useInvalidateProjectDetailsQuery() const { data: projectStatusData, isSuccess: isProjectStatusSuccess } = useProjectStatusQuery( { projectRef: ref }, { enabled: startPolling, refetchInterval: (query) => { const data = query.state.data return data?.status === PROJECT_STATUS.INACTIVE ? false : 2000 }, } ) useEffect(() => { if (!isProjectStatusSuccess) return if (projectStatusData?.status === PROJECT_STATUS.INACTIVE) { if (ref) invalidateProjectDetailsQuery(ref) invalidateProjectsQuery() } }, [ isProjectStatusSuccess, projectStatusData, ref, invalidateProjectDetailsQuery, invalidateProjectsQuery, ]) useEffect(() => { setTimeout(() => setStartPolling(true), 4000) }, []) return (
Pausing {project.name}
You may restore your project anytime thereafter, and your data will be restored to when it was initially paused.