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 "EXScopedSecureStore.h" 12#import "EXScopedAmplitude.h" 13#import "EXScopedPermissions.h" 14#import "EXScopedSegment.h" 15#import <EXTaskManager/EXTaskManager.h> 16 17#import "EXScopedReactNativeAdapter.h" 18#import "EXModuleRegistryBinding.h" 19#import "EXExpoUserNotificationCenterProxy.h" 20 21@implementation EXScopedModuleRegistryAdapter 22 23- (UMModuleRegistry *)moduleRegistryForParams:(NSDictionary *)params forExperienceId:(NSString *)experienceId withKernelServices:(NSDictionary *)kernelServices 24{ 25 UMModuleRegistry *moduleRegistry = [self.moduleRegistryProvider moduleRegistry]; 26 27 EXConstantsBinding *constantsBinding = [[EXConstantsBinding alloc] initWithExperienceId:experienceId andParams:params]; 28 [moduleRegistry registerInternalModule:constantsBinding]; 29 30 EXScopedFileSystemModule *fileSystemModule = [[EXScopedFileSystemModule alloc] initWithExperienceId:experienceId andConstantsBinding:constantsBinding]; 31 [moduleRegistry registerExportedModule:fileSystemModule]; 32 [moduleRegistry registerInternalModule:fileSystemModule]; 33 34 EXSensorsManagerBinding *sensorsManagerBinding = [[EXSensorsManagerBinding alloc] initWithExperienceId:experienceId andKernelService:kernelServices[EX_UNVERSIONED(@"EXSensorManager")]]; 35 [moduleRegistry registerInternalModule:sensorsManagerBinding]; 36 37 EXScopedReactNativeAdapter *reactNativeAdapter = [[EXScopedReactNativeAdapter alloc] init]; 38 [moduleRegistry registerInternalModule:reactNativeAdapter]; 39 40 EXExpoUserNotificationCenterProxy *userNotificationCenter = [[EXExpoUserNotificationCenterProxy alloc] initWithUserNotificationCenter:kernelServices[EX_UNVERSIONED(@"EXUserNotificationCenter")]]; 41 [moduleRegistry registerInternalModule:userNotificationCenter]; 42 43 EXScopedFilePermissionModule *filePermissionModule = [[EXScopedFilePermissionModule alloc] init]; 44 [moduleRegistry registerInternalModule:filePermissionModule]; 45 46 EXScopedSecureStore *secureStoreModule = [[EXScopedSecureStore alloc] initWithExperienceId:experienceId]; 47 [moduleRegistry registerExportedModule:secureStoreModule]; 48 49 EXScopedAmplitude *amplitudeModule = [[EXScopedAmplitude alloc] initWithExperienceId:experienceId]; 50 [moduleRegistry registerExportedModule:amplitudeModule]; 51 52 EXScopedPermissions *permissionsModule = [[EXScopedPermissions alloc] initWithExperienceId:experienceId]; 53 [moduleRegistry registerExportedModule:permissionsModule]; 54 [moduleRegistry registerInternalModule:permissionsModule]; 55 56 EXScopedSegment *segmentModule = [[EXScopedSegment alloc] init]; 57 [moduleRegistry registerExportedModule:segmentModule]; 58 59 // TODO: Make scoped task manager when adding support for bare React Native 60 EXTaskManager *taskManagerModule = [[EXTaskManager alloc] initWithExperienceId:experienceId]; 61 [moduleRegistry registerInternalModule:taskManagerModule]; 62 [moduleRegistry registerExportedModule:taskManagerModule]; 63 64 return moduleRegistry; 65} 66 67- (NSArray<id<RCTBridgeModule>> *)extraModulesForModuleRegistry:(UMModuleRegistry *)moduleRegistry 68{ 69 return [[super extraModulesForModuleRegistry:moduleRegistry] arrayByAddingObject:[[EXModuleRegistryBinding alloc] initWithModuleRegistry:moduleRegistry]]; 70} 71 72@end 73