Skip to content

Commit 12e91b1

Browse files
committed
crate: Simplify releaseTrackSet using release_tracks meta
1 parent 7dc77de commit 12e91b1

File tree

3 files changed

+12
-11
lines changed

3 files changed

+12
-11
lines changed

app/models/crate.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,17 @@ export default class Crate extends Model {
8383
return Object.fromEntries(versions.slice().map(v => [v.id, v]));
8484
}
8585

86+
/**
87+
* @type {Set<string>}
88+
**/
8689
@cached get releaseTrackSet() {
87-
let map = new Map();
88-
let { versionsObj: versions, versionIdsBySemver } = this;
89-
for (let id of versionIdsBySemver) {
90-
let { releaseTrack, isPrerelease, yanked } = versions[id];
91-
if (releaseTrack && !isPrerelease && !yanked && !map.has(releaseTrack)) {
92-
map.set(releaseTrack, id);
93-
}
94-
}
95-
return new Set(map.values());
90+
let { release_tracks } = this.versions_meta ?? {};
91+
assert(
92+
'`loadVersionsTask.perform({ withReleaseTracks: true })` must be called before calling `releaseTrackSet`',
93+
release_tracks != null,
94+
);
95+
let nums = Object.values(release_tracks ?? {}).map(it => it.highest) ?? [];
96+
return new Set(nums);
9697
}
9798

9899
hasOwnerUser(userId) {

app/models/version.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export default class Version extends Model {
106106
return false;
107107
}
108108

109-
return this.crate?.releaseTrackSet.has(this.id);
109+
return this.crate?.releaseTrackSet.has(this.num);
110110
}
111111

112112
get featureList() {

tests/models/version-test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ module('Model | Version', function (hooks) {
229229
this.server.create('version', { crate, num: '0.4.2' });
230230
this.server.create('version', { crate, num: '0.4.3', yanked: true });
231231
crateRecord = await this.store.findRecord('crate', crate.name, { reload: true });
232-
versions = (await crateRecord.loadVersionsTask.perform({ reload: true })).slice();
232+
versions = (await crateRecord.loadVersionsTask.perform({ reload: true, withReleaseTracks: true })).slice();
233233

234234
assert.deepEqual(
235235
versions.map(it => ({ num: it.num, isHighestOfReleaseTrack: it.isHighestOfReleaseTrack })),

0 commit comments

Comments
 (0)