1
1
"use client" ;
2
2
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" ;
5
5
import type { LucideIcon } from "lucide-react" ;
6
6
import { Loader2 , Check , X , Layers , Asterisk , RefreshCcw } from "lucide-react" ;
7
7
import { Tooltip } from "react-tippy" ;
8
- import { useRealtimeRunsWithTag } from "@trigger.dev/react-hooks " ;
8
+ import type { RealtimeRun , AnyTask } from "@trigger.dev/sdk " ;
9
9
import { cn } from "@/lib/cn" ;
10
10
11
11
export type ActionNodeData = Node <
@@ -15,24 +15,7 @@ export type ActionNodeData = Node<
15
15
isTerminalAction ?: boolean ;
16
16
trigger : {
17
17
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 > ;
36
19
} ;
37
20
} ,
38
21
"action"
@@ -50,65 +33,35 @@ const triggerStatusToIcon: Record<string, React.ElementType> = {
50
33
FAILED : X ,
51
34
} ;
52
35
53
- function ActionNode ( { id, data } : NodeProps < ActionNodeData > ) {
54
- const { runs } = useRealtimeRunsWithTag ( data . trigger . userTag ) ;
55
- const { updateNodeData } = useReactFlow < ActionNodeData > ( ) ;
56
-
57
- useEffect ( ( ) => {
58
- if (
59
- ! data . trigger . currentRunTag &&
60
- data . trigger . currentRunStatus !== undefined
61
- ) {
62
- updateNodeData ( id , {
63
- trigger : { ...data . trigger , currentRunStatus : undefined } ,
64
- } ) ;
65
- return ;
66
- }
67
-
68
- const run = runs . find (
69
- ( run ) =>
70
- run . tags . includes ( data . trigger . currentRunTag as string ) &&
71
- run . taskIdentifier === data . trigger . taskIdentifier
72
- ) ;
73
- if ( ! run ) {
74
- if ( data . trigger . currentRunStatus !== undefined ) {
75
- updateNodeData ( id , {
76
- trigger : { ...data . trigger , currentRunStatus : undefined } ,
77
- } ) ;
78
- }
79
- return ;
80
- }
81
- updateNodeData ( id , {
82
- trigger : { ...data . trigger , currentRunStatus : run . status } ,
83
- } ) ;
84
- } , [ runs , id , updateNodeData ] ) ;
36
+ function ActionNode ( { data } : NodeProps < ActionNodeData > ) {
37
+ const { currentRun } = data . trigger ;
85
38
86
39
return (
87
40
< div className = "px-4 py-2 shadow-md rounded-lg bg-white border-1 border-zinc-200 text-sm relative" >
88
- { data . trigger . currentRunStatus && (
41
+ { currentRun && (
89
42
< div
90
43
className = { cn (
91
44
"absolute -top-1.5 -right-1.5 flex items-center justify-center w-4 h-4 rounded-full bg-gray-400" ,
92
45
{
93
- "bg-blue-400" : data . trigger . currentRunStatus === "EXECUTING" ,
94
- "bg-yellow-400" : data . trigger . currentRunStatus === "REATTEMPTING" ,
95
- "bg-emerald-400" : data . trigger . currentRunStatus === "COMPLETED" ,
96
- "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" ,
97
50
}
98
51
) }
99
52
>
100
53
{ /* @ts -ignore - there is some weird type issue with react-tippy */ }
101
54
< Tooltip
102
- title = { data . trigger . currentRunStatus . toLowerCase ( ) }
55
+ title = { currentRun . status . toLowerCase ( ) }
103
56
position = "right"
104
57
trigger = "mouseenter"
105
58
size = "small"
106
59
>
107
60
{ React . createElement (
108
- triggerStatusToIcon [ data . trigger . currentRunStatus ] ?? Asterisk ,
61
+ triggerStatusToIcon [ currentRun . status ] ?? Asterisk ,
109
62
{
110
63
className : cn ( "size-3 text-white" , {
111
- "animate-spin" : data . trigger . currentRunStatus === "EXECUTING" ,
64
+ "animate-spin" : currentRun . status === "EXECUTING" ,
112
65
} ) ,
113
66
}
114
67
) }
0 commit comments