11"use client" ;
22
3- import React , { useEffect } from "react" ;
4- import { Handle , Position , NodeProps , Node , useReactFlow } from "@xyflow/react" ;
3+ import React from "react" ;
4+ import { Handle , Position , NodeProps , Node } from "@xyflow/react" ;
55import type { LucideIcon } from "lucide-react" ;
66import { Loader2 , Check , X , Layers , Asterisk , RefreshCcw } from "lucide-react" ;
77import { Tooltip } from "react-tippy" ;
8- import { useRealtimeRunsWithTag } from "@trigger.dev/react-hooks " ;
8+ import type { RealtimeRun , AnyTask } from "@trigger.dev/sdk " ;
99import { cn } from "@/lib/cn" ;
1010
1111export type ActionNodeData = Node <
@@ -15,24 +15,7 @@ export type ActionNodeData = Node<
1515 isTerminalAction ?: boolean ;
1616 trigger : {
1717 taskIdentifier : string ;
18- userTag : string ;
19- currentRunTag ?: string ;
20- currentRunStatus ?:
21- | "WAITING_FOR_DEPLOY"
22- | "PENDING_VERSION"
23- | "QUEUED"
24- | "EXECUTING"
25- | "REATTEMPTING"
26- | "FROZEN"
27- | "COMPLETED"
28- | "CANCELED"
29- | "FAILED"
30- | "CRASHED"
31- | "INTERRUPTED"
32- | "SYSTEM_FAILURE"
33- | "DELAYED"
34- | "EXPIRED"
35- | "TIMED_OUT" ;
18+ currentRun ?: RealtimeRun < AnyTask > ;
3619 } ;
3720 } ,
3821 "action"
@@ -50,60 +33,33 @@ const triggerStatusToIcon: Record<string, React.ElementType> = {
5033 FAILED : X ,
5134} ;
5235
53- function ActionNode ( { id, data } : NodeProps < ActionNodeData > ) {
54- const { runs } = useRealtimeRunsWithTag ( data . trigger . userTag ) ;
55- const { updateNodeData } = useReactFlow < ActionNodeData > ( ) ;
56-
57- useEffect ( ( ) => {
58- if ( ! data . trigger . currentRunTag && data . trigger . currentRunStatus !== undefined ) {
59- updateNodeData ( id , {
60- trigger : { ...data . trigger , currentRunStatus : undefined } ,
61- } ) ;
62- return ;
63- }
64-
65- const run = runs . find (
66- ( run ) =>
67- run . tags . includes ( data . trigger . currentRunTag as string ) &&
68- run . taskIdentifier === data . trigger . taskIdentifier
69- ) ;
70- if ( ! run ) {
71- if ( data . trigger . currentRunStatus !== undefined ) {
72- updateNodeData ( id , {
73- trigger : { ...data . trigger , currentRunStatus : undefined } ,
74- } ) ;
75- }
76- return ;
77- }
78- updateNodeData ( id , {
79- trigger : { ...data . trigger , currentRunStatus : run . status } ,
80- } ) ;
81- } , [ runs , id , updateNodeData ] ) ;
36+ function ActionNode ( { data } : NodeProps < ActionNodeData > ) {
37+ const { currentRun } = data . trigger ;
8238
8339 return (
8440 < div className = "px-4 py-2 shadow-md rounded-lg bg-white border-1 border-zinc-200 text-sm relative" >
85- { data . trigger . currentRunStatus && (
41+ { currentRun && (
8642 < div
8743 className = { cn (
8844 "absolute -top-1.5 -right-1.5 flex items-center justify-center w-4 h-4 rounded-full bg-gray-400" ,
8945 {
90- "bg-blue-400" : data . trigger . currentRunStatus === "EXECUTING" ,
91- "bg-yellow-400" : data . trigger . currentRunStatus === "REATTEMPTING" ,
92- "bg-emerald-400" : data . trigger . currentRunStatus === "COMPLETED" ,
93- "bg-red-400" : data . trigger . currentRunStatus === "FAILED" ,
46+ "bg-blue-400" : currentRun . status === "EXECUTING" ,
47+ "bg-yellow-400" : currentRun . status === "REATTEMPTING" ,
48+ "bg-emerald-400" : currentRun . status === "COMPLETED" ,
49+ "bg-red-400" : currentRun . status === "FAILED" ,
9450 }
9551 ) }
9652 >
9753 { /* @ts -ignore - there is some weird type issue with react-tippy */ }
9854 < Tooltip
99- title = { data . trigger . currentRunStatus . toLowerCase ( ) }
55+ title = { currentRun . status . toLowerCase ( ) }
10056 position = "right"
10157 trigger = "mouseenter"
10258 size = "small"
10359 >
104- { React . createElement ( triggerStatusToIcon [ data . trigger . currentRunStatus ] ?? Asterisk , {
60+ { React . createElement ( triggerStatusToIcon [ currentRun . status ] ?? Asterisk , {
10561 className : cn ( "size-3 text-white" , {
106- "animate-spin" : data . trigger . currentRunStatus === "EXECUTING" ,
62+ "animate-spin" : currentRun . status === "EXECUTING" ,
10763 } ) ,
10864 } ) }
10965 </ Tooltip >
0 commit comments