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 /**
18*95dd8db8SBartłomiej Bukowski  * TODO: temporary solution, see https://github.com/expo/expo/pull/10450
19*95dd8db8SBartłomiej Bukowski  * Hides the LoadingProgressWindow.
20*95dd8db8SBartłomiej Bukowski  */
21*95dd8db8SBartłomiej Bukowski - (void)hideLoadingProgressWindow;
22*95dd8db8SBartłomiej Bukowski 
23*95dd8db8SBartłomiej Bukowski /**
243217e243SBen Roth  *  Settable by the app's screen orientation API via the orientation kernel service.
253217e243SBen Roth  */
263217e243SBen Roth - (void)setSupportedInterfaceOrientations:(UIInterfaceOrientationMask)supportedInterfaceOrientations;
273217e243SBen Roth 
28e7ac6e4fSBen Roth - (void)appStateDidBecomeActive;
29e7ac6e4fSBen Roth - (void)appStateDidBecomeInactive;
303217e243SBen Roth 
31edc8619eSBen Roth /**
32ce63205bSTomasz Sapeta  *  Backgrounds all descendant controllers (modals) presented by this controller.
33ce63205bSTomasz Sapeta  */
34ce63205bSTomasz Sapeta - (void)backgroundControllers;
35ce63205bSTomasz Sapeta 
36ce63205bSTomasz Sapeta /**
37ce63205bSTomasz Sapeta  *  Restores backgrounded controllers.
38ce63205bSTomasz Sapeta  */
39ce63205bSTomasz Sapeta - (void)foregroundControllers;
40ce63205bSTomasz Sapeta 
41ce63205bSTomasz Sapeta /**
42edc8619eSBen Roth  *  The underlying react view or loading view. We need to expose this for animation/transitions
43edc8619eSBen Roth  *  because react does weird stuff with layout that prevents us from operating on the superview.
44edc8619eSBen Roth  */
45edc8619eSBen Roth @property (nonatomic, strong) UIView *contentView;
46edc8619eSBen Roth 
473217e243SBen Roth @end
48