diff --git a/packages/react-native/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm b/packages/react-native/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm index 39efae8d4fb..287128e83df 100644 --- a/packages/react-native/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm +++ b/packages/react-native/React/CoreModules/PlatformStubs/RCTStatusBarManager.mm @@ -27,15 +27,10 @@ RCT_EXPORT_METHOD(setNetworkActivityIndicatorVisible : (BOOL)visible) {} - (facebook::react::ModuleConstants)getConstants { - __block facebook::react::ModuleConstants constants; - RCTUnsafeExecuteOnMainQueueSync(^{ - constants = facebook::react::typedConstants({ - .HEIGHT = 0, - .DEFAULT_BACKGROUND_COLOR = std::nullopt, - }); + return facebook::react::typedConstants({ + .HEIGHT = 0, + .DEFAULT_BACKGROUND_COLOR = std::nullopt, }); - - return constants; } - (facebook::react::ModuleConstants)constantsToExport diff --git a/packages/react-native/React/CoreModules/RCTStatusBarManager.mm b/packages/react-native/React/CoreModules/RCTStatusBarManager.mm index 5762334cecb..a7cd2cc9db5 100644 --- a/packages/react-native/React/CoreModules/RCTStatusBarManager.mm +++ b/packages/react-native/React/CoreModules/RCTStatusBarManager.mm @@ -9,6 +9,7 @@ #import "CoreModulesPlugins.h" #import +#import #import #import @@ -47,10 +48,12 @@ RCT_ENUM_CONVERTER( @end -@interface RCTStatusBarManager () +@interface RCTStatusBarManager () @end -@implementation RCTStatusBarManager +@implementation RCTStatusBarManager { + facebook::react::ModuleConstants _constants; +} static BOOL RCTViewControllerBasedStatusBarAppearance() { @@ -72,6 +75,14 @@ RCT_EXPORT_MODULE() return YES; } +- (void)initialize +{ + _constants = facebook::react::typedConstants({ + .HEIGHT = RCTUIStatusBarManager().statusBarFrame.size.height, + .DEFAULT_BACKGROUND_COLOR = std::nullopt, + }); +} + - (NSArray *)supportedEvents { return @[ kStatusBarFrameDidChange, kStatusBarFrameWillChange ]; @@ -177,15 +188,7 @@ RCT_EXPORT_METHOD(setNetworkActivityIndicatorVisible : (BOOL)visible) - (facebook::react::ModuleConstants)getConstants { - __block facebook::react::ModuleConstants constants; - RCTUnsafeExecuteOnMainQueueSync(^{ - constants = facebook::react::typedConstants({ - .HEIGHT = RCTUIStatusBarManager().statusBarFrame.size.height, - .DEFAULT_BACKGROUND_COLOR = std::nullopt, - }); - }); - - return constants; + return _constants; } - (facebook::react::ModuleConstants)constantsToExport diff --git a/packages/react-native/package.json b/packages/react-native/package.json index cd2387499eb..9cc59bc22f2 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -159,6 +159,9 @@ }, "PlatformConstants": { "unstableRequiresMainQueueSetup": true + }, + "StatusBarManager": { + "unstableRequiresMainQueueSetup": true } } },