DeviceInfo: Improve logging to undersatnd module registry = nil issue

Summary:
For some reason, the module registry is nil inside RCTDeviceInfo.

**Hypothesis:** DeviceInfo is outliving React Native teardown (somehow).

This diff adds additional logging inside RCTDeviceInfo so that we could better undersatnd the problem.

Changelog: [Internal]

Reviewed By: cipolleschi

Differential Revision: D48237716

fbshipit-source-id: 459306dab5cddd4da50ed767087b93e33085be67
This commit is contained in:
Ramanpreet Nara
2023-08-19 19:53:40 -07:00
committed by Facebook GitHub Bot
parent adb9cbc0f3
commit eb3d5a4b83
@@ -13,6 +13,7 @@
#import <React/RCTConstants.h>
#import <React/RCTEventDispatcherProtocol.h>
#import <React/RCTInitializing.h>
#import <React/RCTInvalidating.h>
#import <React/RCTUIUtils.h>
#import <React/RCTUtils.h>
@@ -20,13 +21,14 @@
using namespace facebook::react;
@interface RCTDeviceInfo () <NativeDeviceInfoSpec, RCTInitializing>
@interface RCTDeviceInfo () <NativeDeviceInfoSpec, RCTInitializing, RCTInvalidating>
@end
@implementation RCTDeviceInfo {
UIInterfaceOrientation _currentInterfaceOrientation;
NSDictionary *_currentInterfaceDimensions;
BOOL _isFullscreen;
BOOL _invalidated;
}
@synthesize moduleRegistry = _moduleRegistry;
@@ -70,6 +72,11 @@ RCT_EXPORT_MODULE()
object:nil];
}
- (void)invalidate
{
_invalidated = YES;
}
static BOOL RCTIsIPhoneNotched()
{
static BOOL isIPhoneNotched = NO;
@@ -108,9 +115,11 @@ static NSDictionary *RCTExportedDimensions(CGFloat fontScale)
- (NSDictionary *)_exportedDimensions
{
RCTAssert(_moduleRegistry, @"ModuleRegistry must be set to properly init dimensions");
RCTAssert(!_invalidated, @"Failed to get exported dimensions: RCTDeviceInfo has been invalidated");
RCTAssert(_moduleRegistry, @"Failed to get exported dimensions: RCTModuleRegistry is nil");
RCTAccessibilityManager *accessibilityManager =
(RCTAccessibilityManager *)[_moduleRegistry moduleForName:"AccessibilityManager"];
RCTAssert(accessibilityManager, @"Failed to get exported dimensions: AccessibilityManager is nil");
CGFloat fontScale = accessibilityManager ? accessibilityManager.multiplier : 1.0;
return RCTExportedDimensions(fontScale);
}