Skip to content

Commit

Permalink
DeviceInfo: Improve logging to undersatnd module registry = nil issue
Browse files Browse the repository at this point in the history
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
  • Loading branch information
RSNara authored and facebook-github-bot committed Aug 20, 2023
1 parent adb9cbc commit eb3d5a4
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions packages/react-native/React/CoreModules/RCTDeviceInfo.mm
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,22 @@
#import <React/RCTConstants.h>
#import <React/RCTEventDispatcherProtocol.h>
#import <React/RCTInitializing.h>
#import <React/RCTInvalidating.h>
#import <React/RCTUIUtils.h>
#import <React/RCTUtils.h>

#import "CoreModulesPlugins.h"

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;
Expand Down Expand Up @@ -70,6 +72,11 @@ - (void)initialize
object:nil];
}

- (void)invalidate
{
_invalidated = YES;
}

static BOOL RCTIsIPhoneNotched()
{
static BOOL isIPhoneNotched = NO;
Expand Down Expand Up @@ -108,9 +115,11 @@ static BOOL RCTIsIPhoneNotched()

- (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);
}
Expand Down

0 comments on commit eb3d5a4

Please sign in to comment.