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