Skip to content

Commit 2555880

Browse files
AndriiMyskovitalie
authored andcommitted
[PRD] TCI/Assembla Handshake with SVN/P4 (#2769)
1 parent a61a11b commit 2555880

24 files changed

+155
-25
lines changed

app/adapters/repo.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,21 @@ export default V3Adapter.extend({
1919
const prefix = this.urlPrefix();
2020

2121
if (query) {
22-
const { provider, slug, custom } = query;
22+
const { provider, slug, serverType, custom } = query;
2323
const providerPrefix = provider ? `${provider}/` : '';
2424

2525
delete query.provider;
2626
delete query.slug;
2727
delete query.custom;
28+
delete query.serverType;
2829

2930
// fetch repo by slug
3031
if (!id && slug) {
31-
return `${prefix}/repo/${providerPrefix}${encodeURIComponent(slug)}`;
32+
let url = `${prefix}/repo/${providerPrefix}${encodeURIComponent(slug)}`;
33+
if (serverType) {
34+
url = `${url}?server_type=${serverType}`;
35+
}
36+
return url;
3237
}
3338

3439
if (custom && custom.type === 'byOwner') {

app/components/dashboard-row.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Component from '@ember/component';
2+
import { computed } from '@ember/object';
23
import { inject as service } from '@ember/service';
34
import { alias, reads } from '@ember/object/computed';
45
import { task, timeout } from 'ember-concurrency';
@@ -24,6 +25,21 @@ export default Component.extend({
2425

2526
displayMenuTofu: alias('repo.permissions.create_request'),
2627

28+
repositoryProvider: computed('repo.provider', function () {
29+
return this.repo.provider.capitalize();
30+
}),
31+
32+
repositoryType: computed('repo.serverType', function () {
33+
switch (this.repo.serverType) {
34+
case 'git':
35+
return 'GIT';
36+
case 'subversion':
37+
return 'SVN';
38+
case 'perforce':
39+
return 'P4';
40+
}
41+
}),
42+
2743
openDropup() {
2844
this.set('dropupIsOpen', true);
2945
},

app/components/github-apps-repository.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,21 @@ export default Component.extend({
2222
isMatchGithub: match('vcsType', /Github\S+$/),
2323
isNotMatchGithub: not('isMatchGithub'),
2424

25+
repositoryProvider: computed('repository.provider', function () {
26+
return this.repository.provider.capitalize();
27+
}),
28+
29+
repositoryType: computed('repository.serverType', function () {
30+
switch (this.repository.serverType) {
31+
case 'git':
32+
return 'GIT';
33+
case 'subversion':
34+
return 'SVN';
35+
case 'perforce':
36+
return 'P4';
37+
}
38+
}),
39+
2540
accessSettingsUrl: computed('user.vcsType', 'user.vcsId', function () {
2641
return this.user && vcsLinks.accessSettingsUrl(this.user.vcsType, { owner: this.user.login });
2742
}),

app/components/repository-layout.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,21 @@ export default Component.extend({
1414
currentUser: alias('auth.currentUser'),
1515
userRoMode: reads('currentUser.roMode'),
1616

17+
repositoryProvider: computed('repo.provider', function () {
18+
return this.repo.provider.capitalize();
19+
}),
20+
21+
repositoryType: computed('repo.serverType', function () {
22+
switch (this.repo.serverType) {
23+
case 'git':
24+
return 'GIT';
25+
case 'subversion':
26+
return 'SVN';
27+
case 'perforce':
28+
return 'P4';
29+
}
30+
}),
31+
1732
repoUrl: computed('repo.{ownerName,vcsName,vcsType}', function () {
1833
const owner = this.get('repo.ownerName');
1934
const repo = this.get('repo.vcsName');

app/controllers/repo.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ export default Controller.extend({
1616
features: service(),
1717
updateTimesService: service('updateTimes'),
1818

19-
queryParams: ['migrationStatus'],
19+
queryParams: ['migrationStatus', 'serverType'],
20+
serverType: null,
2021
migrationStatus: null,
2122

2223
jobController: controller('job'),

app/models/repo.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ const Repo = VcsEntity.extend({
5050
migrationStatus: attr('string'),
5151
historyMigrationStatus: attr('string'),
5252
scanFailedAt: attr('date'),
53+
serverType: attr('string', { defaultValue: 'git' }),
5354

5455
currentScan: computed('scanFailedAt', function () {
5556
let scanFailedAt = this.get('scanFailedAt');
@@ -425,12 +426,15 @@ Repo.reopenClass({
425426
});
426427
},
427428

428-
fetchBySlug(store, slug, provider = defaultVcsConfig.urlPrefix) {
429-
const loadedRepos = store.peekAll('repo').filterBy('provider', provider).filterBy('slug', slug);
429+
fetchBySlug(store, slug, provider = defaultVcsConfig.urlPrefix, serverType = undefined) {
430+
let loadedRepos = store.peekAll('repo').filterBy('provider', provider).filterBy('slug', slug);
431+
if (serverType) {
432+
loadedRepos = loadedRepos.filterBy('serverType', serverType);
433+
}
430434
if (!isEmpty(loadedRepos)) {
431435
return EmberPromise.resolve(loadedRepos.firstObject);
432436
}
433-
return store.queryRecord('repo', { slug, provider });
437+
return store.queryRecord('repo', { slug, provider, serverType });
434438
},
435439
});
436440

app/models/user.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ export default Owner.extend({
7878
this.set('applyFilterRepos', !isOrganization);
7979
return this.api
8080
.post(`/user/${this.id}/sync`)
81-
.then(() => this.poll(),
82-
() => this.set('isSyncing', false));
81+
.then(() => this.poll());
8382
},
8483

8584
schedulePoll() {
@@ -91,7 +90,7 @@ export default Owner.extend({
9190

9291
poll() {
9392
return this.reload().then(() => {
94-
if (!this.isSyncing) {
93+
if (this.isSyncing) {
9594
this.schedulePoll();
9695
} else {
9796
this.permissionsService.fetchPermissions.perform();

app/router.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ Router.map(function () {
9393
this.route('legacy-repo-url', { path: '/:owner/:repo/:method' });
9494
this.route('legacy-repo-url', { path: '/:owner/:repo/:method/:id' });
9595
this.route('legacy-repo-url', { path: '/:owner/:repo/:method/:id/:view' });
96+
this.route('legacy-repo-url', { path: '/:provider/:owner/:repo/:serverType/:method/:id' });
97+
this.route('legacy-repo-url', { path: '/:provider/:owner/:repo/:serverType/:method/:id/:view' });
9698

9799
this.route('error404', { path: '/404' });
98100
this.route('page-not-found', { path: '/*wildcard' });

app/routes/legacy-repo-url.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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
});

app/routes/repo.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ export default TravisRoute.extend(ScrollResetMixin, {
5252
return { provider, owner, name };
5353
},
5454

55-
model({ provider, owner, name }) {
55+
model({ provider, owner, name, serverType }) {
5656
const slug = `${owner}/${name}`;
5757
this.set('slug', slug);
58-
return Repo.fetchBySlug(this.store, slug, provider);
58+
return Repo.fetchBySlug(this.store, slug, provider, serverType);
5959
},
6060

6161
beforeModel() {

0 commit comments

Comments
 (0)