1- import {
2- createFileRoute ,
3- Outlet ,
4- ToOptions ,
5- useMatchRoute ,
6- useNavigate ,
7- useRouteContext ,
8- } from '@tanstack/react-router' ;
1+ import { createFileRoute , Outlet , ToOptions , useNavigate , useRouteContext } from '@tanstack/react-router' ;
92import { pipe , Schema } from 'effect' ;
103import { Ulid } from 'id128' ;
114import { RefObject , useRef } from 'react' ;
@@ -29,12 +22,13 @@ import { CollectionIcon, FlowsIcon, OverviewIcon } from '@the-dev-tools/ui/icons
2922import { ListBoxItemLink } from '@the-dev-tools/ui/list-box' ;
3023import { Menu , MenuItem , useContextMenuState } from '@the-dev-tools/ui/menu' ;
3124import { PanelResizeHandle } from '@the-dev-tools/ui/resizable-panel' ;
32- import { makeTabsRx , RouteTabList , TabsRx , useTabShortcuts } from '@the-dev-tools/ui/router' ;
25+ import { makeTabsRx , RouteTabList , TabsRouteContext } from '@the-dev-tools/ui/router' ;
3326import { tw } from '@the-dev-tools/ui/tailwind-literal' ;
3427import { TextField , useEditableTextState } from '@the-dev-tools/ui/text-field' ;
3528import { saveFile , useEscapePortal } from '@the-dev-tools/ui/utils' ;
3629import { useConnectMutation } from '~/api/connect-query' ;
3730import { useMutate , useQuery } from '~data-client' ;
31+ import { useOnFlowDelete } from '~flow/layout' ;
3832import { DashboardLayout } from '../authorized' ;
3933import { CollectionListTree } from '../collection' ;
4034import { EnvironmentsWidget } from '../environment' ;
@@ -48,7 +42,10 @@ const makeRoute = createFileRoute('/_authorized/workspace/$workspaceIdCan');
4842
4943export const Route = makeRoute ( {
5044 validateSearch : ( _ ) => Schema . decodeSync ( WorkspaceRouteSearch ) ( _ ) ,
51- context : ( ) : { tabsRx : TabsRx } => ( { tabsRx : makeTabsRx ( ) } ) ,
45+ context : ( { params : { workspaceIdCan } } ) : Omit < TabsRouteContext , 'runtime' > => ( {
46+ baseRoute : { from : '/' , params : { workspaceIdCan } , to : '/workspace/$workspaceIdCan' } ,
47+ tabsRx : makeTabsRx ( ) ,
48+ } ) ,
5249 loader : ( { params : { workspaceIdCan } } ) => {
5350 const workspaceId = Ulid . fromCanonical ( workspaceIdCan ) . bytes ;
5451 return { workspaceId } ;
@@ -61,14 +58,12 @@ function Layout() {
6158
6259 const { workspaceId } = Route . useLoaderData ( ) ;
6360 const { workspaceIdCan } = Route . useParams ( ) ;
64- const { tabsRx } = Route . useRouteContext ( ) ;
61+ const context = Route . useRouteContext ( ) ;
6562
6663 const workspace = useQuery ( WorkspaceGetEndpoint , { workspaceId } ) ;
6764
6865 const baseRoute : ToOptions = { from : '/' , params : { workspaceIdCan } , to : '/workspace/$workspaceIdCan' } ;
6966
70- useTabShortcuts ( { baseRoute, runtime, tabsRx } ) ;
71-
7267 return (
7368 < DashboardLayout
7469 navbar = {
@@ -162,7 +157,7 @@ function Layout() {
162157 < Panel >
163158 < PanelGroup direction = 'vertical' >
164159 < div className = { tw `-mt-px pt-2` } >
165- < RouteTabList baseRoute = { baseRoute } runtime = { runtime } tabsRx = { tabsRx } />
160+ < RouteTabList baseRoute = { baseRoute } runtime = { runtime } tabsRx = { context . tabsRx } />
166161 </ div >
167162 < Panel >
168163 < Outlet />
@@ -239,8 +234,7 @@ const FlowItem = ({ flow: { flowId, name }, id: flowIdCan, listRef }: FlowItemPr
239234 const { workspaceIdCan } = Route . useParams ( ) ;
240235 const { workspaceId } = Route . useLoaderData ( ) ;
241236
242- const matchRoute = useMatchRoute ( ) ;
243- const navigate = useNavigate ( ) ;
237+ const onFlowDelete = useOnFlowDelete ( ) ;
244238
245239 const [ flowUpdate , flowUpdateLoading ] = useMutate ( FlowUpdateEndpoint ) ;
246240
@@ -301,9 +295,8 @@ const FlowItem = ({ flow: { flowId, name }, id: flowIdCan, listRef }: FlowItemPr
301295
302296 < MenuItem
303297 onAction = { async ( ) => {
298+ await onFlowDelete ( flowId ) ;
304299 await dataClient . fetch ( FlowDeleteEndpoint , { flowId } ) ;
305- if ( ! matchRoute ( { params : { flowIdCan } , to : '/workspace/$workspaceIdCan/flow/$flowIdCan' } ) ) return ;
306- await navigate ( { from : Route . fullPath , to : '/workspace/$workspaceIdCan' } ) ;
307300 } }
308301 variant = 'danger'
309302 >
0 commit comments