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