@@ -12,9 +12,8 @@ import { ViewColumnsIcon } from '@heroicons/react/24/solid'
1212import { Button } from '@components/button/Button'
1313import { EnumVariant } from '~/types/enum'
1414import { useStoreContext } from '@context/context'
15- import { apiCancelLineage , useApiModelLineage } from '@api/index'
15+ import { useApiModelLineage } from '@api/index'
1616import Graph from '@components/graph/Graph'
17- import { useQueryClient } from '@tanstack/react-query'
1817import Loading from '@components/loading/Loading'
1918
2019export const EnumEditorPreviewTabs = {
@@ -40,6 +39,7 @@ export default function EditorPreview({
4039 const previewTable = useStoreEditor ( s => s . previewTable )
4140
4241 const [ activeTabIndex , setActiveTabIndex ] = useState ( - 1 )
42+ const [ modelName , setModelName ] = useState < string | undefined > ( )
4343
4444 const tabs = useMemo ( ( ) => {
4545 if ( tab . file . isLocal )
@@ -58,6 +58,7 @@ export default function EditorPreview({
5858
5959 return [ EnumEditorPreviewTabs . Console ]
6060 } , [ tab ] )
61+
6162 const [ headers , data ] = useMemo (
6263 ( ) =>
6364 previewTable == null
@@ -88,6 +89,10 @@ export default function EditorPreview({
8889 setActiveTabIndex ( tab . file . isSQLMeshModel ? 3 : - 1 )
8990 } , [ previewTable , previewQuery , previewConsole , tab ] )
9091
92+ useEffect ( ( ) => {
93+ setModelName ( models . get ( tab . file . path ) ?. name )
94+ } , [ models , tab . file ] )
95+
9196 const table = useReactTable ( {
9297 data,
9398 columns,
@@ -106,8 +111,6 @@ export default function EditorPreview({
106111 return tabName === EnumEditorPreviewTabs . Query && isNil ( previewQuery )
107112 }
108113
109- const model = models . get ( tab . file . path )
110-
111114 return (
112115 < div
113116 className = { clsx (
@@ -262,12 +265,13 @@ export default function EditorPreview({
262265 'w-full h-full ring-white ring-opacity-60 ring-offset-2 ring-offset-blue-400 focus:outline-none focus:ring-2 p-2' ,
263266 ) }
264267 >
265- { model == null ? (
268+ { modelName == null ? (
266269 < div > Model Does Not Exist</ div >
267270 ) : (
268271 < EditorPreviewLineage
269- key = { model . name }
270- model = { model . name }
272+ key = { modelName }
273+ model = { modelName }
274+ tab = { tab }
271275 />
272276 ) }
273277 </ Tab . Panel >
@@ -277,44 +281,42 @@ export default function EditorPreview({
277281 )
278282}
279283
280- function EditorPreviewLineage ( { model } : { model : string } ) : JSX . Element {
281- const client = useQueryClient ( )
282-
283- const { data : dag , refetch : getModelLineage } = useApiModelLineage ( model )
284+ function EditorPreviewLineage ( {
285+ model,
286+ tab,
287+ } : {
288+ model : string
289+ tab : EditorTab
290+ } ) : JSX . Element {
291+ const { data : lineage , refetch : getModelLineage } = useApiModelLineage ( model )
284292
285293 const previewLineage = useStoreEditor ( s => s . previewLineage )
286294 const setPreviewLineage = useStoreEditor ( s => s . setPreviewLineage )
287295
288296 const debouncedGetModelLineage = useCallback (
289297 debounceAsync ( getModelLineage , 1000 , true ) ,
290- [ model ] ,
298+ [ model , tab . file . path , tab . file . fingerprint ] ,
291299 )
292300
293301 useEffect ( ( ) => {
294302 void debouncedGetModelLineage ( )
295-
296- return ( ) => {
297- debouncedGetModelLineage . cancel ( )
298-
299- apiCancelLineage ( client )
300- }
301- } , [ model ] )
303+ } , [ debouncedGetModelLineage ] )
302304
303305 useEffect ( ( ) => {
304- if ( dag == null ) {
306+ if ( lineage == null ) {
305307 setPreviewLineage ( undefined )
306308 } else {
307309 setPreviewLineage (
308- Object . keys ( dag ) . reduce ( ( acc : Record < string , Lineage > , key ) => {
310+ Object . keys ( lineage ) . reduce ( ( acc : Record < string , Lineage > , key ) => {
309311 acc [ key ] = {
310- models : dag [ key ] ?? [ ] ,
312+ models : lineage [ key ] ?? [ ] ,
311313 }
312314
313315 return acc
314316 } , { } ) ,
315317 )
316318 }
317- } , [ dag ] )
319+ } , [ lineage ] )
318320
319321 return previewLineage == null ? (
320322 < div className = "w-full h-full flex items-center justify-center bg-primary-10" >
0 commit comments