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