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