Fix "Platform.constants.reactNativeVersion.prerelease" Flow and TypeScript types (#45256)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/45256

The actual stamped versions here are all strings.

Android interface for constants is untyped, and we always return a string here. iOS, we will try to parse the string into a double, which will fail for every prerelease version RN has ever published.

Platform on Windows seems to uniquely be doing the right thing.

Changelog:
[General][Fixed] - Fix Platform.constants.reactNativeVersion type

Reviewed By: robhogan, necolas

Differential Revision: D59141948

fbshipit-source-id: 9c758e5eb8796b03197258d87ec06b31018e211c
This commit is contained in:
Nick Gerleman
2024-07-03 13:51:59 -07:00
committed by Facebook GitHub Bot
parent 2939dfc208
commit 95d9cdf228
10 changed files with 18 additions and 21 deletions
@@ -31,7 +31,7 @@ const Platform: PlatformType = {
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|},
Version: number,
Release: string,
+1 -1
View File
@@ -24,7 +24,7 @@ type PlatformConstants = {
major: number;
minor: number;
patch: number;
prerelease?: number | null | undefined;
prerelease?: string | null | undefined;
};
};
interface PlatformStatic {
@@ -32,7 +32,7 @@ type IOSPlatform = {
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|},
systemName: string,
isMacCatalyst?: boolean,
@@ -65,7 +65,7 @@ type AndroidPlatform = {
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|},
Version: number,
Release: string,
@@ -34,7 +34,7 @@ const Platform: PlatformType = {
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|},
systemName: string,
isMacCatalyst?: boolean,
@@ -8741,7 +8741,7 @@ type IOSPlatform = {
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|},
systemName: string,
isMacCatalyst?: boolean,
@@ -8765,7 +8765,7 @@ type AndroidPlatform = {
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|},
Version: number,
Release: string,
@@ -24,7 +24,7 @@ NSDictionary* RCTGetReactNativeVersion(void)
RCTVersionMajor: @(1000),
RCTVersionMinor: @(0),
RCTVersionPatch: @(0),
RCTVersionPrerelease: [NSNull null],
RCTVersionPrerelease: @"alpha.0",
};
});
return __rnVersion;
@@ -78,9 +78,7 @@ RCT_EXPORT_MODULE(PlatformConstants)
{.minor = [versions[@"minor"] doubleValue],
.major = [versions[@"major"] doubleValue],
.patch = [versions[@"patch"] doubleValue],
.prerelease = [versions[@"prerelease"] isKindOfClass:[NSNull class]]
? std::optional<double>{}
: [versions[@"prerelease"] doubleValue]}),
.prerelease = [versions[@"prerelease"] isKindOfClass:[NSNull class]] ? nullptr : versions[@"prerelease"]}),
#if TARGET_OS_MACCATALYST
.isMacCatalyst = true,
#else
@@ -27,14 +27,13 @@
metadata.appIdentifier = [[NSBundle mainBundle] bundleIdentifier];
metadata.platform = RCTPlatformName;
metadata.deviceName = [device name];
metadata.reactNativeVersion =
[NSString stringWithFormat:@"%i.%i.%i%@",
[version[@"major"] intValue],
[version[@"minor"] intValue],
[version[@"patch"] intValue],
[version[@"prerelease"] isKindOfClass:[NSNull class]]
? @""
: [@"-" stringByAppendingString:[version[@"prerelease"] stringValue]]];
metadata.reactNativeVersion = [NSString stringWithFormat:@"%i.%i.%i%@",
[version[@"major"] intValue],
[version[@"minor"] intValue],
[version[@"patch"] intValue],
[version[@"prerelease"] isKindOfClass:[NSNull class]]
? @""
: [@"-" stringByAppendingString:version[@"prerelease"]]];
return metadata;
}
@@ -16,7 +16,7 @@ export type ReactNativeVersionAndroid = {|
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|};
export type PlatformConstantsAndroid = {|
@@ -19,7 +19,7 @@ export type PlatformConstantsIOS = {|
major: number,
minor: number,
patch: number,
prerelease: ?number,
prerelease: ?string,
|},
forceTouchAvailable: boolean,
osVersion: string,