1// Copyright 2018-present 650 Industries. All rights reserved. 2 3#import <ExpoModulesCore/EXLegacyAppDelegateWrapper.h> 4 5#import <ExpoModulesCore/EXAppDelegatesLoader.h> 6#import <ExpoModulesCore/Swift.h> 7 8// Make the legacy wrapper conform to the protocol for subscribers. 9@interface EXLegacyAppDelegateWrapper () <EXAppDelegateSubscriberProtocol> 10@end 11 12@implementation EXAppDelegatesLoader 13 14// App delegate providers must be registered before any `AppDelegate` life-cycle event is called. 15// Unfortunately it's not possible in Swift to run code right after the binary is loaded 16// and before any code is executed, so we switch back to Objective-C just to do this one thing. 17+ (void)load 18{ 19 ModulesProvider *modulesProvider = [EXAppContext modulesProviderWithName:@"ExpoModulesProvider"]; 20 [EXExpoAppDelegate registerSubscriber:[[EXLegacyAppDelegateWrapper alloc] init]]; 21 [EXExpoAppDelegate registerSubscribersFromModulesProvider:modulesProvider]; 22 [EXExpoAppDelegate registerReactDelegateHandlersFromModulesProvider:modulesProvider]; 23} 24 25@end 26