diff --git a/libs/domains/environments/data-access/src/lib/domains-environments-data-access.ts b/libs/domains/environments/data-access/src/lib/domains-environments-data-access.ts
index 05db8f3f683..64aaea685f4 100644
--- a/libs/domains/environments/data-access/src/lib/domains-environments-data-access.ts
+++ b/libs/domains/environments/data-access/src/lib/domains-environments-data-access.ts
@@ -62,15 +62,6 @@ export const environments = createQueryKeys('environments', {
)
},
}),
- // TODO [To update once rust-backed will be deployed]: To remove
- // NOTE: Value is set by WebSocket
- checkRunningStatusClosed: (clusterId: string) => ({
- queryKey: [clusterId],
- queryFn() {
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- return new Promise<{ clusterId: string; reason: string }>(() => {})
- },
- }),
details: ({ environmentId }: { environmentId: string }) => ({
queryKey: [environmentId],
async queryFn() {
diff --git a/libs/domains/environments/feature/src/lib/environment-list/environment-list.tsx b/libs/domains/environments/feature/src/lib/environment-list/environment-list.tsx
index 6dc51ee01a3..b0b73c8709d 100644
--- a/libs/domains/environments/feature/src/lib/environment-list/environment-list.tsx
+++ b/libs/domains/environments/feature/src/lib/environment-list/environment-list.tsx
@@ -40,7 +40,6 @@ import { twMerge, upperCaseFirstLetter } from '@qovery/shared/util-js'
import { CreateCloneEnvironmentModal } from '../create-clone-environment-modal/create-clone-environment-modal'
import { EnvironmentActionToolbar } from '../environment-action-toolbar/environment-action-toolbar'
import { EnvironmentMode } from '../environment-mode/environment-mode'
-import { useCheckRunningStatusClosed } from '../hooks/use-check-running-status-closed/use-check-running-status-closed'
import { useEnvironments } from '../hooks/use-environments/use-environments'
import { EnvironmentListSkeleton } from './environment-list-skeleton'
@@ -88,30 +87,6 @@ function EnvironmentStatusCell({
runningStatus?: RunningState
value?: string
}) {
- const { data: checkRunningStatusClosed } = useCheckRunningStatusClosed({
- clusterId: environment.cluster_id,
- })
- // TODO [To update once rust-backed will be deployed]: To remove
- if (checkRunningStatusClosed) {
- return (
-
- e.stopPropagation()}
- className="gap-2 whitespace-nowrap text-sm"
- size="md"
- color="neutral"
- variant="outline"
- radius="full"
- >
-
- Status unavailable
-
-
- )
- }
-
return (
diff --git a/libs/domains/environments/feature/src/lib/environment-state-chip/environment-state-chip.tsx b/libs/domains/environments/feature/src/lib/environment-state-chip/environment-state-chip.tsx
index 130d3a95b81..dfc85074bbb 100644
--- a/libs/domains/environments/feature/src/lib/environment-state-chip/environment-state-chip.tsx
+++ b/libs/domains/environments/feature/src/lib/environment-state-chip/environment-state-chip.tsx
@@ -1,7 +1,5 @@
import { Skeleton, StatusChip, type StatusChipProps } from '@qovery/shared/ui'
-import { useCheckRunningStatusClosed } from '../hooks/use-check-running-status-closed/use-check-running-status-closed'
import { useDeploymentStatus } from '../hooks/use-deployment-status/use-deployment-status'
-import { useEnvironment } from '../hooks/use-environment/use-environment'
import { useRunningStatus } from '../hooks/use-running-status/use-running-status'
/**
@@ -45,17 +43,7 @@ function DeploymentStateChip({ environmentId, mode, ...props }: DeploymentStateC
type RunningStateChipProps = Omit
function RunningStateChip({ environmentId, ...props }: RunningStateChipProps) {
- const { data: environment } = useEnvironment({ environmentId })
const { data: runningStatus } = useRunningStatus({ environmentId })
- const { data: checkRunningStatusClosed } = useCheckRunningStatusClosed({
- clusterId: environment?.cluster_id ?? '',
- })
-
- // TODO [To update once rust-backed will be deployed]: To remove
- if (checkRunningStatusClosed) {
- return
- }
-
return (
diff --git a/libs/domains/environments/feature/src/lib/hooks/use-check-running-status-closed/use-check-running-status-closed.ts b/libs/domains/environments/feature/src/lib/hooks/use-check-running-status-closed/use-check-running-status-closed.ts
deleted file mode 100644
index 1628578a62c..00000000000
--- a/libs/domains/environments/feature/src/lib/hooks/use-check-running-status-closed/use-check-running-status-closed.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { useQuery } from '@tanstack/react-query'
-import { queries } from '@qovery/state/util-queries'
-
-export interface UseCheckRunningStatusClosedProps {
- clusterId: string
-}
-
-export function useCheckRunningStatusClosed({ clusterId }: UseCheckRunningStatusClosedProps) {
- return useQuery({
- ...queries.environments.checkRunningStatusClosed(clusterId),
- refetchOnMount: false,
- refetchOnWindowFocus: false,
- refetchOnReconnect: false,
- staleTime: Infinity,
- })
-}
-
-export default useCheckRunningStatusClosed
diff --git a/libs/domains/services/data-access/src/lib/domains-services-data-access.ts b/libs/domains/services/data-access/src/lib/domains-services-data-access.ts
index afc5f92374e..9a6f60320d8 100644
--- a/libs/domains/services/data-access/src/lib/domains-services-data-access.ts
+++ b/libs/domains/services/data-access/src/lib/domains-services-data-access.ts
@@ -224,15 +224,6 @@ export const services = createQueryKeys('services', {
return new Promise(() => {})
},
}),
- // TODO [To update once rust-backed will be deployed]: To remove
- checkRunningStatusClosed: (clusterId: string, environmentId: string) => ({
- queryKey: [clusterId, environmentId],
- // NOTE: Value is set by WebSocket
- queryFn() {
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- return new Promise<{ clusterId: string; environmentId: string; reason: string }>(() => {})
- },
- }),
metrics: (environmentId: string, serviceId: string) => ({
queryKey: [environmentId, serviceId],
// NOTE: Value is set by WebSocket
diff --git a/libs/domains/services/feature/src/lib/hooks/use-check-running-status-closed/use-check-running-status-closed.ts b/libs/domains/services/feature/src/lib/hooks/use-check-running-status-closed/use-check-running-status-closed.ts
deleted file mode 100644
index 962c7be16e1..00000000000
--- a/libs/domains/services/feature/src/lib/hooks/use-check-running-status-closed/use-check-running-status-closed.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { useQuery } from '@tanstack/react-query'
-import { queries } from '@qovery/state/util-queries'
-
-export interface UseCheckRunningStatusClosedProps {
- clusterId: string
- environmentId: string
-}
-
-export function useCheckRunningStatusClosed({ clusterId, environmentId }: UseCheckRunningStatusClosedProps) {
- return useQuery({
- ...queries.services.checkRunningStatusClosed(clusterId, environmentId),
- refetchOnMount: false,
- refetchOnWindowFocus: false,
- refetchOnReconnect: false,
- staleTime: Infinity,
- })
-}
-
-export default useCheckRunningStatusClosed
diff --git a/libs/domains/services/feature/src/lib/service-list/service-list.tsx b/libs/domains/services/feature/src/lib/service-list/service-list.tsx
index fc6a8f5cbb7..753b8c3ff40 100644
--- a/libs/domains/services/feature/src/lib/service-list/service-list.tsx
+++ b/libs/domains/services/feature/src/lib/service-list/service-list.tsx
@@ -40,7 +40,6 @@ import {
import {
APPLICATION_GENERAL_URL,
APPLICATION_URL,
- CLUSTER_URL,
DATABASE_GENERAL_URL,
DATABASE_URL,
DEPLOYMENT_LOGS_VERSION_URL,
@@ -74,7 +73,6 @@ import {
twMerge,
upperCaseFirstLetter,
} from '@qovery/shared/util-js'
-import { useCheckRunningStatusClosed } from '../hooks/use-check-running-status-closed/use-check-running-status-closed'
import { useListDeploymentStages } from '../hooks/use-list-deployment-stages/use-list-deployment-stages'
import { useServices } from '../hooks/use-services/use-services'
import { LastCommit } from '../last-commit/last-commit'
@@ -334,10 +332,6 @@ export function ServiceList({ environment, className, ...props }: ServiceListPro
} = environment
const { data: services = [], isLoading: isServicesLoading } = useServices({ environmentId })
const { data: deploymentStages } = useListDeploymentStages({ environmentId })
- const { data: checkRunningStatusClosed } = useCheckRunningStatusClosed({
- clusterId,
- environmentId,
- })
const [sorting, setSorting] = useState([])
const [rowSelection, setRowSelection] = useState({})
const navigate = useNavigate()
@@ -495,27 +489,6 @@ export function ServiceList({ environment, className, ...props }: ServiceListPro
.with(undefined, () => info.getValue())
.exhaustive()
- // TODO [To update once rust-backed will be deployed]: Remove this workaround
- if (checkRunningStatusClosed) {
- return (
-
- e.stopPropagation()}
- className="gap-2 whitespace-nowrap text-sm"
- size="md"
- color="neutral"
- variant="outline"
- radius="full"
- >
-
- Status unavailable
-
-
- )
- }
-
const serviceStatus = match(service)
.with({ serviceType: 'DATABASE', mode: 'MANAGED' }, (s) => s.deploymentStatus?.state)
.otherwise((s) => s.runningStatus?.state)
@@ -779,7 +752,7 @@ export function ServiceList({ environment, className, ...props }: ServiceListPro
},
}),
],
- [columnHelper, organizationId, projectId, environmentId, navigate, checkRunningStatusClosed, environment]
+ [columnHelper, organizationId, projectId, environmentId, environment]
)
const table = useReactTable({
diff --git a/libs/shared/util-web-sockets/src/lib/use-status-web-sockets/use-status-web-sockets.ts b/libs/shared/util-web-sockets/src/lib/use-status-web-sockets/use-status-web-sockets.ts
index 7c6521317d3..d5f28f72a32 100644
--- a/libs/shared/util-web-sockets/src/lib/use-status-web-sockets/use-status-web-sockets.ts
+++ b/libs/shared/util-web-sockets/src/lib/use-status-web-sockets/use-status-web-sockets.ts
@@ -1,3 +1,4 @@
+import equal from 'fast-deep-equal'
import { type EnvironmentStatus, type EnvironmentStatusesWithStages } from 'qovery-typescript-axios'
import {
type ApplicationStatusDto,
@@ -89,14 +90,13 @@ export function useStatusWebSockets({
enabled: Boolean(organizationId) && Boolean(clusterId) && Boolean(projectId),
onMessage(queryClient, message: ServiceStatusDto) {
for (const env of message.environments) {
- // TODO [To update once rust-backed will be deployed]: check against current value and update it only if it has changed (to avoid too many re-render)
- queryClient.setQueryData(queries.environments.runningStatus(env.id).queryKey, () => ({
- state: env.state,
- }))
- // // NOTE: we have to force this reset change because of the way the socket works.
- // // You can have information about an service (eg. if it's stopping)
- // TODO [To update once rust-backed will be deployed]: Remove reset cache strategy
- queryClient.resetQueries([...queries.services.runningStatus._def, env.id])
+ // Setting the environment status only if it has changed
+ const currentEnvironmentStatus = queryClient.getQueryData(queries.environments.runningStatus(env.id).queryKey)
+ const newEnvironmentStatus = { state: env.state }
+ if (!equal(newEnvironmentStatus, currentEnvironmentStatus)) {
+ queryClient.setQueryData(queries.environments.runningStatus(env.id).queryKey, () => newEnvironmentStatus)
+ }
+
const services: (ApplicationStatusDto | DatabaseStatusDto | TerraformStatusDto)[] = [
...env.applications,
...env.containers,
@@ -106,30 +106,16 @@ export function useStatusWebSockets({
...env.terraform,
]
for (const serviceRunningStatus of services) {
- // TODO [To update once rust-backed will be deployed]: check against current value and update it only if it has changed (to avoid too many re-render)
- queryClient.setQueryData(
- queries.services.runningStatus(env.id, serviceRunningStatus.id).queryKey,
- () => serviceRunningStatus
+ // Setting the service status only if it has changed
+ const currentServiceStatus = queryClient.getQueryData(
+ queries.services.runningStatus(env.id, serviceRunningStatus.id).queryKey
)
- }
- }
- },
- onClose(queryClient, event: CloseEvent) {
- // NOTE: API returns a string for the reason, which allows us to know if the status is available or not
- // clusterId is required everywhere and environmentId is necessary for the service list
- const isNotFound = event.reason.includes('NotFound') || event.reason.includes('not found')
- if (isNotFound && clusterId) {
- if (environmentId) {
- queryClient.setQueryData(queries.services.checkRunningStatusClosed(clusterId, environmentId).queryKey, {
- clusterId,
- environmentId,
- reason: event.reason,
- })
- } else {
- queryClient.setQueryData(queries.environments.checkRunningStatusClosed(clusterId).queryKey, {
- clusterId,
- reason: event.reason,
- })
+ if (!equal(serviceRunningStatus, currentServiceStatus)) {
+ queryClient.setQueryData(
+ queries.services.runningStatus(env.id, serviceRunningStatus.id).queryKey,
+ () => serviceRunningStatus
+ )
+ }
}
}
},