From 2ab35f317b10e65ca784e7a96fdabc08af99d2f2 Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Mon, 7 Feb 2022 16:19:15 -0800 Subject: [PATCH 1/7] Only call +[NSAppearance currentAppearance] on the main thread --- React/Base/macOS/RCTDynamicColor.m | 4 ++- React/CoreModules/RCTAppearance.h | 3 ++ React/CoreModules/RCTAppearance.mm | 17 ++++++++- packages/rn-tester/Podfile.lock | 58 +++++++++++++++--------------- 4 files changed, 51 insertions(+), 31 deletions(-) diff --git a/React/Base/macOS/RCTDynamicColor.m b/React/Base/macOS/RCTDynamicColor.m index fbc93d1e07af2c..a68873d609e607 100644 --- a/React/Base/macOS/RCTDynamicColor.m +++ b/React/Base/macOS/RCTDynamicColor.m @@ -9,6 +9,8 @@ #import "RCTDynamicColor.h" +#import "RCTAppearance.h" + #define RCT_FORWARD_PROPERTY( PROP, TYPE ) \ - (TYPE)PROP { return [[self effectiveColor] PROP]; } @@ -59,7 +61,7 @@ - (void)encodeWithCoder:(NSCoder *)aCoder - (NSColor *)effectiveColor { NSColor *effectiveColor = _aquaColor; - NSAppearance *appearance = [NSAppearance currentAppearance] ?: [NSApp effectiveAppearance]; + NSAppearance *appearance = [RCTAppearance currentAppearance] ?: [NSApp effectiveAppearance]; NSAppearanceName appearanceName = [appearance bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]]; diff --git a/React/CoreModules/RCTAppearance.h b/React/CoreModules/RCTAppearance.h index 03da22857ff469..dd9f5f3548be2e 100644 --- a/React/CoreModules/RCTAppearance.h +++ b/React/CoreModules/RCTAppearance.h @@ -19,4 +19,7 @@ RCT_EXTERN NSString *RCTColorSchemePreference(NSAppearance *appearance); #endif // ]TODO(macOS GH#774) @interface RCTAppearance : RCTEventEmitter +#if TARGET_OS_OSX // [TODO(macOS GH#774) ++ (NSAppearance *)currentAppearance; +#endif // ]TODO(macOS GH#774) @end diff --git a/React/CoreModules/RCTAppearance.mm b/React/CoreModules/RCTAppearance.mm index 26133e1b6a60f9..233b93a12e797a 100644 --- a/React/CoreModules/RCTAppearance.mm +++ b/React/CoreModules/RCTAppearance.mm @@ -81,7 +81,7 @@ void RCTOverrideAppearancePreference(NSString *const colorSchemeOverride) return RCTAppearanceColorSchemeLight; } - appearance = appearance ?: [NSAppearance currentAppearance]; + appearance = appearance ?: [RCTAppearance currentAppearance]; NSAppearanceName appearanceName = [appearance bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]]; return appearances[appearanceName] ?: RCTAppearanceColorSchemeLight; } @@ -96,6 +96,21 @@ @implementation RCTAppearance { RCT_EXPORT_MODULE(Appearance) +#if TARGET_OS_OSX // [TODO(macOS GH#774) +// We define this wrapper because [NSAppearance currentAppearance] must be called on the main thread ++ (NSAppearance *)currentAppearance { + if ([NSThread isMainThread]) { + return [NSAppearance currentAppearance]; + } else { + __block NSAppearance *appearance = nil; + dispatch_sync(dispatch_get_main_queue(), ^{ + appearance = [NSAppearance currentAppearance]; + }); + return appearance; + } +} +#endif // ]TODO(macOS GH#774) + + (BOOL)requiresMainQueueSetup { return YES; diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index c8dc6ce0264292..cd18072dffc6e9 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -542,8 +542,8 @@ SPEC CHECKSUMS: boost-for-react-native: 8f7c9ecfe357664c072ffbe2432569667cbf1f1b CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8 - FBLazyVector: e65045693f9c698abed6289559d5664ae43e5480 - FBReactNativeSpec: bf9a07a61068d690915213286a51f0cc2d0b97ec + FBLazyVector: b410e2522d3fb15ee761891379c8bac3a7145b78 + FBReactNativeSpec: 47c9c58dc0856f1bdd6b033652c517a4bd5755e4 Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c @@ -558,34 +558,34 @@ SPEC CHECKSUMS: libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b RCT-Folly: 43adc9ce880eb76792f88c011773cb5c664c1419 - RCTRequired: f39a92c9f3041de82ab3e3858bf3c2bfb68f3643 - RCTTypeSafety: ed0561744d5b1a4c12326bbff2c9f8445e1d5d3f - React: bfa3e7f3c29eccaff4985862890c24c2e4b06842 - React-callinvoker: 2bdb27fcccab4b509254fda4826914ad98e8c11b - React-Core: afad14ebb15e6ae07999da604fa15bdcb800ca65 - React-CoreModules: 2a8c0d2c22401551f12d3b012a5f4bf7103bc98f - React-cxxreact: 254672a8cda933664d014db45c8162367fa912e6 - React-jsi: 0c6cbbedfb44b4ca1698dcf6af317f080e7831cb - React-jsiexecutor: 3fa2a7dee4b638c61021d4d05c437b6b9638a6b1 - React-jsinspector: 2827b8e7516aaa294055729b2f7244ef69499707 - React-logger: 8d88188659268d4ad69136412ebf2a5346ce89cb - React-perflogger: ba1e7782405ee712a7fa1c663e0ae3ee0908e83e - React-RCTActionSheet: 369bd420b79981236cd8cd46192652af5abb785d - React-RCTAnimation: 53910b1a7478de6ffc01a9628ebb7d23cf38b547 - React-RCTBlob: f1af9675b3b09a9398b361f9cadd474c3ff3493f - React-RCTImage: 286f777ecb039851127546674e505b25c51af3d4 - React-RCTLinking: 3757095369be633778f3bd3d1126b8004957611e - React-RCTNetwork: 5d36da20e4bd4ce6bbaa32b188cf4686de480da4 - React-RCTPushNotification: 1ab38f9e07a6f99bf1e8be119bf5d20a51bbde0d - React-RCTSettings: 98dcf3bcab4cda7bf1fdde49bb23ccf8081fa79e - React-RCTTest: 0284c8f42efb670ecf77384ec59d80c2ac56955c - React-RCTText: b7fcfdec742abc97d6dc9523cfee34c3dbdbf5a7 - React-RCTVibration: fb5edfe2d51244e6e3944d0030fef7f655af1ead - React-runtimeexecutor: 5b90d3c2d5cf3763aa57572e11d39bf0435f500f + RCTRequired: 997aa921c71189f0474ea229d1b9b3877b8d2880 + RCTTypeSafety: 7ca78e2017287bad2d6d48fd25c0104ca24fd37c + React: 1df0de5dd1742afbf606f1fe6dd52bb1be766661 + React-callinvoker: a055c391e8e260a4f519d1039c495e2fef708c99 + React-Core: 5cb13cd567a16e7129cdc828eeec6f3d29a4e254 + React-CoreModules: e3ac6f32aca4b20480ae67fbcb6933af6541c8d9 + React-cxxreact: 6331677891214bf642228ca237dbe1897e14111d + React-jsi: f1484df06277533de7a380ec647baf9de9557107 + React-jsiexecutor: 4b27aa77b70fb12a7e55c34d040b7083eddcd0d0 + React-jsinspector: 0b43ac3194888125376c528c9a59372cd1799801 + React-logger: ef5bf61191ed8d88ea386af987fc7eb4d626d324 + React-perflogger: 72e9c88f655a2c5d15b272b3127424ef7b993ec6 + React-RCTActionSheet: b176ff76fba3e24f847d97eb8c58f65255c70d5e + React-RCTAnimation: 25082c49e24d9f657d5b911b53c3571fab9f109a + React-RCTBlob: 1ef5b59cd7b8a081aeafbc068a504de83b8c3664 + React-RCTImage: 5b0f45024c72bb8b9696a0a0f6bb29dcd042c9e1 + React-RCTLinking: f9ec6f1d864db5be3fb588b95999c6b7dff419fd + React-RCTNetwork: b95fd1345bd1a622575acbfbec5731219b44c2e2 + React-RCTPushNotification: 6e67c45117c1870beea09877c527ac820b563633 + React-RCTSettings: 1e0ee2f10c878baf1803bcc1657762df3712caa5 + React-RCTTest: 03e4ea22c59e89568651100204e095fe48c6a7f7 + React-RCTText: bb9581a97936ff7b1e5ff5ed2ab7099ec1ea080f + React-RCTVibration: a2e989b4b56b8d148ee4e0fbcb89e68430d2547a + React-runtimeexecutor: f7a26a678aae346b250afebd263b5565d5394748 React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a - React-TurboModuleCxx-WinRTPort: cebbef8a4cff3e6c3c9479ee85d65b089bb11e67 - ReactCommon: 64ed3825048af91d1a040c267ced649ffbb57bcb - Yoga: 1f267b00765ea972d7471f70656a4d4820fc7ae0 + React-TurboModuleCxx-WinRTPort: 9dbc51a8a1721d31e9ba26b1169137575e91d98f + ReactCommon: a9d73e415439a1311524d653c8b0e014c9c19813 + Yoga: 9b72c36743ab33d1908a9026e88242d4ec50f4c3 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: c7a7110b242497f2bf323ba74caedb9ee61ee05e From d663059f2096073e0c579e0659a24d7d97588ef7 Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Mon, 7 Feb 2022 17:42:25 -0800 Subject: [PATCH 2/7] Revert "Only call +[NSAppearance currentAppearance] on the main thread" This reverts commit 2ab35f317b10e65ca784e7a96fdabc08af99d2f2. --- React/Base/macOS/RCTDynamicColor.m | 4 +-- React/CoreModules/RCTAppearance.h | 3 -- React/CoreModules/RCTAppearance.mm | 17 +-------- packages/rn-tester/Podfile.lock | 58 +++++++++++++++--------------- 4 files changed, 31 insertions(+), 51 deletions(-) diff --git a/React/Base/macOS/RCTDynamicColor.m b/React/Base/macOS/RCTDynamicColor.m index a68873d609e607..fbc93d1e07af2c 100644 --- a/React/Base/macOS/RCTDynamicColor.m +++ b/React/Base/macOS/RCTDynamicColor.m @@ -9,8 +9,6 @@ #import "RCTDynamicColor.h" -#import "RCTAppearance.h" - #define RCT_FORWARD_PROPERTY( PROP, TYPE ) \ - (TYPE)PROP { return [[self effectiveColor] PROP]; } @@ -61,7 +59,7 @@ - (void)encodeWithCoder:(NSCoder *)aCoder - (NSColor *)effectiveColor { NSColor *effectiveColor = _aquaColor; - NSAppearance *appearance = [RCTAppearance currentAppearance] ?: [NSApp effectiveAppearance]; + NSAppearance *appearance = [NSAppearance currentAppearance] ?: [NSApp effectiveAppearance]; NSAppearanceName appearanceName = [appearance bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]]; diff --git a/React/CoreModules/RCTAppearance.h b/React/CoreModules/RCTAppearance.h index dd9f5f3548be2e..03da22857ff469 100644 --- a/React/CoreModules/RCTAppearance.h +++ b/React/CoreModules/RCTAppearance.h @@ -19,7 +19,4 @@ RCT_EXTERN NSString *RCTColorSchemePreference(NSAppearance *appearance); #endif // ]TODO(macOS GH#774) @interface RCTAppearance : RCTEventEmitter -#if TARGET_OS_OSX // [TODO(macOS GH#774) -+ (NSAppearance *)currentAppearance; -#endif // ]TODO(macOS GH#774) @end diff --git a/React/CoreModules/RCTAppearance.mm b/React/CoreModules/RCTAppearance.mm index 233b93a12e797a..26133e1b6a60f9 100644 --- a/React/CoreModules/RCTAppearance.mm +++ b/React/CoreModules/RCTAppearance.mm @@ -81,7 +81,7 @@ void RCTOverrideAppearancePreference(NSString *const colorSchemeOverride) return RCTAppearanceColorSchemeLight; } - appearance = appearance ?: [RCTAppearance currentAppearance]; + appearance = appearance ?: [NSAppearance currentAppearance]; NSAppearanceName appearanceName = [appearance bestMatchFromAppearancesWithNames:@[NSAppearanceNameAqua, NSAppearanceNameDarkAqua]]; return appearances[appearanceName] ?: RCTAppearanceColorSchemeLight; } @@ -96,21 +96,6 @@ @implementation RCTAppearance { RCT_EXPORT_MODULE(Appearance) -#if TARGET_OS_OSX // [TODO(macOS GH#774) -// We define this wrapper because [NSAppearance currentAppearance] must be called on the main thread -+ (NSAppearance *)currentAppearance { - if ([NSThread isMainThread]) { - return [NSAppearance currentAppearance]; - } else { - __block NSAppearance *appearance = nil; - dispatch_sync(dispatch_get_main_queue(), ^{ - appearance = [NSAppearance currentAppearance]; - }); - return appearance; - } -} -#endif // ]TODO(macOS GH#774) - + (BOOL)requiresMainQueueSetup { return YES; diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index cd18072dffc6e9..c8dc6ce0264292 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -542,8 +542,8 @@ SPEC CHECKSUMS: boost-for-react-native: 8f7c9ecfe357664c072ffbe2432569667cbf1f1b CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8 - FBLazyVector: b410e2522d3fb15ee761891379c8bac3a7145b78 - FBReactNativeSpec: 47c9c58dc0856f1bdd6b033652c517a4bd5755e4 + FBLazyVector: e65045693f9c698abed6289559d5664ae43e5480 + FBReactNativeSpec: bf9a07a61068d690915213286a51f0cc2d0b97ec Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c @@ -558,34 +558,34 @@ SPEC CHECKSUMS: libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b RCT-Folly: 43adc9ce880eb76792f88c011773cb5c664c1419 - RCTRequired: 997aa921c71189f0474ea229d1b9b3877b8d2880 - RCTTypeSafety: 7ca78e2017287bad2d6d48fd25c0104ca24fd37c - React: 1df0de5dd1742afbf606f1fe6dd52bb1be766661 - React-callinvoker: a055c391e8e260a4f519d1039c495e2fef708c99 - React-Core: 5cb13cd567a16e7129cdc828eeec6f3d29a4e254 - React-CoreModules: e3ac6f32aca4b20480ae67fbcb6933af6541c8d9 - React-cxxreact: 6331677891214bf642228ca237dbe1897e14111d - React-jsi: f1484df06277533de7a380ec647baf9de9557107 - React-jsiexecutor: 4b27aa77b70fb12a7e55c34d040b7083eddcd0d0 - React-jsinspector: 0b43ac3194888125376c528c9a59372cd1799801 - React-logger: ef5bf61191ed8d88ea386af987fc7eb4d626d324 - React-perflogger: 72e9c88f655a2c5d15b272b3127424ef7b993ec6 - React-RCTActionSheet: b176ff76fba3e24f847d97eb8c58f65255c70d5e - React-RCTAnimation: 25082c49e24d9f657d5b911b53c3571fab9f109a - React-RCTBlob: 1ef5b59cd7b8a081aeafbc068a504de83b8c3664 - React-RCTImage: 5b0f45024c72bb8b9696a0a0f6bb29dcd042c9e1 - React-RCTLinking: f9ec6f1d864db5be3fb588b95999c6b7dff419fd - React-RCTNetwork: b95fd1345bd1a622575acbfbec5731219b44c2e2 - React-RCTPushNotification: 6e67c45117c1870beea09877c527ac820b563633 - React-RCTSettings: 1e0ee2f10c878baf1803bcc1657762df3712caa5 - React-RCTTest: 03e4ea22c59e89568651100204e095fe48c6a7f7 - React-RCTText: bb9581a97936ff7b1e5ff5ed2ab7099ec1ea080f - React-RCTVibration: a2e989b4b56b8d148ee4e0fbcb89e68430d2547a - React-runtimeexecutor: f7a26a678aae346b250afebd263b5565d5394748 + RCTRequired: f39a92c9f3041de82ab3e3858bf3c2bfb68f3643 + RCTTypeSafety: ed0561744d5b1a4c12326bbff2c9f8445e1d5d3f + React: bfa3e7f3c29eccaff4985862890c24c2e4b06842 + React-callinvoker: 2bdb27fcccab4b509254fda4826914ad98e8c11b + React-Core: afad14ebb15e6ae07999da604fa15bdcb800ca65 + React-CoreModules: 2a8c0d2c22401551f12d3b012a5f4bf7103bc98f + React-cxxreact: 254672a8cda933664d014db45c8162367fa912e6 + React-jsi: 0c6cbbedfb44b4ca1698dcf6af317f080e7831cb + React-jsiexecutor: 3fa2a7dee4b638c61021d4d05c437b6b9638a6b1 + React-jsinspector: 2827b8e7516aaa294055729b2f7244ef69499707 + React-logger: 8d88188659268d4ad69136412ebf2a5346ce89cb + React-perflogger: ba1e7782405ee712a7fa1c663e0ae3ee0908e83e + React-RCTActionSheet: 369bd420b79981236cd8cd46192652af5abb785d + React-RCTAnimation: 53910b1a7478de6ffc01a9628ebb7d23cf38b547 + React-RCTBlob: f1af9675b3b09a9398b361f9cadd474c3ff3493f + React-RCTImage: 286f777ecb039851127546674e505b25c51af3d4 + React-RCTLinking: 3757095369be633778f3bd3d1126b8004957611e + React-RCTNetwork: 5d36da20e4bd4ce6bbaa32b188cf4686de480da4 + React-RCTPushNotification: 1ab38f9e07a6f99bf1e8be119bf5d20a51bbde0d + React-RCTSettings: 98dcf3bcab4cda7bf1fdde49bb23ccf8081fa79e + React-RCTTest: 0284c8f42efb670ecf77384ec59d80c2ac56955c + React-RCTText: b7fcfdec742abc97d6dc9523cfee34c3dbdbf5a7 + React-RCTVibration: fb5edfe2d51244e6e3944d0030fef7f655af1ead + React-runtimeexecutor: 5b90d3c2d5cf3763aa57572e11d39bf0435f500f React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a - React-TurboModuleCxx-WinRTPort: 9dbc51a8a1721d31e9ba26b1169137575e91d98f - ReactCommon: a9d73e415439a1311524d653c8b0e014c9c19813 - Yoga: 9b72c36743ab33d1908a9026e88242d4ec50f4c3 + React-TurboModuleCxx-WinRTPort: cebbef8a4cff3e6c3c9479ee85d65b089bb11e67 + ReactCommon: 64ed3825048af91d1a040c267ced649ffbb57bcb + Yoga: 1f267b00765ea972d7471f70656a4d4820fc7ae0 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: c7a7110b242497f2bf323ba74caedb9ee61ee05e From 9087b80141b4d7916428d56145f48dea0776ed42 Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Mon, 7 Feb 2022 17:58:08 -0800 Subject: [PATCH 3/7] Make -[RCTDevLoadingView showOfflineMessage] async --- React/CoreModules/RCTDevLoadingView.mm | 18 ++++---- packages/rn-tester/Podfile.lock | 58 +++++++++++++------------- 2 files changed, 39 insertions(+), 37 deletions(-) diff --git a/React/CoreModules/RCTDevLoadingView.mm b/React/CoreModules/RCTDevLoadingView.mm index 427620e7802d37..424191acc5b7a4 100644 --- a/React/CoreModules/RCTDevLoadingView.mm +++ b/React/CoreModules/RCTDevLoadingView.mm @@ -266,16 +266,18 @@ - (void)showProgressMessage:(NSString *)message - (void)showOfflineMessage { - RCTUIColor *color = [RCTUIColor whiteColor]; // TODO(macOS GH#774) - RCTUIColor *backgroundColor = [RCTUIColor blackColor]; // TODO(macOS GH#774) + dispatch_async(dispatch_get_main_queue(), ^{ + RCTUIColor *color = [RCTUIColor whiteColor]; // TODO(macOS GH#774) + RCTUIColor *backgroundColor = [RCTUIColor blackColor]; // TODO(macOS GH#774) - if ([self isDarkModeEnabled]) { - color = [RCTUIColor blackColor]; // TODO(macOS GH#774) - backgroundColor = [RCTUIColor whiteColor]; // TODO(macOS GH#774) - } + if ([self isDarkModeEnabled]) { + color = [RCTUIColor blackColor]; // TODO(macOS GH#774) + backgroundColor = [RCTUIColor whiteColor]; // TODO(macOS GH#774) + } - NSString *message = [NSString stringWithFormat:@"Connect to %@ to develop JavaScript.", RCT_PACKAGER_NAME]; - [self showMessage:message color:color backgroundColor:backgroundColor]; + NSString *message = [NSString stringWithFormat:@"Connect to %@ to develop JavaScript.", RCT_PACKAGER_NAME]; + [self showMessage:message color:color backgroundColor:backgroundColor]; + }); } - (BOOL)isDarkModeEnabled diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index c8dc6ce0264292..4ed4fc0ac6434d 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -542,8 +542,8 @@ SPEC CHECKSUMS: boost-for-react-native: 8f7c9ecfe357664c072ffbe2432569667cbf1f1b CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8 - FBLazyVector: e65045693f9c698abed6289559d5664ae43e5480 - FBReactNativeSpec: bf9a07a61068d690915213286a51f0cc2d0b97ec + FBLazyVector: bb159fa022f46e61d310a583a616a975e0580e99 + FBReactNativeSpec: 183393e2ecfd027cdf814746d894fb5ab996ccc7 Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c @@ -558,34 +558,34 @@ SPEC CHECKSUMS: libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b RCT-Folly: 43adc9ce880eb76792f88c011773cb5c664c1419 - RCTRequired: f39a92c9f3041de82ab3e3858bf3c2bfb68f3643 - RCTTypeSafety: ed0561744d5b1a4c12326bbff2c9f8445e1d5d3f - React: bfa3e7f3c29eccaff4985862890c24c2e4b06842 - React-callinvoker: 2bdb27fcccab4b509254fda4826914ad98e8c11b - React-Core: afad14ebb15e6ae07999da604fa15bdcb800ca65 - React-CoreModules: 2a8c0d2c22401551f12d3b012a5f4bf7103bc98f - React-cxxreact: 254672a8cda933664d014db45c8162367fa912e6 - React-jsi: 0c6cbbedfb44b4ca1698dcf6af317f080e7831cb - React-jsiexecutor: 3fa2a7dee4b638c61021d4d05c437b6b9638a6b1 - React-jsinspector: 2827b8e7516aaa294055729b2f7244ef69499707 - React-logger: 8d88188659268d4ad69136412ebf2a5346ce89cb - React-perflogger: ba1e7782405ee712a7fa1c663e0ae3ee0908e83e - React-RCTActionSheet: 369bd420b79981236cd8cd46192652af5abb785d - React-RCTAnimation: 53910b1a7478de6ffc01a9628ebb7d23cf38b547 - React-RCTBlob: f1af9675b3b09a9398b361f9cadd474c3ff3493f - React-RCTImage: 286f777ecb039851127546674e505b25c51af3d4 - React-RCTLinking: 3757095369be633778f3bd3d1126b8004957611e - React-RCTNetwork: 5d36da20e4bd4ce6bbaa32b188cf4686de480da4 - React-RCTPushNotification: 1ab38f9e07a6f99bf1e8be119bf5d20a51bbde0d - React-RCTSettings: 98dcf3bcab4cda7bf1fdde49bb23ccf8081fa79e - React-RCTTest: 0284c8f42efb670ecf77384ec59d80c2ac56955c - React-RCTText: b7fcfdec742abc97d6dc9523cfee34c3dbdbf5a7 - React-RCTVibration: fb5edfe2d51244e6e3944d0030fef7f655af1ead - React-runtimeexecutor: 5b90d3c2d5cf3763aa57572e11d39bf0435f500f + RCTRequired: 8d31f65270b5f1918670aec5ada2872986d768e7 + RCTTypeSafety: 7225e34a67dbdec778cc7dddebcc0dfd65acfd8f + React: fa772546fc662f9aa326bab7d90f684b5b303063 + React-callinvoker: c8a66e5e4f67356e131fbaa8a1a2af1cb10a459e + React-Core: 3c93d006438845b63f97432ec46485782f223b69 + React-CoreModules: 317f1a41f43f8fbc9eb784ae079a514e8a6462e3 + React-cxxreact: 52b7cb7181431d66cb32d300a1e36ee201ea75b7 + React-jsi: c243b884bb7528735e541aab3a3de1efa4763272 + React-jsiexecutor: bc938762f3ae7b59336e84edfe3d330b588aed2b + React-jsinspector: 80df5115655ae2bb52a36ca02f447120f68c8cb8 + React-logger: 90da951f0874271983e44ee74ea38107d95e3e85 + React-perflogger: fdd88d656e5ea9e2b3068a2bf725e23fccf60126 + React-RCTActionSheet: c655071e7c816ebdfba7a4ef247d538f232f2579 + React-RCTAnimation: a02460f3150841889aedefbedf2d0eab631651d4 + React-RCTBlob: 2555aaaac8ebf5fcccfdd13da1664e28f727c55a + React-RCTImage: 3d2cb49a6b39ea9fd4f4018a9b72e03584e3cce0 + React-RCTLinking: 6c1114e67455580433c2f12440e84dfb215bb667 + React-RCTNetwork: 056db6270765df7c11b20576ff02e7387f8c36d4 + React-RCTPushNotification: fee9ed0b0627f774086af1c67b169dd23904d887 + React-RCTSettings: a2a0f059e5d52741001fa3828882fbc2cdaaaa66 + React-RCTTest: 36b7580909350e0622a5df7307258e4e42e119c2 + React-RCTText: 9c47f00131a9bea8231d1020a74b9eefb449cb21 + React-RCTVibration: d2a822445737c53be944d04fdea6d6e2376e3f3b + React-runtimeexecutor: de48e2cda905ec2ea87c1519a35df5021540e0f1 React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a - React-TurboModuleCxx-WinRTPort: cebbef8a4cff3e6c3c9479ee85d65b089bb11e67 - ReactCommon: 64ed3825048af91d1a040c267ced649ffbb57bcb - Yoga: 1f267b00765ea972d7471f70656a4d4820fc7ae0 + React-TurboModuleCxx-WinRTPort: 8c05e7058b1a113114e13c2db6e2c6fb5132303a + ReactCommon: cdd4b170491144717598f19381d0d69e5ff1e71c + Yoga: 40a9965cea1586fe1612fa6e90ff10105826c53b YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: c7a7110b242497f2bf323ba74caedb9ee61ee05e From 94b689d2938aeac5ab8b57bb48b9295cc1ca8d3c Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Mon, 14 Feb 2022 14:50:34 -0800 Subject: [PATCH 4/7] Use RCTExecuteOnMainQueue --- React/CoreModules/RCTDevLoadingView.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/React/CoreModules/RCTDevLoadingView.mm b/React/CoreModules/RCTDevLoadingView.mm index 424191acc5b7a4..a41a2eace6f222 100644 --- a/React/CoreModules/RCTDevLoadingView.mm +++ b/React/CoreModules/RCTDevLoadingView.mm @@ -266,7 +266,8 @@ - (void)showProgressMessage:(NSString *)message - (void)showOfflineMessage { - dispatch_async(dispatch_get_main_queue(), ^{ + // [TODO(macOS GH#774) - isDarkModeEnabled should only be run on the main thread + RCTExecuteOnMainQueue(^{ RCTUIColor *color = [RCTUIColor whiteColor]; // TODO(macOS GH#774) RCTUIColor *backgroundColor = [RCTUIColor blackColor]; // TODO(macOS GH#774) @@ -278,6 +279,7 @@ - (void)showOfflineMessage NSString *message = [NSString stringWithFormat:@"Connect to %@ to develop JavaScript.", RCT_PACKAGER_NAME]; [self showMessage:message color:color backgroundColor:backgroundColor]; }); + // ]TODO(macOS GH#774) } - (BOOL)isDarkModeEnabled From 3d5df02121992f41cc35f541cb1575557f7a3f7e Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Mon, 14 Feb 2022 14:51:07 -0800 Subject: [PATCH 5/7] Use weak reference to self in async block --- React/CoreModules/RCTDevLoadingView.mm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/React/CoreModules/RCTDevLoadingView.mm b/React/CoreModules/RCTDevLoadingView.mm index a41a2eace6f222..020f3ab8c5709e 100644 --- a/React/CoreModules/RCTDevLoadingView.mm +++ b/React/CoreModules/RCTDevLoadingView.mm @@ -267,17 +267,18 @@ - (void)showProgressMessage:(NSString *)message - (void)showOfflineMessage { // [TODO(macOS GH#774) - isDarkModeEnabled should only be run on the main thread + __weak __typeof(self) weakSelf = self; RCTExecuteOnMainQueue(^{ RCTUIColor *color = [RCTUIColor whiteColor]; // TODO(macOS GH#774) RCTUIColor *backgroundColor = [RCTUIColor blackColor]; // TODO(macOS GH#774) - if ([self isDarkModeEnabled]) { + if ([weakSelf isDarkModeEnabled]) { color = [RCTUIColor blackColor]; // TODO(macOS GH#774) backgroundColor = [RCTUIColor whiteColor]; // TODO(macOS GH#774) } NSString *message = [NSString stringWithFormat:@"Connect to %@ to develop JavaScript.", RCT_PACKAGER_NAME]; - [self showMessage:message color:color backgroundColor:backgroundColor]; + [weakSelf showMessage:message color:color backgroundColor:backgroundColor]; }); // ]TODO(macOS GH#774) } From 827865abb63729e2829233c4a090692faa296ea8 Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Mon, 14 Feb 2022 14:51:16 -0800 Subject: [PATCH 6/7] Update Podfile --- packages/rn-tester/Podfile.lock | 58 ++++++++++++++++----------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 4ed4fc0ac6434d..6992c817594788 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -542,8 +542,8 @@ SPEC CHECKSUMS: boost-for-react-native: 8f7c9ecfe357664c072ffbe2432569667cbf1f1b CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8 - FBLazyVector: bb159fa022f46e61d310a583a616a975e0580e99 - FBReactNativeSpec: 183393e2ecfd027cdf814746d894fb5ab996ccc7 + FBLazyVector: 8b6d2854b9cdd0c6e1783dfe31402b6eec4e4207 + FBReactNativeSpec: 3080a83186080a1eb78c67e1b0b64733f9d964ae Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c @@ -558,34 +558,34 @@ SPEC CHECKSUMS: libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b RCT-Folly: 43adc9ce880eb76792f88c011773cb5c664c1419 - RCTRequired: 8d31f65270b5f1918670aec5ada2872986d768e7 - RCTTypeSafety: 7225e34a67dbdec778cc7dddebcc0dfd65acfd8f - React: fa772546fc662f9aa326bab7d90f684b5b303063 - React-callinvoker: c8a66e5e4f67356e131fbaa8a1a2af1cb10a459e - React-Core: 3c93d006438845b63f97432ec46485782f223b69 - React-CoreModules: 317f1a41f43f8fbc9eb784ae079a514e8a6462e3 - React-cxxreact: 52b7cb7181431d66cb32d300a1e36ee201ea75b7 - React-jsi: c243b884bb7528735e541aab3a3de1efa4763272 - React-jsiexecutor: bc938762f3ae7b59336e84edfe3d330b588aed2b - React-jsinspector: 80df5115655ae2bb52a36ca02f447120f68c8cb8 - React-logger: 90da951f0874271983e44ee74ea38107d95e3e85 - React-perflogger: fdd88d656e5ea9e2b3068a2bf725e23fccf60126 - React-RCTActionSheet: c655071e7c816ebdfba7a4ef247d538f232f2579 - React-RCTAnimation: a02460f3150841889aedefbedf2d0eab631651d4 - React-RCTBlob: 2555aaaac8ebf5fcccfdd13da1664e28f727c55a - React-RCTImage: 3d2cb49a6b39ea9fd4f4018a9b72e03584e3cce0 - React-RCTLinking: 6c1114e67455580433c2f12440e84dfb215bb667 - React-RCTNetwork: 056db6270765df7c11b20576ff02e7387f8c36d4 - React-RCTPushNotification: fee9ed0b0627f774086af1c67b169dd23904d887 - React-RCTSettings: a2a0f059e5d52741001fa3828882fbc2cdaaaa66 - React-RCTTest: 36b7580909350e0622a5df7307258e4e42e119c2 - React-RCTText: 9c47f00131a9bea8231d1020a74b9eefb449cb21 - React-RCTVibration: d2a822445737c53be944d04fdea6d6e2376e3f3b - React-runtimeexecutor: de48e2cda905ec2ea87c1519a35df5021540e0f1 + RCTRequired: 75c1fa3eca1ca7fed36e6a4ae32b0f78b4069c83 + RCTTypeSafety: e7d7418744021c10ed59b026314197db496e8a7c + React: f09506239bd1dd77aca8a3c643fad46dd4a34ba8 + React-callinvoker: 6402a85892019b4ae77e69f1075dfb24ed8842b8 + React-Core: 74a79e1f4230e8207ae2dfba542486080fc99f19 + React-CoreModules: 18495438d790bcad7ee772602e17c2bcd6e3a2c2 + React-cxxreact: f4ee47e066af2ab706fe3e614f94b397eb74c067 + React-jsi: b975a74f3574689f128041e0e76d364686b49cc8 + React-jsiexecutor: d245615fb52ffb0a490fe9ede96a39ac0b9a3d93 + React-jsinspector: a14dfe909b1c25b1bba9f5f088c57729b15966d2 + React-logger: d9e3719e694b78654cc0e3f01d94c645de99c978 + React-perflogger: 85023404e88881245f6c18465c458d7598f63d6e + React-RCTActionSheet: bb18ea50c6310780ebf8b358f888fc1d2b6f2d44 + React-RCTAnimation: 5c77a5f5af53b4a201f1462ce2f570c0d85baffb + React-RCTBlob: e1d6be18f2298c5afa9f20490b439bd48d9fec99 + React-RCTImage: 2ed636979cf27cf696380a15fee1163a2dfdf0fb + React-RCTLinking: 36bfd367a52e2309b96d66f59a5cf0ac6c9c4dc7 + React-RCTNetwork: e2fac124fc2d85a093204d4f62b408e6063d0065 + React-RCTPushNotification: 9c1daa1a32132d7d93eb906e948e1af6ba91a65d + React-RCTSettings: f44518b7cbabeb0b361cd9882e87140c9794c7d3 + React-RCTTest: 28179336f9a9fba6bf64fb1d3db55b6e737caa11 + React-RCTText: 5db0863dea481ad69fc0de4f185a89dc481ace6f + React-RCTVibration: 1879372dd67b3b0cd3b27d5762a32a0cc410d0a7 + React-runtimeexecutor: c5839db598539c9e71fe79c48d56e6de23397291 React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a - React-TurboModuleCxx-WinRTPort: 8c05e7058b1a113114e13c2db6e2c6fb5132303a - ReactCommon: cdd4b170491144717598f19381d0d69e5ff1e71c - Yoga: 40a9965cea1586fe1612fa6e90ff10105826c53b + React-TurboModuleCxx-WinRTPort: efa35293506f788de1d812e8164d35751195080c + ReactCommon: a5f5ae3c38ec5e15d6dd6e1dca314c7d5c13ba0c + Yoga: d9c56aedcdbf0e17262e8fd7c41e0ef15b181199 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: c7a7110b242497f2bf323ba74caedb9ee61ee05e From 2305bb71f8cb0a3fc06a15b808fbc01f28be39db Mon Sep 17 00:00:00 2001 From: Adam Gleitman Date: Thu, 17 Feb 2022 17:18:07 -0800 Subject: [PATCH 7/7] Update Podfile.lock --- packages/rn-tester/Podfile.lock | 58 ++++++++++++++++----------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 6992c817594788..8f62ef4400f2e0 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -542,8 +542,8 @@ SPEC CHECKSUMS: boost-for-react-native: 8f7c9ecfe357664c072ffbe2432569667cbf1f1b CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: ed15e075aa758ac0e4c1f8b830bd4e4d40d669e8 - FBLazyVector: 8b6d2854b9cdd0c6e1783dfe31402b6eec4e4207 - FBReactNativeSpec: 3080a83186080a1eb78c67e1b0b64733f9d964ae + FBLazyVector: c698cbaa7e7199f9b42b1ee9be847030fd0a6613 + FBReactNativeSpec: 634ffd02b6c4d813e95feb8ae916647dbaddc19a Flipper: 30e8eeeed6abdc98edaf32af0cda2f198be4b733 Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c @@ -558,34 +558,34 @@ SPEC CHECKSUMS: libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b RCT-Folly: 43adc9ce880eb76792f88c011773cb5c664c1419 - RCTRequired: 75c1fa3eca1ca7fed36e6a4ae32b0f78b4069c83 - RCTTypeSafety: e7d7418744021c10ed59b026314197db496e8a7c - React: f09506239bd1dd77aca8a3c643fad46dd4a34ba8 - React-callinvoker: 6402a85892019b4ae77e69f1075dfb24ed8842b8 - React-Core: 74a79e1f4230e8207ae2dfba542486080fc99f19 - React-CoreModules: 18495438d790bcad7ee772602e17c2bcd6e3a2c2 - React-cxxreact: f4ee47e066af2ab706fe3e614f94b397eb74c067 - React-jsi: b975a74f3574689f128041e0e76d364686b49cc8 - React-jsiexecutor: d245615fb52ffb0a490fe9ede96a39ac0b9a3d93 - React-jsinspector: a14dfe909b1c25b1bba9f5f088c57729b15966d2 - React-logger: d9e3719e694b78654cc0e3f01d94c645de99c978 - React-perflogger: 85023404e88881245f6c18465c458d7598f63d6e - React-RCTActionSheet: bb18ea50c6310780ebf8b358f888fc1d2b6f2d44 - React-RCTAnimation: 5c77a5f5af53b4a201f1462ce2f570c0d85baffb - React-RCTBlob: e1d6be18f2298c5afa9f20490b439bd48d9fec99 - React-RCTImage: 2ed636979cf27cf696380a15fee1163a2dfdf0fb - React-RCTLinking: 36bfd367a52e2309b96d66f59a5cf0ac6c9c4dc7 - React-RCTNetwork: e2fac124fc2d85a093204d4f62b408e6063d0065 - React-RCTPushNotification: 9c1daa1a32132d7d93eb906e948e1af6ba91a65d - React-RCTSettings: f44518b7cbabeb0b361cd9882e87140c9794c7d3 - React-RCTTest: 28179336f9a9fba6bf64fb1d3db55b6e737caa11 - React-RCTText: 5db0863dea481ad69fc0de4f185a89dc481ace6f - React-RCTVibration: 1879372dd67b3b0cd3b27d5762a32a0cc410d0a7 - React-runtimeexecutor: c5839db598539c9e71fe79c48d56e6de23397291 + RCTRequired: 5b8165dc2d154ae675203b025d97fcbfaac84906 + RCTTypeSafety: d16dc8e5ed58c8f0ca350ca9ad80a2a5c744b481 + React: 22eaa338f9d52433334d375f0fce5002c3c12f16 + React-callinvoker: bb104f52af0481a078aab5d634e268702d8a2b91 + React-Core: e064fd1b7047f541ade285021fd31e7737f4768d + React-CoreModules: d8a00becb0fa2d099930aff6624a690ab031fdf6 + React-cxxreact: 8258e18fd8e5c838da7bd8c60e43480ebee868f6 + React-jsi: 41e8e8aa195ee12bd21d0edb962aef4aa2d57603 + React-jsiexecutor: e7ead2d9ecb173add919db89231e5471dedcb240 + React-jsinspector: 1bc0a4dae879def5430ec15137ee6a625c8d463f + React-logger: 05f0b800005a2d418c26843df550700b428c9482 + React-perflogger: 5a32341c36d711266a13f5e461c07b534f3d3de6 + React-RCTActionSheet: 8a66d9d84b547787b0afcc317160c08edf25ea04 + React-RCTAnimation: 31d3ebd4f1b51e40bd89d2ad966c47675cd9854b + React-RCTBlob: 362e4f02d0822db460ba2173e405ff2ed79d1d64 + React-RCTImage: 859233d1dbf70e8560f674ed9896bdaf26a1325e + React-RCTLinking: 1cb551f4e88533dc47856a1042419083a8eba8f3 + React-RCTNetwork: 846bceabf90ceae84869ccbece375b0dafea6825 + React-RCTPushNotification: c2c89f95f8731d829a51cc7925fe0c042ffa37d8 + React-RCTSettings: cbfdb0659b6b16a41e02974ac247db3b0720a80a + React-RCTTest: 7416dae8b8572940328dc0ecbb6fd475fa3dc771 + React-RCTText: 4ca9da2ce6302760331adefc74bce900ffcb588e + React-RCTVibration: 594f9fce9a6aa4f9ff24afc590dc10aaf71664ab + React-runtimeexecutor: 88ff387267009ef609d85b9c0da73e8d4cff2df0 React-TurboModuleCxx-RNW: f2e32cbfced49190a61d66c993a8975de79a158a - React-TurboModuleCxx-WinRTPort: efa35293506f788de1d812e8164d35751195080c - ReactCommon: a5f5ae3c38ec5e15d6dd6e1dca314c7d5c13ba0c - Yoga: d9c56aedcdbf0e17262e8fd7c41e0ef15b181199 + React-TurboModuleCxx-WinRTPort: 2c81bfc7fb741a913d9e834fb76b2b421027037e + ReactCommon: f361d800f6fc5510885d31d98e5791a7b11d2da0 + Yoga: a5c0ccdceef0346e620e8546479bbe5df30ba1c3 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a PODFILE CHECKSUM: c7a7110b242497f2bf323ba74caedb9ee61ee05e