@@ -47,25 +47,26 @@ const ProjectDeploymentWorkflowListItem = ({
4747 workflowTaskDispatcherDefinitions,
4848} : ProjectDeploymentWorkflowListItemProps ) => {
4949 const [ showEditWorkflowDialog , setShowEditWorkflowDialog ] = useState ( false ) ;
50-
5150 const { openReadOnlyWorkflowSheet} = useReadOnlyWorkflow ( ) ;
5251
5352 /* eslint-disable @typescript-eslint/no-unused-vars */
5453 const [ _ , copyToClipboard ] = useCopyToClipboard ( ) ;
5554 const navigate = useNavigate ( ) ;
5655 const queryClient = useQueryClient ( ) ;
5756
57+ const { enabled, lastExecutionDate, lastExecutionStatus, staticWebhookUrl} = projectDeploymentWorkflow ;
58+
5859 const formTrigger =
5960 workflow . triggers && workflow . triggers . findIndex ( ( trigger ) => trigger . type . includes ( 'form/' ) ) !== - 1 ;
6061
61- const formTriggerPageUrl = getPageUrl ( 'form' , environmentId , projectDeploymentWorkflow . staticWebhookUrl ) ;
62+ const formTriggerPageUrl = getPageUrl ( 'form' , environmentId , staticWebhookUrl ) ;
6263
6364 const hostedChatTrigger =
6465 workflow . triggers &&
6566 workflow . triggers . findIndex ( ( trigger ) => trigger . type . includes ( 'chat/' ) ) !== - 1 &&
6667 ( workflow . triggers ?. [ 0 ] ?. parameters ?. mode ?? 1 ) === 1 ;
6768
68- const hostedChatTriggerPageUrl = getPageUrl ( 'chats' , undefined , projectDeploymentWorkflow . staticWebhookUrl ) ;
69+ const hostedChatTriggerPageUrl = getPageUrl ( 'chats' , undefined , staticWebhookUrl ) ;
6970
7071 const enableProjectDeploymentWorkflowMutation = useEnableProjectDeploymentWorkflowMutation ( {
7172 onSuccess : ( ) => {
@@ -120,12 +121,7 @@ const ProjectDeploymentWorkflowListItem = ({
120121 return (
121122 < li className = "flex items-center justify-between rounded-md px-2 py-1 hover:bg-gray-50" >
122123 < div className = "flex flex-1 cursor-pointer items-center" onClick = { handleWorkflowClick } >
123- < span
124- className = { twMerge (
125- 'w-80 text-sm font-semibold' ,
126- ! projectDeploymentWorkflow . enabled && 'text-muted-foreground'
127- ) }
128- >
124+ < span className = { twMerge ( 'w-80 text-sm font-semibold' , ! enabled && 'text-muted-foreground' ) } >
129125 { workflow . label }
130126 </ span >
131127
@@ -141,9 +137,18 @@ const ProjectDeploymentWorkflowListItem = ({
141137 < div className = "flex items-center gap-x-4" >
142138 { projectDeploymentWorkflow ?. lastExecutionDate ? (
143139 < Tooltip >
144- < TooltipTrigger className = "flex items-center text-sm text-gray-500" >
140+ < TooltipTrigger
141+ className = { twMerge (
142+ 'flex items-center text-sm text-content-neutral-secondary' ,
143+ lastExecutionStatus === 'FAILED' && 'text-content-destructive-primary'
144+ ) }
145+ >
146+ < span className = "pr-1 text-xs capitalize" >
147+ { lastExecutionStatus ?. toLocaleLowerCase ( ) || '' }
148+ </ span >
149+
145150 < span className = "text-xs" >
146- { `Executed at ${ projectDeploymentWorkflow . lastExecutionDate ?. toLocaleDateString ( ) } ${ projectDeploymentWorkflow . lastExecutionDate ?. toLocaleTimeString ( ) } ` }
151+ { `at ${ lastExecutionDate ?. toLocaleDateString ( ) } ${ lastExecutionDate ?. toLocaleTimeString ( ) } ` }
147152 </ span >
148153 </ TooltipTrigger >
149154
@@ -160,7 +165,7 @@ const ProjectDeploymentWorkflowListItem = ({
160165 < Tooltip >
161166 < TooltipTrigger asChild >
162167 < Button
163- disabled = { ! projectDeploymentEnabled || ! projectDeploymentWorkflow . enabled }
168+ disabled = { ! projectDeploymentEnabled || ! enabled }
164169 icon = { < PlayIcon className = "text-success" /> }
165170 onClick = { handleRunWorkflowClick }
166171 size = "icon"
@@ -172,16 +177,15 @@ const ProjectDeploymentWorkflowListItem = ({
172177 </ Tooltip >
173178 ) }
174179
175- { ! hostedChatTrigger && ! formTrigger && projectDeploymentWorkflow . staticWebhookUrl && (
180+ { ! hostedChatTrigger && ! formTrigger && staticWebhookUrl && (
176181 < Tooltip >
177182 < TooltipTrigger asChild >
178183 < Button
179- disabled = { ! projectDeploymentWorkflow . enabled }
184+ disabled = { ! enabled }
180185 icon = { < ClipboardIcon /> }
181186 onClick = { ( ) =>
182187 copyToClipboard (
183- projectDeploymentWorkflow . staticWebhookUrl ! +
184- ( workflow . sseStreamResponse ? '/sse' : '' )
188+ staticWebhookUrl ! + ( workflow . sseStreamResponse ? '/sse' : '' )
185189 )
186190 }
187191 size = "icon"
@@ -193,11 +197,11 @@ const ProjectDeploymentWorkflowListItem = ({
193197 </ Tooltip >
194198 ) }
195199
196- { formTrigger && projectDeploymentWorkflow . staticWebhookUrl && (
200+ { formTrigger && staticWebhookUrl && (
197201 < Tooltip >
198202 < TooltipTrigger asChild >
199203 < Button
200- disabled = { ! projectDeploymentWorkflow . enabled }
204+ disabled = { ! enabled }
201205 icon = { < FormIcon /> }
202206 onClick = { ( ) => navigate ( formTriggerPageUrl ) }
203207 size = "icon"
@@ -209,11 +213,11 @@ const ProjectDeploymentWorkflowListItem = ({
209213 </ Tooltip >
210214 ) }
211215
212- { hostedChatTrigger && projectDeploymentWorkflow . staticWebhookUrl && (
216+ { hostedChatTrigger && staticWebhookUrl && (
213217 < Tooltip >
214218 < TooltipTrigger asChild >
215219 < Button
216- disabled = { ! projectDeploymentWorkflow . enabled }
220+ disabled = { ! enabled }
217221 icon = { < MessageCircleMoreIcon /> }
218222 onClick = { ( ) => window . open ( hostedChatTriggerPageUrl , '_self' ) }
219223 size = "icon"
@@ -232,7 +236,7 @@ const ProjectDeploymentWorkflowListItem = ({
232236 ) }
233237
234238 < Switch
235- checked = { projectDeploymentWorkflow . enabled }
239+ checked = { enabled }
236240 className = "mr-2"
237241 disabled = { enableProjectDeploymentWorkflowMutation . isPending }
238242 onCheckedChange = { ( value ) =>
0 commit comments