Skip to content

Commit

Permalink
feat: update eventemitter for react native 0.65 (#414)
Browse files Browse the repository at this point in the history
* feat: update eventemitter for react native 0.65

* refactor: make removeListener not private

* refactor: remove unwanted lines
  • Loading branch information
radko93 authored Nov 30, 2021
1 parent 86cf714 commit 1130839
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 16 deletions.
26 changes: 18 additions & 8 deletions src/common/RtcChannel.native.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { NativeEventEmitter, NativeModules } from 'react-native';
import {
EmitterSubscription,
NativeEventEmitter,
NativeModules,
} from 'react-native';

import type {
ChannelMediaOptions,
Expand Down Expand Up @@ -150,11 +154,11 @@ export default class RtcChannel implements RtcChannelInterface {
map = new Map<Listener, Listener>();
this._listeners.set(event, map);
}
RtcChannelEvent.addListener(Prefix + event, callback);
const subscription = RtcChannelEvent.addListener(Prefix + event, callback);
map.set(listener, callback);
return {
remove: () => {
this.removeListener(event, listener);
this.removeListener(event, listener, subscription);
},
};
}
Expand All @@ -168,14 +172,20 @@ export default class RtcChannel implements RtcChannelInterface {
*/
removeListener<EventType extends keyof RtcChannelEvents>(
event: EventType,
listener: RtcChannelEvents[EventType]
listener: RtcChannelEvents[EventType],
subscription?: EmitterSubscription
) {
const map = this._listeners.get(event);
if (map === undefined) return;
RtcChannelEvent.removeListener(
Prefix + event,
map.get(listener) as Listener
);

if (subscription && 'remove' in subscription) {
subscription.remove();
} else {
RtcChannelEvent.removeListener(
Prefix + event,
map.get(listener) as Listener
);
}
map.delete(listener);
}

Expand Down
26 changes: 18 additions & 8 deletions src/common/RtcEngine.native.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { NativeEventEmitter, NativeModules } from 'react-native';
import {
EmitterSubscription,
NativeEventEmitter,
NativeModules,
} from 'react-native';

import {
AudioRecordingConfiguration,
Expand Down Expand Up @@ -296,11 +300,11 @@ export default class RtcEngine implements RtcEngineInterface {
map = new Map<Listener, Listener>();
this._listeners.set(event, map);
}
RtcEngineEvent.addListener(Prefix + event, callback);
const subscription = RtcEngineEvent.addListener(Prefix + event, callback);
map.set(listener, callback);
return {
remove: () => {
this.removeListener(event, listener);
this.removeListener(event, listener, subscription);
},
};
}
Expand All @@ -314,14 +318,20 @@ export default class RtcEngine implements RtcEngineInterface {
*/
removeListener<EventType extends keyof RtcEngineEvents>(
event: EventType,
listener: RtcEngineEvents[EventType]
listener: RtcEngineEvents[EventType],
subscription?: EmitterSubscription
) {
const map = this._listeners.get(event);
if (map === undefined) return;
RtcEngineEvent.removeListener(
Prefix + event,
map.get(listener) as Listener
);

if (subscription && 'remove' in subscription) {
subscription.remove();
} else {
RtcEngineEvent.removeListener(
Prefix + event,
map.get(listener) as Listener
);
}
map.delete(listener);
}

Expand Down

0 comments on commit 1130839

Please sign in to comment.