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