1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 #import "EXScopedEventEmitter.h"
4 
5 @class EXHomeModule;
6 
7 @protocol EXHomeModuleDelegate <NSObject>
8 
9 /**
10  *  Whether the kernel JS should show any devtools UI or respond to devtools commands.
11  */
12 - (BOOL)homeModuleShouldEnableDevtools:(EXHomeModule *)module;
13 
14 /**
15  *  Whether to enable legacy gesture/button for the Expo menu.
16  */
17 - (BOOL)homeModuleShouldEnableLegacyMenuBehavior:(EXHomeModule *)module;
18 - (void)homeModule:(EXHomeModule *)module didSelectEnableLegacyMenuBehavior:(BOOL)isEnabled;
19 
20 /**
21  *  Dictionary of `key` => `user facing label` items to show in the kernel JS dev menu.
22  */
23 - (NSDictionary <NSString *, NSString *> *)devMenuItemsForHomeModule:(EXHomeModule *)module;
24 
25 - (BOOL)homeModuleShouldFinishNux:(EXHomeModule *)homeModule;
26 - (void)homeModule:(EXHomeModule *)homeModule didFinishNux:(BOOL)isNuxFinished;
27 
28 - (void)homeModule:(EXHomeModule *)module didSelectDevMenuItemWithKey:(NSString *)key;
29 - (void)homeModuleDidSelectHomeDiagnostics:(EXHomeModule *)module;
30 - (void)homeModule:(EXHomeModule *)module didOpenUrl:(NSString *)url;
31 - (void)homeModuleDidSelectRefresh:(EXHomeModule *)module;
32 - (void)homeModuleDidSelectCloseMenu:(EXHomeModule *)module;
33 - (void)homeModuleDidSelectGoToHome:(EXHomeModule *)module;
34 - (void)homeModuleDidSelectQRReader:(EXHomeModule *)module;
35 
36 @end
37 
38 @interface EXHomeModule : EXScopedEventEmitter
39 
40 - (void)dispatchJSEvent: (NSString *)eventName
41                    body: (NSDictionary *)eventBody
42               onSuccess: (void (^)(NSDictionary *))success
43               onFailure: (void (^)(NSString *))failure;
44 
45 @end
46