@@ -48,10 +48,23 @@ const getVersionsInURL = () => {
4848}
4949
5050const 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+ )
5265
5366// 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 } ) =>
5568 semver . prerelease ( version ) &&
5669 compareReleaseCandidateVersions ( {
5770 version : latestVersion ,
@@ -73,7 +86,7 @@ const getReleasedVersionsWithCandidates = ({
7386 // Show the release candidates of the latest version
7487 const isLatestReleaseCandidate =
7588 showReleaseCandidates &&
76- checkLatestReleaseCandidate ( {
89+ checkIfVersionIsALatestRC ( {
7790 version : releasedVersion ,
7891 latestVersion
7992 } )
@@ -96,7 +109,22 @@ const getReleasedVersionsWithCandidates = ({
96109}
97110
98111const 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+ )
100128}
101129
102130// 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 }) => {
177205 showReleaseCandidates
178206 } )
179207
180- setAllVersions ( allVersionsFromResponse )
208+ setAllVersions ( sanitizedVersions )
181209
182210 const fromVersionToBeSet = hasFromVersionInURL
183211 ? versionsInURL . fromVersion
0 commit comments