use namespaced events (#72)

the assumption that events are scoped when using RCTEventEmitter was incorrect, so events are now namespaced again.
This commit is contained in:
Koen Punt
2017-10-01 16:11:44 +02:00
committed by GitHub
parent 389d6bbe28
commit 45dedce87a
2 changed files with 18 additions and 5 deletions

View File

@@ -48,10 +48,23 @@ export default {
}, },
addEventListener(event, listener) { addEventListener(event, listener) {
return eventEmitter.addListener(event, listener); if (event === 'onShow') {
return eventEmitter.addListener('SafariViewOnShow', listener);
} else if (event === 'onDismiss') {
return eventEmitter.addListener('SafariViewOnDismiss', listener);
} else {
console.warn(`Trying to subscribe to unknown event: ${event}`);
return {
remove: () => {}
};
}
}, },
removeEventListener(event, listener) { removeEventListener(event, listener) {
eventEmitter.removeListener(event, listener); if (event === 'onShow') {
eventEmitter.removeListener('SafariViewOnShow', listener);
} else if (event === 'onDismiss') {
eventEmitter.removeListener('SafariViewOnDismiss', listener);
}
} }
}; };

View File

@@ -28,7 +28,7 @@ RCT_EXPORT_MODULE()
- (NSArray<NSString *> *)supportedEvents - (NSArray<NSString *> *)supportedEvents
{ {
return @[@"onShow", @"onDismiss"]; return @[@"SafariViewOnShow", @"SafariViewOnDismiss"];
} }
RCT_EXPORT_METHOD(show:(NSDictionary *)args callback:(RCTResponseSenderBlock)callback) RCT_EXPORT_METHOD(show:(NSDictionary *)args callback:(RCTResponseSenderBlock)callback)
@@ -75,7 +75,7 @@ RCT_EXPORT_METHOD(show:(NSDictionary *)args callback:(RCTResponseSenderBlock)cal
[ctrl presentViewController:self.safariView animated:YES completion:nil]; [ctrl presentViewController:self.safariView animated:YES completion:nil];
if (hasListeners) { if (hasListeners) {
[self sendEventWithName:@"onShow" body:nil]; [self sendEventWithName:@"SafariViewOnShow" body:nil];
} }
} }
@@ -100,7 +100,7 @@ RCT_EXPORT_METHOD(dismiss)
NSLog(@"[SafariView] SafariView dismissed."); NSLog(@"[SafariView] SafariView dismissed.");
if (hasListeners) { if (hasListeners) {
[self sendEventWithName:@"onDismiss" body:nil]; [self sendEventWithName:@"SafariViewOnDismiss" body:nil];
} }
} }