@@ -40,6 +40,16 @@ function convert(m: RouteModule) {
40
40
return { ...rest , loader : clientLoader , Component }
41
41
}
42
42
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
+
43
53
export const routes = createRoutesFromElements (
44
54
< Route lazy = { ( ) => import ( './layouts/RootLayout' ) . then ( convert ) } >
45
55
< Route path = "*" element = { < NotFound /> } />
@@ -122,12 +132,7 @@ export const routes = createRoutesFromElements(
122
132
< Route
123
133
index
124
134
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' ) )
131
136
}
132
137
/>
133
138
< Route
@@ -149,12 +154,9 @@ export const routes = createRoutesFromElements(
149
154
< Route
150
155
index
151
156
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
+ )
158
160
}
159
161
/>
160
162
< Route
@@ -339,16 +341,10 @@ export const routes = createRoutesFromElements(
339
341
< Route lazy = { ( ) => import ( './pages/project/vpcs/VpcPage' ) . then ( convert ) } >
340
342
< Route
341
343
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
345
344
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
+ )
352
348
}
353
349
/>
354
350
< Route
0 commit comments