@@ -7,19 +7,32 @@ export default Route.extend({
77
88 beforeModel ( transition ) {
99 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 = [ ] ;
1212
13- const vcsConfig = vcsConfigByUrlPrefix ( owner ) ;
13+ if ( provider ) {
14+ vcsConfig = vcsConfigByUrlPrefix ( provider ) ;
15+ } else {
16+ vcsConfig = vcsConfigByUrlPrefix ( owner ) ;
17+ }
1418
1519 const isLegacyUrl = isEmpty ( vcsConfig ) ;
20+ const serverTypes = [ 'git' , 'svn' , 'perforce' ] ;
21+ const isServerTypeUrl = serverTypes . includes ( serverType ) || serverTypes . includes ( id ) ;
22+
1623 if ( isLegacyUrl ) {
1724 provider = defaultVcsConfig . urlPrefix ;
1825 } else {
1926 // 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+ }
2132 }
2233
34+ const newQueryParams = { serverType : serverType , ...queryParams } ;
35+
2336 routeModels . push ( provider ) ;
2437
2538 if ( owner ) {
@@ -43,7 +56,7 @@ export default Route.extend({
4356
4457 if ( this . _router . hasRoute ( routeName ) ) {
4558 transition . abort ( ) ;
46- this . transitionTo ( routeName , ...routeModels , { queryParams } ) ;
59+ this . transitionTo ( routeName , ...routeModels , { queryParams : newQueryParams } ) ;
4760 }
4861 }
4962} ) ;
0 commit comments