@@ -7,19 +7,32 @@ export default Route.extend({
7
7
8
8
beforeModel ( transition ) {
9
9
const { params, queryParams } = transition . to ;
10
- let { owner, repo, method, id, view } = params ;
11
- let provider , routeName = 'provider' , routeModels = [ ] ;
10
+ let { owner, repo, method, id, view, provider , serverType } = params ;
11
+ let vcsConfig , routeName = 'provider' , routeModels = [ ] ;
12
12
13
- const vcsConfig = vcsConfigByUrlPrefix ( owner ) ;
13
+ if ( provider ) {
14
+ vcsConfig = vcsConfigByUrlPrefix ( provider ) ;
15
+ } else {
16
+ vcsConfig = vcsConfigByUrlPrefix ( owner ) ;
17
+ }
14
18
15
19
const isLegacyUrl = isEmpty ( vcsConfig ) ;
20
+ const serverTypes = [ 'git' , 'svn' , 'perforce' ] ;
21
+ const isServerTypeUrl = serverTypes . includes ( serverType ) || serverTypes . includes ( id ) ;
22
+
16
23
if ( isLegacyUrl ) {
17
24
provider = defaultVcsConfig . urlPrefix ;
18
25
} else {
19
26
// params include provider, so swap them accordingly
20
- [ provider , owner , repo , method , id ] = [ owner , repo , method , id , view ] ;
27
+ if ( ! isServerTypeUrl ) {
28
+ [ provider , owner , repo , method , id ] = [ owner , repo , method , id , view ] ;
29
+ } else if ( serverTypes . includes ( id ) ) {
30
+ [ provider , owner , repo , serverType , method , id , view ] = [ owner , repo , method , id , view ] ;
31
+ }
21
32
}
22
33
34
+ const newQueryParams = { serverType : serverType , ...queryParams } ;
35
+
23
36
routeModels . push ( provider ) ;
24
37
25
38
if ( owner ) {
@@ -43,7 +56,7 @@ export default Route.extend({
43
56
44
57
if ( this . _router . hasRoute ( routeName ) ) {
45
58
transition . abort ( ) ;
46
- this . transitionTo ( routeName , ...routeModels , { queryParams } ) ;
59
+ this . transitionTo ( routeName , ...routeModels , { queryParams : newQueryParams } ) ;
47
60
}
48
61
}
49
62
} ) ;
0 commit comments