Skip to content

Commit db3df34

Browse files
javachefacebook-github-bot
authored andcommitted
Breaking - make RCTDeviceEventEmitter warnings fatal
Reviewed By: davidaurelio Differential Revision: D5469832 fbshipit-source-id: 1eb4ad3a2b3e1fa10d75e42d1d2f7baa291cb6f4
1 parent 3eae3df commit db3df34

File tree

1 file changed

+22
-23
lines changed

1 file changed

+22
-23
lines changed

Libraries/EventEmitter/RCTDeviceEventEmitter.js

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@ const EventSubscriptionVendor = require('EventSubscriptionVendor');
1616

1717
import type EmitterSubscription from 'EmitterSubscription';
1818

19+
function checkNativeEventModule(eventType: ?string) {
20+
if (eventType) {
21+
if (eventType.lastIndexOf('statusBar', 0) === 0) {
22+
throw new Error('`' + eventType + '` event should be registered via the StatusBarIOS module');
23+
}
24+
if (eventType.lastIndexOf('keyboard', 0) === 0) {
25+
throw new Error('`' + eventType + '` event should be registered via the Keyboard module');
26+
}
27+
if (eventType === 'appStateDidChange' || eventType === 'memoryWarning') {
28+
throw new Error('`' + eventType + '` event should be registered via the AppState module');
29+
}
30+
}
31+
}
32+
1933
/**
2034
* Deprecated - subclass NativeEventEmitter to create granular event modules instead of
2135
* adding all event listeners directly to RCTDeviceEventEmitter.
@@ -30,34 +44,19 @@ class RCTDeviceEventEmitter extends EventEmitter {
3044
this.sharedSubscriber = sharedSubscriber;
3145
}
3246

33-
_nativeEventModule(eventType: ?string) {
34-
if (eventType) {
35-
if (eventType.lastIndexOf('statusBar', 0) === 0) {
36-
console.warn('`%s` event should be registered via the StatusBarIOS module', eventType);
37-
return require('StatusBarIOS');
38-
}
39-
if (eventType.lastIndexOf('keyboard', 0) === 0) {
40-
console.warn('`%s` event should be registered via the Keyboard module', eventType);
41-
return require('Keyboard');
42-
}
43-
if (eventType === 'appStateDidChange' || eventType === 'memoryWarning') {
44-
console.warn('`%s` event should be registered via the AppState module', eventType);
45-
return require('AppState');
46-
}
47-
}
48-
return null;
49-
}
5047

5148
addListener(eventType: string, listener: Function, context: ?Object): EmitterSubscription {
52-
const eventModule = this._nativeEventModule(eventType);
53-
return eventModule ? eventModule.addListener(eventType, listener, context)
54-
: super.addListener(eventType, listener, context);
49+
if (__DEV__) {
50+
checkNativeEventModule(eventType);
51+
}
52+
return super.addListener(eventType, listener, context);
5553
}
5654

5755
removeAllListeners(eventType: ?string) {
58-
const eventModule = this._nativeEventModule(eventType);
59-
(eventModule && eventType) ? eventModule.removeAllListeners(eventType)
60-
: super.removeAllListeners(eventType);
56+
if (__DEV__) {
57+
checkNativeEventModule(eventType);
58+
}
59+
super.removeAllListeners(eventType);
6160
}
6261

6362
removeSubscription(subscription: EmitterSubscription) {

0 commit comments

Comments
 (0)