13217e243SBen Roth 
23217e243SBen Roth #import <UIKit/UIKit.h>
33217e243SBen Roth 
43217e243SBen Roth @class EXKernelAppRecord;
53217e243SBen Roth 
63217e243SBen Roth @interface EXAppViewController : UIViewController
73217e243SBen Roth 
83217e243SBen Roth - (instancetype)initWithAppRecord:(EXKernelAppRecord *)record;
93217e243SBen Roth - (void)refresh;
109777fddbSEric Samelson - (void)reloadFromCache;
113217e243SBen Roth 
123217e243SBen Roth /**
133217e243SBen Roth  *  Maybe displays an error to the user. Ignores it if RCTRedBox is already showing it.
143217e243SBen Roth  */
153217e243SBen Roth - (void)maybeShowError:(NSError *)error;
163217e243SBen Roth 
173217e243SBen Roth /**
183217e243SBen Roth  *  Settable by the app's screen orientation API via the orientation kernel service.
193217e243SBen Roth  */
203217e243SBen Roth - (void)setSupportedInterfaceOrientations:(UIInterfaceOrientationMask)supportedInterfaceOrientations;
213217e243SBen Roth 
22e7ac6e4fSBen Roth - (void)appStateDidBecomeActive;
23e7ac6e4fSBen Roth - (void)appStateDidBecomeInactive;
243217e243SBen Roth 
25edc8619eSBen Roth /**
26*ce63205bSTomasz Sapeta  *  Backgrounds all descendant controllers (modals) presented by this controller.
27*ce63205bSTomasz Sapeta  */
28*ce63205bSTomasz Sapeta - (void)backgroundControllers;
29*ce63205bSTomasz Sapeta 
30*ce63205bSTomasz Sapeta /**
31*ce63205bSTomasz Sapeta  *  Restores backgrounded controllers.
32*ce63205bSTomasz Sapeta  */
33*ce63205bSTomasz Sapeta - (void)foregroundControllers;
34*ce63205bSTomasz Sapeta 
35*ce63205bSTomasz Sapeta /**
36edc8619eSBen Roth  *  The underlying react view or loading view. We need to expose this for animation/transitions
37edc8619eSBen Roth  *  because react does weird stuff with layout that prevents us from operating on the superview.
38edc8619eSBen Roth  */
39edc8619eSBen Roth @property (nonatomic, strong) UIView *contentView;
40edc8619eSBen Roth 
413217e243SBen Roth @end
42