Permalink
Browse files

RCTSurface: Couple helper functions for Stage

Summary: We need this trivial funcs to unify spinner appearance logic.

Reviewed By: rsnara

Differential Revision: D6367072

fbshipit-source-id: 70e288bc1fed5911828a5f6deaa829597bf8ebff
  • Loading branch information...
shergin authored and facebook-github-bot committed Dec 4, 2017
1 parent da17b23 commit e9e0cd7ab86c98bcd3201e306e96532685d8de1d
@@ -55,7 +55,7 @@ + (instancetype)newWithBridge:(RCTBridge *)bridge
options:options];
CKComponent *component;
if (options.activityIndicatorComponentFactory == nil || state.surface.stage & RCTSurfaceStageSurfaceDidInitialLayout) {
if (options.activityIndicatorComponentFactory == nil || RCTSurfaceStageIsRunning(state.surface.stage)) {
component = surfaceHostingComponent;
} else {
component = [CKOverlayLayoutComponent newWithComponent:surfaceHostingComponent
@@ -82,7 +82,7 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge
_stage = RCTSurfaceStageSurfaceDidInitialize;
if (!bridge.loading) {
_stage = (RCTSurfaceStage)(_stage | RCTSurfaceStageBridgeDidLoad);
_stage = _stage | RCTSurfaceStageBridgeDidLoad;
}
[self _registerRootViewTag];
@@ -9,6 +9,8 @@
#import <UIKit/UIKit.h>
#import <React/RCTDefines.h>
/**
* The stage of the Surface
*/
@@ -22,3 +24,13 @@ typedef NS_OPTIONS(NSInteger, RCTSurfaceStage) {
RCTSurfaceStageSurfaceDidInitialMounting = 1 << 6, // UIManager completed the first mounting pass
RCTSurfaceStageSurfaceDidInvalidate = 1 << 7, // Surface received `invalidate` message
};
/**
* Returns `YES` if the stage is suitable for displaying normal React Native app.
*/
RCT_EXTERN BOOL RCTSurfaceStageIsRunning(RCTSurfaceStage stage);
/**
* Returns `YES` if the stage is suitable for displaying activity indicator.
*/
RCT_EXTERN BOOL RCTSurfaceStageIsPreparing(RCTSurfaceStage stage);
@@ -0,0 +1,22 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#import "RCTSurfaceStage.h"
BOOL RCTSurfaceStageIsRunning(RCTSurfaceStage stage) {
return
(stage & RCTSurfaceStageSurfaceDidInitialLayout) &&
!(stage & RCTSurfaceStageSurfaceDidInvalidate);
}
BOOL RCTSurfaceStageIsPreparing(RCTSurfaceStage stage) {
return
!(stage & RCTSurfaceStageSurfaceDidInitialLayout) &&
!(stage & RCTSurfaceStageSurfaceDidInvalidate);
}

0 comments on commit e9e0cd7

Please sign in to comment.