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