1
1
module UnisonShare.Route exposing
2
- ( Route (..)
2
+ ( ProjectRoute (..)
3
+ , Route (..)
3
4
, forProject
4
5
, fromUrl
5
6
, navigate
@@ -73,10 +74,14 @@ import Url.Builder exposing (relative)
73
74
-}
74
75
75
76
77
+ type ProjectRoute
78
+ = ProjectRoot PerspectiveParams
79
+ | ProjectDefinition PerspectiveParams Reference
80
+
81
+
76
82
type Route
77
83
= Catalog
78
- | Perspective PerspectiveParams
79
- | Definition PerspectiveParams Reference
84
+ | Project ProjectRoute
80
85
81
86
82
87
updatePerspectiveParams : Route -> PerspectiveParams -> Route
@@ -85,11 +90,11 @@ updatePerspectiveParams route params =
85
90
Catalog ->
86
91
Catalog
87
92
88
- Perspective _ ->
89
- Perspective params
93
+ Project ( ProjectRoot _ ) ->
94
+ Project ( ProjectRoot params)
90
95
91
- Definition _ ref ->
92
- Definition params ref
96
+ Project ( ProjectDefinition _ ref) ->
97
+ Project ( ProjectDefinition params ref)
93
98
94
99
95
100
@@ -103,12 +108,12 @@ catalog =
103
108
104
109
perspective : Parser Route
105
110
perspective =
106
- succeed Perspective |. slash |= RP . perspectiveParams |. end
111
+ succeed ( ProjectRoot >> Project ) |. slash |= RP . perspectiveParams |. end
107
112
108
113
109
114
definition : Parser Route
110
115
definition =
111
- succeed Definition |. slash |= RP . perspectiveParams |. slash |= reference |. end
116
+ succeed ( \ pp r -> Project ( ProjectDefinition pp r )) |. slash |= RP . perspectiveParams |. slash |= reference |. end
112
117
113
118
114
119
toRoute : Parser Route
@@ -149,7 +154,7 @@ fromUrl basePath url =
149
154
" /" ++ path
150
155
151
156
parse url_ =
152
- Result . withDefault ( Perspective ( ByCodebase Relative )) ( Parser . run toRoute url_)
157
+ Result . withDefault ( Project ( ProjectRoot ( ByCodebase Relative ) )) ( Parser . run toRoute url_)
153
158
in
154
159
url
155
160
|> . path
@@ -168,11 +173,11 @@ perspectiveParams route =
168
173
Catalog ->
169
174
Nothing
170
175
171
- Perspective nsRef ->
172
- Just nsRef
176
+ Project ( ProjectRoot pp ) ->
177
+ Just pp
173
178
174
- Definition nsRef _ ->
175
- Just nsRef
179
+ Project ( ProjectDefinition pp _ ) ->
180
+ Just pp
176
181
177
182
178
183
@@ -185,7 +190,7 @@ forProject project_ =
185
190
fqn =
186
191
FQN . cons ( Project . ownerToString project_. owner) project_. name
187
192
in
188
- Perspective ( Perspective . ByNamespace Relative fqn)
193
+ Project ( ProjectRoot ( Perspective . ByNamespace Relative fqn) )
189
194
190
195
191
196
@@ -200,7 +205,7 @@ toDefinition oldRoute ref =
200
205
|> perspectiveParams
201
206
|> Maybe . withDefault ( ByCodebase Relative )
202
207
in
203
- Definition params ref
208
+ Project ( ProjectDefinition params ref)
204
209
205
210
206
211
toUrlString : Route -> String
@@ -253,10 +258,10 @@ toUrlString route =
253
258
Catalog ->
254
259
[ " catalog" ]
255
260
256
- Perspective pp ->
261
+ Project ( ProjectRoot pp ) ->
257
262
perspectiveParamsToPath pp False
258
263
259
- Definition pp ref ->
264
+ Project ( ProjectDefinition pp ref) ->
260
265
case ref of
261
266
TypeReference hq ->
262
267
perspectiveParamsToPath pp True ++ ( " types" :: hqToPath hq)
@@ -284,9 +289,13 @@ navigate navKey route =
284
289
|> Nav . pushUrl navKey
285
290
286
291
292
+
293
+ -- TODO: this should go away in UnisonShare
294
+
295
+
287
296
navigateToPerspective : Nav .Key -> PerspectiveParams -> Cmd msg
288
297
navigateToPerspective navKey perspectiveParams_ =
289
- navigate navKey ( Perspective perspectiveParams_)
298
+ navigate navKey ( Project ( ProjectRoot perspectiveParams_) )
290
299
291
300
292
301
navigateToCurrentPerspective : Nav .Key -> Route -> Cmd msg
@@ -310,6 +319,10 @@ navigateToDefinition navKey currentRoute reference =
310
319
navigate navKey ( toDefinition currentRoute reference)
311
320
312
321
322
+
323
+ -- TODO: This should go away in UnisonShare
324
+
325
+
313
326
replacePerspective : Nav .Key -> PerspectiveParams -> Route -> Cmd msg
314
327
replacePerspective navKey perspectiveParams_ oldRoute =
315
328
let
@@ -318,10 +331,10 @@ replacePerspective navKey perspectiveParams_ oldRoute =
318
331
Catalog ->
319
332
Catalog
320
333
321
- Perspective _ ->
322
- Perspective perspectiveParams_
334
+ Project ( ProjectRoot _ ) ->
335
+ Project ( ProjectRoot perspectiveParams_)
323
336
324
- Definition _ ref ->
325
- Definition perspectiveParams_ ref
337
+ Project ( ProjectDefinition _ ref) ->
338
+ Project ( ProjectDefinition perspectiveParams_ ref)
326
339
in
327
340
navigate navKey newRoute
0 commit comments