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#import "EXScopedFacebook.h" 20#import "EXScopedFirebaseCore.h" 21 22#import "EXScopedReactNativeAdapter.h" 23#import "EXExpoUserNotificationCenterProxy.h" 24 25#import "EXScopedNotificationsEmitter.h" 26#import "EXScopedNotificationsHandlerModule.h" 27#import "EXScopedNotificationBuilder.h" 28 29#if __has_include(<EXTaskManager/EXTaskManager.h>) 30#import <EXTaskManager/EXTaskManager.h> 31#endif 32 33@implementation EXScopedModuleRegistryAdapter 34 35- (UMModuleRegistry *)moduleRegistryForParams:(NSDictionary *)params forExperienceId:(NSString *)experienceId withKernelServices:(NSDictionary *)kernelServices 36{ 37 UMModuleRegistry *moduleRegistry = [self.moduleRegistryProvider moduleRegistry]; 38 39#if __has_include(<EXConstants/EXConstantsService.h>) 40 EXConstantsBinding *constantsBinding = [[EXConstantsBinding alloc] initWithExperienceId:experienceId andParams:params]; 41 [moduleRegistry registerInternalModule:constantsBinding]; 42#endif 43 44#if __has_include(<EXFacebook/EXFacebook.h>) 45 // only override in Expo client 46 if ([params[@"constants"][@"appOwnership"] isEqualToString:@"expo"]) { 47 EXScopedFacebook *scopedFacebook = [[EXScopedFacebook alloc] initWithExperienceId:experienceId andParams:params]; 48 [moduleRegistry registerExportedModule:scopedFacebook]; 49 } 50#endif 51 52#if __has_include(<EXFileSystem/EXFileSystem.h>) 53 EXScopedFileSystemModule *fileSystemModule = [[EXScopedFileSystemModule alloc] initWithExperienceId:experienceId andConstantsBinding:constantsBinding]; 54 [moduleRegistry registerExportedModule:fileSystemModule]; 55 [moduleRegistry registerInternalModule:fileSystemModule]; 56#endif 57 58#if __has_include(<EXFont/EXFontLoader.h>) 59 EXScopedFontLoader *fontModule = [[EXScopedFontLoader alloc] init]; 60 [moduleRegistry registerExportedModule:fontModule]; 61#endif 62 63#if __has_include(<EXSensors/EXSensorsManager.h>) 64 EXSensorsManagerBinding *sensorsManagerBinding = [[EXSensorsManagerBinding alloc] initWithExperienceId:experienceId andKernelService:kernelServices[EX_UNVERSIONED(@"EXSensorManager")]]; 65 [moduleRegistry registerInternalModule:sensorsManagerBinding]; 66#endif 67 68 EXScopedReactNativeAdapter *reactNativeAdapter = [[EXScopedReactNativeAdapter alloc] init]; 69 [moduleRegistry registerInternalModule:reactNativeAdapter]; 70 71 EXExpoUserNotificationCenterProxy *userNotificationCenter = [[EXExpoUserNotificationCenterProxy alloc] initWithUserNotificationCenter:kernelServices[EX_UNVERSIONED(@"EXUserNotificationCenter")]]; 72 [moduleRegistry registerInternalModule:userNotificationCenter]; 73 74#if __has_include(<EXFileSystem/EXFilePermissionModule.h>) 75 EXScopedFilePermissionModule *filePermissionModule = [[EXScopedFilePermissionModule alloc] init]; 76 [moduleRegistry registerInternalModule:filePermissionModule]; 77#endif 78 79#if __has_include(<EXSecureStore/EXSecureStore.h>) 80 EXScopedSecureStore *secureStoreModule = [[EXScopedSecureStore alloc] initWithExperienceId:experienceId]; 81 [moduleRegistry registerExportedModule:secureStoreModule]; 82#endif 83 84#if __has_include(<EXAmplitude/EXAmplitude.h>) 85 EXScopedAmplitude *amplitudeModule = [[EXScopedAmplitude alloc] initWithExperienceId:experienceId]; 86 [moduleRegistry registerExportedModule:amplitudeModule]; 87#endif 88 89#if __has_include(<EXPermissions/EXPermissions.h>) 90 EXScopedPermissions *permissionsModule = [[EXScopedPermissions alloc] initWithExperienceId:experienceId andConstantsBinding:constantsBinding]; 91 [moduleRegistry registerExportedModule:permissionsModule]; 92 [moduleRegistry registerInternalModule:permissionsModule]; 93#endif 94 95#if __has_include(<EXSegment/EXSegment.h>) 96 EXScopedSegment *segmentModule = [[EXScopedSegment alloc] init]; 97 [moduleRegistry registerExportedModule:segmentModule]; 98#endif 99 100#if __has_include(<EXBranch/RNBranch.h>) 101 EXScopedBranch *branchModule = [[EXScopedBranch alloc] initWithExperienceId:experienceId]; 102 [moduleRegistry registerInternalModule:branchModule]; 103#endif 104 105#if __has_include(<EXLocalAuthentication/EXLocalAuthentication.h>) 106 EXScopedLocalAuthentication *localAuthenticationModule = [[EXScopedLocalAuthentication alloc] init]; 107 [moduleRegistry registerExportedModule:localAuthenticationModule]; 108#endif 109 110#if __has_include(<EXTaskManager/EXTaskManager.h>) 111 // TODO: Make scoped task manager when adding support for bare React Native 112 EXTaskManager *taskManagerModule = [[EXTaskManager alloc] initWithExperienceId:experienceId]; 113 [moduleRegistry registerInternalModule:taskManagerModule]; 114 [moduleRegistry registerExportedModule:taskManagerModule]; 115#endif 116 117#if __has_include(<EXErrorRecovery/EXErrorRecoveryModule.h>) 118 EXScopedErrorRecoveryModule *errorRecovery = [[EXScopedErrorRecoveryModule alloc] initWithExperienceId:experienceId]; 119 [moduleRegistry registerExportedModule:errorRecovery]; 120#endif 121 122#if __has_include(<EXFirebaseCore/EXFirebaseCore.h>) 123 EXScopedFirebaseCore *firebaseCoreModule = [[EXScopedFirebaseCore alloc] initWithExperienceId:experienceId andConstantsBinding:constantsBinding]; 124 [moduleRegistry registerExportedModule:firebaseCoreModule]; 125 [moduleRegistry registerInternalModule:firebaseCoreModule]; 126#endif 127 128#if __has_include(<EXNotifications/EXNotificationsEmitter.h>) 129 EXScopedNotificationsEmitter *notificationsEmmitter = [[EXScopedNotificationsEmitter alloc] initWithExperienceId:experienceId]; 130 [moduleRegistry registerExportedModule:notificationsEmmitter]; 131#endif 132 133#if __has_include(<EXNotifications/EXNotificationsHandlerModule.h>) 134 EXScopedNotificationsHandlerModule *notificationsHandler = [[EXScopedNotificationsHandlerModule alloc] initWithExperienceId:experienceId]; 135 [moduleRegistry registerExportedModule:notificationsHandler]; 136#endif 137 138#if __has_include(<EXNotifications/EXNotificationsHandlerModule.h>) 139 EXScopedNotificationBuilder *notificationsBuilder = [[EXScopedNotificationBuilder alloc] initWithExperienceId:experienceId]; 140 [moduleRegistry registerInternalModule:notificationsBuilder]; 141#endif 142 return moduleRegistry; 143} 144 145@end 146