diff --git a/packages/react-native/React/Base/UIKitProxies/RCTInitialAppStateProxy.h b/packages/react-native/React/Base/UIKitProxies/RCTInitialAppStateProxy.h deleted file mode 100644 index efe15e45158..00000000000 --- a/packages/react-native/React/Base/UIKitProxies/RCTInitialAppStateProxy.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface RCTInitialAppStateProxy : NSObject - -+ (instancetype)sharedInstance; - -/* - * Property to access initial application state. - * Thread safe. - */ -@property (nonatomic, readonly) UIApplicationState initialAppState; - -- (void)recordAppState; - -@end - -NS_ASSUME_NONNULL_END diff --git a/packages/react-native/React/Base/UIKitProxies/RCTInitialAppStateProxy.mm b/packages/react-native/React/Base/UIKitProxies/RCTInitialAppStateProxy.mm deleted file mode 100644 index 904b8f7c858..00000000000 --- a/packages/react-native/React/Base/UIKitProxies/RCTInitialAppStateProxy.mm +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#import "RCTInitialAppStateProxy.h" -#import -#import - -#import - -@implementation RCTInitialAppStateProxy { - BOOL _hasRecordedInitialAppState; - UIApplicationState _initialAppState; - std::mutex _mutex; -} - -+ (instancetype)sharedInstance -{ - static RCTInitialAppStateProxy *sharedInstance = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedInstance = [RCTInitialAppStateProxy new]; - }); - return sharedInstance; -} - -- (UIApplicationState)initialAppState -{ - { - std::lock_guard lock(_mutex); - if (_hasRecordedInitialAppState) { - return _initialAppState; - } - } - - __block UIApplicationState initialAppState; - RCTUnsafeExecuteOnMainQueueSync(^{ - initialAppState = [UIApplication sharedApplication].applicationState; - }); - - return initialAppState; -} - -- (void)recordAppState -{ - std::lock_guard lock(_mutex); - _hasRecordedInitialAppState = YES; - _initialAppState = [UIApplication sharedApplication].applicationState; -} - -@end diff --git a/packages/react-native/React/Base/UIKitProxies/RCTInitializeUIKitProxies.mm b/packages/react-native/React/Base/UIKitProxies/RCTInitializeUIKitProxies.mm index f6fb36f3aa3..aaf443ef7bf 100644 --- a/packages/react-native/React/Base/UIKitProxies/RCTInitializeUIKitProxies.mm +++ b/packages/react-native/React/Base/UIKitProxies/RCTInitializeUIKitProxies.mm @@ -7,7 +7,6 @@ #import "RCTInitializeUIKitProxies.h" #import "RCTInitialAccessibilityValuesProxy.h" -#import "RCTInitialAppStateProxy.h" #import "RCTKeyWindowValuesProxy.h" #import "RCTTraitCollectionProxy.h" #import "RCTWindowSafeAreaProxy.h" @@ -18,7 +17,6 @@ void RCTInitializeUIKitProxies(void) dispatch_once(&onceToken, ^{ [[RCTWindowSafeAreaProxy sharedInstance] startObservingSafeArea]; [[RCTTraitCollectionProxy sharedInstance] startObservingTraitCollection]; - [[RCTInitialAppStateProxy sharedInstance] recordAppState]; [[RCTInitialAccessibilityValuesProxy sharedInstance] recordAccessibilityValues]; [[RCTKeyWindowValuesProxy sharedInstance] startObservingWindowSizeIfNecessary]; }); diff --git a/packages/react-native/React/CoreModules/RCTAppState.mm b/packages/react-native/React/CoreModules/RCTAppState.mm index 69b4609c9b8..907e6ce2ac6 100644 --- a/packages/react-native/React/CoreModules/RCTAppState.mm +++ b/packages/react-native/React/CoreModules/RCTAppState.mm @@ -11,8 +11,6 @@ #import #import #import - -#import #import #import "CoreModulesPlugins.h" @@ -33,7 +31,7 @@ static NSString *RCTCurrentAppState() return @"extension"; } - return states[@([RCTInitialAppStateProxy sharedInstance].initialAppState)] ?: @"unknown"; + return states[@(RCTSharedApplication().applicationState)] ?: @"unknown"; } @interface RCTAppState () @@ -47,7 +45,7 @@ RCT_EXPORT_MODULE() + (BOOL)requiresMainQueueSetup { - return NO; + return YES; } - (dispatch_queue_t)methodQueue @@ -62,9 +60,14 @@ RCT_EXPORT_MODULE() - (facebook::react::ModuleConstants)getConstants { - return facebook::react::typedConstants({ - .initialAppState = RCTCurrentAppState(), + __block facebook::react::ModuleConstants constants; + RCTUnsafeExecuteOnMainQueueSync(^{ + constants = facebook::react::typedConstants({ + .initialAppState = RCTCurrentAppState(), + }); }); + + return constants; } #pragma mark - Lifecycle