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