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