MCPcopy Create free account
hub / github.com/ember-learn/ember-api-docs / ProjectVersionRoute

Class ProjectVersionRoute

app/routes/project-version.js:9–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

7export default class ProjectVersionRoute extends Route {
8 @service
9 headData;
10
11 @service
12 metaStore;
13
14 /** @type {import('@ember/routing/router-service').default} */
15 @service
16 router;
17
18 @service store;
19
20 @service('project')
21 projectService;
22
23 async model({ project, project_version }) {
24 let projectObj = await this.store.findRecord('project', project);
25 let projectVersion = getFullVersion(
26 project_version,
27 project,
28 projectObj,
29 this.metaStore,
30 );
31 let id = `${project}-${projectVersion}`;
32 this.projectService.setUrlVersion(project_version);
33 this.projectService.setVersion(projectVersion);
34 return this.store.findRecord('project-version', id, {
35 includes: 'project',
36 });
37 }
38
39 // Using redirect instead of afterModel so transition succeeds and returns 307
40 redirect(model, transition) {
41 const lookupParams = (routeName) => {
42 let route = transition.routeInfos.find(({ name }) => name === routeName);
43 return route && route.params;
44 };
45 this._gatherHeadDataFromVersion(
46 model,
47 lookupParams('project-version').project_version,
48 );
49
50 let classParams = lookupParams('project-version.classes.class');
51 let moduleParams = lookupParams('project-version.modules.module');
52 let namespaceParams = lookupParams('project-version.namespaces.namespace');
53 let functionParams = lookupParams('project-version.functions.function');
54 let transitionVersion = this.projectService.getUrlVersion();
55 if (
56 moduleParams?.module === 'ember-data-overview' &&
57 semverCompare(transitionVersion, '4.7') < 0 &&
58 transitionVersion !== 'release' // infinite redirects happen without this line
59 ) {
60 return this.router.transitionTo('project-version.index');
61 }
62 if (!classParams && !moduleParams && !namespaceParams && !functionParams) {
63 // if there is no class, module, or namespace specified...
64 let latestVersion = getLastVersion(
65 model.project.hasMany('projectVersions').ids(),
66 );

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected