// // RNBranchEventEmitter.m // Pods // // Created by Jimmy Dee on 4/6/17. // // #import #import "RNBranch.h" #import "RNBranchEventEmitter.h" // Notification/Event Names NSString * const kRNBranchInitSessionSuccess = @"RNBranch.initSessionSuccess"; NSString * const kRNBranchInitSessionError = @"RNBranch.initSessionError"; @interface RNBranchEventEmitter() @property (nonatomic) BOOL hasListeners; @end @implementation RNBranchEventEmitter RCT_EXPORT_MODULE(); - (instancetype)init { self = [super init]; if (self) { _hasListeners = NO; } return self; } + (BOOL)requiresMainQueueSetup { return YES; } - (NSArray *)supportedEvents { return @[kRNBranchInitSessionSuccess, kRNBranchInitSessionError ]; } - (void)startObserving { self.hasListeners = YES; for (NSString *event in [self supportedEvents]) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:event object:nil]; } } - (void)stopObserving { [[NSNotificationCenter defaultCenter] removeObserver:self]; self.hasListeners = NO; } # pragma mark - Public + (void)initSessionDidSucceedWithPayload:(NSDictionary *)payload { [self postNotificationName:kRNBranchInitSessionSuccess withPayload:payload]; } + (void)initSessionDidEncounterErrorWithPayload:(NSDictionary *)payload { [self postNotificationName:kRNBranchInitSessionError withPayload:payload]; } # pragma mark - Private + (void)postNotificationName:(NSString *)name withPayload:(NSDictionary *)payload { [[NSNotificationCenter defaultCenter] postNotificationName:name object:self userInfo:payload]; } - (void)handleNotification:(NSNotification *)notification { if (!self.hasListeners) return; [self sendEventWithName:notification.name body:notification.userInfo]; } @end