Skip to content

Commit e3b646f

Browse files
authored
feat(replication): Implement new error UI when the pipeline fails (supabase#37105)
1 parent 0666d5c commit e3b646f

File tree

5 files changed

+424
-68
lines changed

5 files changed

+424
-68
lines changed

apps/studio/components/interfaces/Database/Replication/DestinationRow.tsx

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import { ReplicationPipelinesData } from 'data/replication/pipelines-query'
44
import { ResponseError } from 'types'
55
import ShimmeringLoader from 'ui-patterns/ShimmeringLoader'
66
import RowMenu from './RowMenu'
7-
import PipelineStatus, { PipelineStatusRequestStatus } from './PipelineStatus'
7+
import PipelineStatus, { PipelineStatusRequestStatus, PipelineStatusName } from './PipelineStatus'
88
import { useParams } from 'common'
9-
import { useReplicationPipelineStatusQuery } from 'data/replication/pipeline-status-query'
9+
import {
10+
ReplicationPipelineStatusData,
11+
useReplicationPipelineStatusQuery,
12+
} from 'data/replication/pipeline-status-query'
1013
import { useState } from 'react'
1114
import { toast } from 'sonner'
1215
import { useStartPipelineMutation } from 'data/replication/start-pipeline-mutation'
@@ -65,10 +68,22 @@ const DestinationRow = ({
6568
const { mutateAsync: startPipeline } = useStartPipelineMutation()
6669
const { mutateAsync: stopPipeline } = useStopPipelineMutation()
6770
const pipelineStatus = pipelineStatusData?.status
71+
const getStatusName = (
72+
status: ReplicationPipelineStatusData['status'] | undefined
73+
): string | undefined => {
74+
if (status && typeof status === 'object' && 'name' in status) {
75+
return status.name
76+
}
77+
78+
return undefined
79+
}
80+
81+
const statusName = getStatusName(pipelineStatus)
6882
if (
6983
(requestStatus === PipelineStatusRequestStatus.EnableRequested &&
70-
pipelineStatus === 'Started') ||
71-
(requestStatus === PipelineStatusRequestStatus.DisableRequested && pipelineStatus === 'Stopped')
84+
(statusName === PipelineStatusName.STARTED || statusName === PipelineStatusName.FAILED)) ||
85+
(requestStatus === PipelineStatusRequestStatus.DisableRequested &&
86+
(statusName === PipelineStatusName.STOPPED || statusName === PipelineStatusName.FAILED))
7287
) {
7388
setRequestStatus(PipelineStatusRequestStatus.None)
7489
}
@@ -190,7 +205,7 @@ const DestinationRow = ({
190205
sourceId,
191206
destinationId: destinationId,
192207
pipelineId: pipeline?.id,
193-
enabled: pipelineStatusData?.status === 'Started',
208+
enabled: statusName === PipelineStatusName.STARTED,
194209
}}
195210
/>
196211
</>

0 commit comments

Comments
 (0)