1// Copyright 2018-present 650 Industries. All rights reserved.
2
3#import <ExpoModulesCore/EXRCTBridgeDelegateInterceptor.h>
4
5@implementation EXRCTBridgeDelegateInterceptor
6
7- (instancetype)initWithBridgeDelegate:(id<RCTBridgeDelegate>)bridgeDelegate interceptor:(id<RCTBridgeDelegate>)interceptor
8{
9  if (self = [super init]) {
10    self.bridgeDelegate = bridgeDelegate;
11    self.interceptor = interceptor;
12  }
13  return self;
14}
15
16- (BOOL)conformsToProtocol:(Protocol *)protocol
17{
18  return [self.bridgeDelegate conformsToProtocol:protocol];
19}
20
21- (id)forwardingTargetForSelector:(SEL)selector
22{
23  if ([self isInterceptedSelector:selector]) {
24    return self;
25  }
26  return self.bridgeDelegate;
27}
28
29- (BOOL)respondsToSelector:(SEL)selector
30{
31  if ([self isInterceptedSelector:selector]) {
32    return YES;
33  }
34  return [self.bridgeDelegate respondsToSelector:selector];
35}
36
37- (BOOL)isInterceptedSelector:(SEL)selector
38{
39  if ([self.interceptor respondsToSelector:selector]) {
40    return YES;
41  }
42  return NO;
43}
44
45- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
46  return [self.interceptor sourceURLForBridge:bridge];
47}
48
49@end
50