@@ -26,6 +26,7 @@ import {
2626 UseAssetServiceGetAssetEventsKeyFn ,
2727 useAssetServiceMaterializeAsset ,
2828 UseDagRunServiceGetDagRunsKeyFn ,
29+ useDagServiceGetDagDetails ,
2930 useDagsServiceRecentDagRunsKey ,
3031 useDependenciesServiceGetDependencies ,
3132 UseGridServiceGridDataKeyFn ,
@@ -40,7 +41,9 @@ import type {
4041import { ErrorAlert } from "src/components/ErrorAlert" ;
4142import { JsonEditor } from "src/components/JsonEditor" ;
4243import { Dialog , toaster } from "src/components/ui" ;
44+ import { Checkbox } from "src/components/ui/Checkbox" ;
4345import { RadioCardItem , RadioCardRoot } from "src/components/ui/RadioCard" ;
46+ import { useTogglePause } from "src/queries/useTogglePause" ;
4447
4548type Props = {
4649 readonly asset : AssetResponse ;
@@ -51,6 +54,7 @@ type Props = {
5154export const CreateAssetEventModal = ( { asset, onClose, open } : Props ) => {
5255 const [ eventType , setEventType ] = useState ( "manual" ) ;
5356 const [ extraError , setExtraError ] = useState < string | undefined > ( ) ;
57+ const [ unpause , setUnpause ] = useState ( true ) ;
5458 const [ extra , setExtra ] = useState ( "{}" ) ;
5559 const queryClient = useQueryClient ( ) ;
5660
@@ -118,6 +122,12 @@ export const CreateAssetEventModal = ({ asset, onClose, open }: Props) => {
118122 await Promise . all ( queryKeys . map ( ( key ) => queryClient . invalidateQueries ( { queryKey : key } ) ) ) ;
119123 } ;
120124
125+ const { data : dag } = useDagServiceGetDagDetails ( { dagId : upstreamDagId ?? "" } , undefined , {
126+ enabled : Boolean ( upstreamDagId ) ,
127+ } ) ;
128+
129+ const { mutate : togglePause } = useTogglePause ( { dagId : dag ?. dag_id ?? upstreamDagId ?? "" } ) ;
130+
121131 const {
122132 error : manualError ,
123133 isPending,
@@ -133,6 +143,14 @@ export const CreateAssetEventModal = ({ asset, onClose, open }: Props) => {
133143
134144 const handleSubmit = ( ) => {
135145 if ( eventType === "materialize" ) {
146+ if ( unpause && dag ?. is_paused ) {
147+ togglePause ( {
148+ dagId : dag . dag_id ,
149+ requestBody : {
150+ is_paused : false ,
151+ } ,
152+ } ) ;
153+ }
136154 materializeAsset ( { assetId : asset . id } ) ;
137155 } else {
138156 createAssetEvent ( {
@@ -162,7 +180,7 @@ export const CreateAssetEventModal = ({ asset, onClose, open }: Props) => {
162180 >
163181 < HStack align = "stretch" >
164182 < RadioCardItem
165- description = { `Trigger the Dag upstream of this asset${ upstreamDagId === undefined ? "" : `: ${ upstreamDagId } ` } ` }
183+ description = { `Trigger the Dag upstream of this asset${ upstreamDagId === undefined ? "" : `: ${ dag ?. dag_display_name ?? upstreamDagId } ` } ` }
166184 disabled = { ! hasUpstreamDag }
167185 label = "Materialize"
168186 value = "materialize"
@@ -177,6 +195,11 @@ export const CreateAssetEventModal = ({ asset, onClose, open }: Props) => {
177195 < Text color = "fg.error" > { extraError } </ Text >
178196 </ Field . Root >
179197 ) : undefined }
198+ { eventType === "materialize" && dag ?. is_paused ? (
199+ < Checkbox checked = { unpause } colorPalette = "blue" onChange = { ( ) => setUnpause ( ! unpause ) } >
200+ Unpause { dag . dag_display_name } on trigger
201+ </ Checkbox >
202+ ) : undefined }
180203 < ErrorAlert error = { eventType === "manual" ? manualError : materializeError } />
181204 </ Dialog . Body >
182205 < Dialog . Footer >
0 commit comments