// Copyright © 2018 650 Industries. All rights reserved. #import "EXScopedModuleRegistry.h" #import "EXScopedModuleRegistryAdapter.h" #import "EXFileSystemBinding.h" #import "EXSensorsManagerBinding.h" #import "EXConstantsBinding.h" #import "EXUnversioned.h" #import "EXScopedFilePermissionModule.h" #import "EXScopedReactNativeAdapter.h" #import "EXModuleRegistryBinding.h" #import "EXExpoUserNotificationCenterProxy.h" @implementation EXScopedModuleRegistryAdapter - (NSArray> *)extraModulesForParams:(NSDictionary *)params andExperience:(NSString *)experienceId withScopedModulesArray:(NSArray> *)scopedModulesArray withKernelServices:(NSDictionary *)kernelServices { EXModuleRegistry *moduleRegistry = [self.moduleRegistryProvider moduleRegistryForExperienceId:experienceId]; EXFileSystemBinding *fileSystemBinding = [[EXFileSystemBinding alloc] init]; [moduleRegistry registerInternalModule:fileSystemBinding]; EXSensorsManagerBinding *sensorsManagerBinding = [[EXSensorsManagerBinding alloc] initWithExperienceId:experienceId andKernelService:kernelServices[EX_UNVERSIONED(@"EXSensorManager")]]; [moduleRegistry registerInternalModule:sensorsManagerBinding]; EXConstantsBinding *constantsBinding = [[EXConstantsBinding alloc] initWithExperienceId:experienceId andParams:params]; [moduleRegistry registerInternalModule:constantsBinding]; EXScopedReactNativeAdapter *reactNativeAdapter = [[EXScopedReactNativeAdapter alloc] init]; [moduleRegistry registerInternalModule:reactNativeAdapter]; EXExpoUserNotificationCenterProxy *userNotificationCenter = [[EXExpoUserNotificationCenterProxy alloc] init]; [moduleRegistry registerInternalModule:userNotificationCenter]; EXScopedFilePermissionModule *filePermissionModule = [[EXScopedFilePermissionModule alloc] init]; [moduleRegistry registerInternalModule:filePermissionModule]; NSArray> *bridgeModules = [self extraModulesForModuleRegistry:moduleRegistry]; return [bridgeModules arrayByAddingObject:[[EXModuleRegistryBinding alloc] initWithModuleRegistry:moduleRegistry]]; } - (NSDictionary *)dictionaryFromScopedModulesArray:(NSArray> *)scopedModulesArray { NSMutableDictionary *scopedModulesDictionary = [NSMutableDictionary dictionaryWithCapacity:[scopedModulesArray count]]; for (id module in scopedModulesArray) { scopedModulesDictionary[(id)[module class]] = module; } return scopedModulesDictionary; } @end