Skip to content

Commit 718244d

Browse files
committed
minor: redirectWithLoader helper
1 parent 0db9e4c commit 718244d

File tree

1 file changed

+17
-21
lines changed

1 file changed

+17
-21
lines changed

app/routes.tsx

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,16 @@ function convert(m: RouteModule) {
4040
return { ...rest, loader: clientLoader, Component }
4141
}
4242

43+
/**
44+
* We'll have to make these their own files eventually, but in the meantime this
45+
* helper will extract the loader only and make a client-side replace redirect.
46+
* Unfortunately, the loader can't do redirect() with a replace.
47+
*/
48+
const redirectWithLoader = (to: string) => (mod: RouteModule) => ({
49+
loader: mod.clientLoader,
50+
Component: () => <Navigate to={to} replace />,
51+
})
52+
4353
export const routes = createRoutesFromElements(
4454
<Route lazy={() => import('./layouts/RootLayout').then(convert)}>
4555
<Route path="*" element={<NotFound />} />
@@ -122,12 +132,7 @@ export const routes = createRoutesFromElements(
122132
<Route
123133
index
124134
lazy={() =>
125-
import('./pages/system/inventory/SledsTab')
126-
.then(convert)
127-
.then(({ loader }) => ({
128-
loader,
129-
Component: () => <Navigate to="sleds" replace />,
130-
}))
135+
import('./pages/system/inventory/SledsTab').then(redirectWithLoader('sleds'))
131136
}
132137
/>
133138
<Route
@@ -149,12 +154,9 @@ export const routes = createRoutesFromElements(
149154
<Route
150155
index
151156
lazy={() =>
152-
import('./pages/system/inventory/sled/SledInstancesTab')
153-
.then(convert)
154-
.then(({ loader }) => ({
155-
loader,
156-
Component: () => <Navigate to="instances" replace />,
157-
}))
157+
import('./pages/system/inventory/sled/SledInstancesTab').then(
158+
redirectWithLoader('instances')
159+
)
158160
}
159161
/>
160162
<Route
@@ -339,16 +341,10 @@ export const routes = createRoutesFromElements(
339341
<Route lazy={() => import('./pages/project/vpcs/VpcPage').then(convert)}>
340342
<Route
341343
index
342-
// janky one. we only want the loader. we'll have to make this
343-
// its own file eventually. unfortunately the loader can't
344-
// do redirect() with a replace
345344
lazy={() =>
346-
import('./pages/project/vpcs/VpcFirewallRulesTab')
347-
.then(convert)
348-
.then(({ loader }) => ({
349-
loader,
350-
Component: () => <Navigate to="firewall-rules" replace />,
351-
}))
345+
import('./pages/project/vpcs/VpcFirewallRulesTab').then(
346+
redirectWithLoader('firewall-rules')
347+
)
352348
}
353349
/>
354350
<Route

0 commit comments

Comments
 (0)