@@ -48,10 +48,23 @@ const getVersionsInURL = () => {
48
48
}
49
49
50
50
const compareReleaseCandidateVersions = ( { version, versionToCompare } ) =>
51
- [ 'prepatch' , null ] . includes ( semver . diff ( version , versionToCompare ) )
51
+ [ 'prerelease' , 'prepatch' , null ] . includes (
52
+ semver . diff ( version , versionToCompare )
53
+ )
54
+
55
+ const getLatestMajorReleaseVersion = releasedVersions =>
56
+ semver . valid (
57
+ semver . coerce (
58
+ releasedVersions . find (
59
+ releasedVersion =>
60
+ ! semver . prerelease ( releasedVersion ) &&
61
+ semver . patch ( releasedVersion ) === 0
62
+ )
63
+ )
64
+ )
52
65
53
66
// Check if `from` rc version is one of the latest major release (ie. 0.60.0)
54
- const checkLatestReleaseCandidate = ( { version, latestVersion } ) =>
67
+ const checkIfVersionIsALatestRC = ( { version, latestVersion } ) =>
55
68
semver . prerelease ( version ) &&
56
69
compareReleaseCandidateVersions ( {
57
70
version : latestVersion ,
@@ -73,7 +86,7 @@ const getReleasedVersionsWithCandidates = ({
73
86
// Show the release candidates of the latest version
74
87
const isLatestReleaseCandidate =
75
88
showReleaseCandidates &&
76
- checkLatestReleaseCandidate ( {
89
+ checkIfVersionIsALatestRC ( {
77
90
version : releasedVersion ,
78
91
latestVersion
79
92
} )
@@ -96,7 +109,22 @@ const getReleasedVersionsWithCandidates = ({
96
109
}
97
110
98
111
const getReleasedVersions = ( { releasedVersions, minVersion, maxVersion } ) => {
99
- return releasedVersions
112
+ const latestMajorReleaseVersion = getLatestMajorReleaseVersion (
113
+ releasedVersions
114
+ )
115
+
116
+ const isVersionAReleaseAndOfLatest = version =>
117
+ version . includes ( 'rc' ) &&
118
+ semver . valid ( semver . coerce ( version ) ) === latestMajorReleaseVersion
119
+
120
+ return releasedVersions . filter (
121
+ releasedVersion =>
122
+ releasedVersion . length > 0 &&
123
+ ( ( maxVersion && semver . lt ( releasedVersion , maxVersion ) ) ||
124
+ ( minVersion &&
125
+ semver . gt ( releasedVersion , minVersion ) &&
126
+ ! isVersionAReleaseAndOfLatest ( releasedVersion ) ) )
127
+ )
100
128
}
101
129
102
130
// Finds the first minor release (which in react-native is the major) when compared to another version
@@ -177,7 +205,7 @@ const VersionSelector = ({ showDiff, showReleaseCandidates }) => {
177
205
showReleaseCandidates
178
206
} )
179
207
180
- setAllVersions ( allVersionsFromResponse )
208
+ setAllVersions ( sanitizedVersions )
181
209
182
210
const fromVersionToBeSet = hasFromVersionInURL
183
211
? versionsInURL . fromVersion
0 commit comments