1// Copyright © 2018 650 Industries. All rights reserved. 2 3#import "EXScopedModuleRegistry.h" 4 5#import "EXScopedModuleRegistryAdapter.h" 6#import "EXSensorsManagerBinding.h" 7#import "EXConstantsBinding.h" 8#import "EXScopedFileSystemModule.h" 9#import "EXUnversioned.h" 10#import "EXScopedFilePermissionModule.h" 11#import "EXScopedFontLoader.h" 12#import "EXScopedSecureStore.h" 13#import "EXScopedAmplitude.h" 14#import "EXScopedPermissions.h" 15#import "EXScopedSegment.h" 16#import "EXScopedLocalAuthentication.h" 17#import "EXScopedBranch.h" 18 19#import "EXScopedReactNativeAdapter.h" 20#import "EXModuleRegistryBinding.h" 21#import "EXExpoUserNotificationCenterProxy.h" 22 23#if __has_include(<EXTaskManager/EXTaskManager.h>) 24#import <EXTaskManager/EXTaskManager.h> 25#endif 26 27@implementation EXScopedModuleRegistryAdapter 28 29- (UMModuleRegistry *)moduleRegistryForParams:(NSDictionary *)params forExperienceId:(NSString *)experienceId withKernelServices:(NSDictionary *)kernelServices 30{ 31 UMModuleRegistry *moduleRegistry = [self.moduleRegistryProvider moduleRegistry]; 32 33#if __has_include(<EXConstants/EXConstantsService.h>) 34 EXConstantsBinding *constantsBinding = [[EXConstantsBinding alloc] initWithExperienceId:experienceId andParams:params]; 35 [moduleRegistry registerInternalModule:constantsBinding]; 36#endif 37 38#if __has_include(<EXFileSystem/EXFileSystem.h>) 39 EXScopedFileSystemModule *fileSystemModule = [[EXScopedFileSystemModule alloc] initWithExperienceId:experienceId andConstantsBinding:constantsBinding]; 40 [moduleRegistry registerExportedModule:fileSystemModule]; 41 [moduleRegistry registerInternalModule:fileSystemModule]; 42#endif 43 44#if __has_include(<EXFont/EXFontLoader.h>) 45 EXScopedFontLoader *fontModule = [[EXScopedFontLoader alloc] init]; 46 [moduleRegistry registerExportedModule:fontModule]; 47#endif 48 49#if __has_include(<EXSensors/EXSensorsManager.h>) 50 EXSensorsManagerBinding *sensorsManagerBinding = [[EXSensorsManagerBinding alloc] initWithExperienceId:experienceId andKernelService:kernelServices[EX_UNVERSIONED(@"EXSensorManager")]]; 51 [moduleRegistry registerInternalModule:sensorsManagerBinding]; 52#endif 53 54 EXScopedReactNativeAdapter *reactNativeAdapter = [[EXScopedReactNativeAdapter alloc] init]; 55 [moduleRegistry registerInternalModule:reactNativeAdapter]; 56 57 EXExpoUserNotificationCenterProxy *userNotificationCenter = [[EXExpoUserNotificationCenterProxy alloc] initWithUserNotificationCenter:kernelServices[EX_UNVERSIONED(@"EXUserNotificationCenter")]]; 58 [moduleRegistry registerInternalModule:userNotificationCenter]; 59 60#if __has_include(<EXFileSystem/EXFilePermissionModule.h>) 61 EXScopedFilePermissionModule *filePermissionModule = [[EXScopedFilePermissionModule alloc] init]; 62 [moduleRegistry registerInternalModule:filePermissionModule]; 63#endif 64 65#if __has_include(<EXSecureStore/EXSecureStore.h>) 66 EXScopedSecureStore *secureStoreModule = [[EXScopedSecureStore alloc] initWithExperienceId:experienceId]; 67 [moduleRegistry registerExportedModule:secureStoreModule]; 68#endif 69 70#if __has_include(<EXAmplitude/EXAmplitude.h>) 71 EXScopedAmplitude *amplitudeModule = [[EXScopedAmplitude alloc] initWithExperienceId:experienceId]; 72 [moduleRegistry registerExportedModule:amplitudeModule]; 73#endif 74 75#if __has_include(<EXPermissions/EXPermissions.h>) 76 EXScopedPermissions *permissionsModule = [[EXScopedPermissions alloc] initWithExperienceId:experienceId andConstantsBinding:constantsBinding]; 77 [moduleRegistry registerExportedModule:permissionsModule]; 78 [moduleRegistry registerInternalModule:permissionsModule]; 79#endif 80 81#if __has_include(<EXSegment/EXSegment.h>) 82 EXScopedSegment *segmentModule = [[EXScopedSegment alloc] init]; 83 [moduleRegistry registerExportedModule:segmentModule]; 84#endif 85 86#if __has_include(<EXBranch/RNBranch.h>) 87 EXScopedBranch *branchModule = [[EXScopedBranch alloc] initWithExperienceId:experienceId]; 88 [moduleRegistry registerInternalModule:branchModule]; 89#endif 90 91#if __has_include(<EXLocalAuthentication/EXLocalAuthentication.h>) 92 EXScopedLocalAuthentication *localAuthenticationModule = [[EXScopedLocalAuthentication alloc] init]; 93 [moduleRegistry registerExportedModule:localAuthenticationModule]; 94#endif 95 96#if __has_include(<EXTaskManager/EXTaskManager.h>) 97 // TODO: Make scoped task manager when adding support for bare React Native 98 EXTaskManager *taskManagerModule = [[EXTaskManager alloc] initWithExperienceId:experienceId]; 99 [moduleRegistry registerInternalModule:taskManagerModule]; 100 [moduleRegistry registerExportedModule:taskManagerModule]; 101#endif 102 103 return moduleRegistry; 104} 105 106- (NSArray<id<RCTBridgeModule>> *)extraModulesForModuleRegistry:(UMModuleRegistry *)moduleRegistry 107{ 108 return [[super extraModulesForModuleRegistry:moduleRegistry] arrayByAddingObject:[[EXModuleRegistryBinding alloc] initWithModuleRegistry:moduleRegistry]]; 109} 110 111@end 112