Immediately trigger renderApplication from RCTRootView init
Reviewed By: fkgozali Differential Revision: D4849610 fbshipit-source-id: 291a9bcdf0efe47d83130fe2675f3ef04a3f085b
This commit is contained in:
parent
6138e20379
commit
59378f71db
|
@ -99,6 +99,7 @@ RCT_CUSTOM_VIEW_PROPERTY(customProp, NSString, RCTPropsTestView)
|
||||||
_bridge = [[RCTBridge alloc] initWithBundleURL:[bundle URLForResource:@"UIExplorerUnitTestsBundle" withExtension:@"js"]
|
_bridge = [[RCTBridge alloc] initWithBundleURL:[bundle URLForResource:@"UIExplorerUnitTestsBundle" withExtension:@"js"]
|
||||||
moduleProvider:nil
|
moduleProvider:nil
|
||||||
launchOptions:nil];
|
launchOptions:nil];
|
||||||
|
RUN_RUNLOOP_WHILE(_bridge.isLoading);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)testSetProps
|
- (void)testSetProps
|
||||||
|
|
|
@ -18,11 +18,13 @@
|
||||||
|
|
||||||
@interface RCTRootContentView : RCTView <RCTInvalidating>
|
@interface RCTRootContentView : RCTView <RCTInvalidating>
|
||||||
|
|
||||||
@property (nonatomic, readonly) BOOL contentHasAppeared;
|
@property (nonatomic, readonly, weak) RCTBridge *bridge;
|
||||||
|
@property (nonatomic, readonly, assign) BOOL contentHasAppeared;
|
||||||
@property (nonatomic, readonly, strong) RCTTouchHandler *touchHandler;
|
@property (nonatomic, readonly, strong) RCTTouchHandler *touchHandler;
|
||||||
|
@property (nonatomic, readonly, assign) CGSize availableSize;
|
||||||
|
|
||||||
@property (nonatomic, assign) BOOL passThroughTouches;
|
@property (nonatomic, assign) BOOL passThroughTouches;
|
||||||
@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility;
|
@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility;
|
||||||
@property (nonatomic, readonly) CGSize availableSize;
|
|
||||||
|
|
||||||
- (instancetype)initWithFrame:(CGRect)frame
|
- (instancetype)initWithFrame:(CGRect)frame
|
||||||
bridge:(RCTBridge *)bridge
|
bridge:(RCTBridge *)bridge
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
@implementation RCTRootContentView
|
@implementation RCTRootContentView
|
||||||
{
|
{
|
||||||
__weak RCTBridge *_bridge;
|
|
||||||
UIColor *_backgroundColor;
|
UIColor *_backgroundColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,11 +92,10 @@ NSString *const RCTContentDidAppearNotification = @"RCTContentDidAppearNotificat
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!_bridge.loading) {
|
|
||||||
[self bundleFinishedLoading:([_bridge batchedBridge] ?: _bridge)];
|
|
||||||
}
|
|
||||||
|
|
||||||
[self showLoadingView];
|
[self showLoadingView];
|
||||||
|
|
||||||
|
// Immediately schedule the application to be started
|
||||||
|
[self bundleFinishedLoading:[_bridge batchedBridge]];
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
RCT_PROFILE_END_EVENT(RCTProfileTagAlways, @"");
|
||||||
|
@ -259,11 +258,14 @@ RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
|
||||||
// Use the (batched) bridge that's sent in the notification payload, so the
|
// Use the (batched) bridge that's sent in the notification payload, so the
|
||||||
// RCTRootContentView is scoped to the right bridge
|
// RCTRootContentView is scoped to the right bridge
|
||||||
RCTBridge *bridge = notification.userInfo[@"bridge"];
|
RCTBridge *bridge = notification.userInfo[@"bridge"];
|
||||||
[self bundleFinishedLoading:bridge];
|
if (bridge != _contentView.bridge) {
|
||||||
|
[self bundleFinishedLoading:bridge];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)bundleFinishedLoading:(RCTBridge *)bridge
|
- (void)bundleFinishedLoading:(RCTBridge *)bridge
|
||||||
{
|
{
|
||||||
|
RCTAssert(bridge != nil, @"Bridge cannot be nil");
|
||||||
if (!bridge.valid) {
|
if (!bridge.valid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1207,7 +1207,7 @@ RCT_EXPORT_METHOD(dispatchViewManagerCommand:(nonnull NSNumber *)reactTag
|
||||||
{
|
{
|
||||||
// If there is an active batch layout will happen when batch finished, so we will wait for that.
|
// If there is an active batch layout will happen when batch finished, so we will wait for that.
|
||||||
// Otherwise we immidiately trigger layout.
|
// Otherwise we immidiately trigger layout.
|
||||||
if (![_bridge isBatchActive]) {
|
if (![_bridge isBatchActive] && ![_bridge isLoading]) {
|
||||||
[self _layoutAndMount];
|
[self _layoutAndMount];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue