Skip to content

Commit 0fcb689

Browse files
committed
Migrate Replies to NativeEventEmitter
1 parent fef7209 commit 0fcb689

File tree

6 files changed

+38
-54
lines changed

6 files changed

+38
-54
lines changed

android/src/main/java/com/instabug/reactlibrary/RNInstabugRepliesModule.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
package com.instabug.reactlibrary;
22

3-
import android.os.Handler;
4-
import android.os.Looper;
5-
63
import com.facebook.react.bridge.Callback;
74
import com.facebook.react.bridge.ReactApplicationContext;
8-
import com.facebook.react.bridge.ReactContextBaseJavaModule;
95
import com.facebook.react.bridge.ReactMethod;
106
import com.facebook.react.bridge.ReadableMap;
117
import com.facebook.react.bridge.ReadableType;
128
import com.facebook.react.bridge.ReadableMapKeySetIterator;
139
import com.instabug.chat.Replies;
1410
import com.instabug.library.Feature;
15-
import com.instabug.reactlibrary.utils.InstabugUtil;
11+
import com.instabug.reactlibrary.utils.EventEmitterModule;
1612
import com.instabug.reactlibrary.utils.MainThreadHandler;
1713

1814
import javax.annotation.Nonnull;
1915
import java.util.HashMap;
2016
import java.util.Map;
2117

22-
public class RNInstabugRepliesModule extends ReactContextBaseJavaModule {
18+
public class RNInstabugRepliesModule extends EventEmitterModule {
2319

2420
public RNInstabugRepliesModule(ReactApplicationContext reactApplicationContext) {
2521
super(reactApplicationContext);
@@ -31,6 +27,16 @@ public String getName() {
3127
return "IBGReplies";
3228
}
3329

30+
@ReactMethod
31+
public void addListener(String event) {
32+
super.addListener(event);
33+
}
34+
35+
@ReactMethod
36+
public void removeListeners(Integer count) {
37+
super.removeListeners(count);
38+
}
39+
3440
@ReactMethod
3541
public void setEnabled(final boolean isEnabled) {
3642
MainThreadHandler.runOnMainThread(new Runnable() {
@@ -278,7 +284,7 @@ public void run() {
278284
Runnable onNewReplyReceivedRunnable = new Runnable() {
279285
@Override
280286
public void run() {
281-
InstabugUtil.sendEvent(getReactApplicationContext(), Constants.IBG_ON_NEW_REPLY_RECEIVED_CALLBACK, null);
287+
sendEvent(Constants.IBG_ON_NEW_REPLY_RECEIVED_CALLBACK, null);
282288
}
283289
};
284290
Replies.setOnNewReplyReceivedCallback(onNewReplyReceivedRunnable);

src/modules/Replies.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
1-
import { Platform } from 'react-native';
1+
import { NativeEventEmitter, Platform } from 'react-native';
22

33
import { NativeReplies } from '../native/NativeReplies';
4-
import IBGEventEmitter from '../utils/IBGEventEmitter';
5-
import InstabugConstants from '../utils/InstabugConstants';
4+
5+
/**
6+
* @internal You shouldn't use this enum since you never emit or listen
7+
* for native events in your code.
8+
*/
9+
export enum $NativeEvents {
10+
ON_REPLY_RECEIVED_HANDLER = 'IBGOnNewReplyReceivedCallback',
11+
}
12+
13+
/**
14+
* @internal You shouldn't use this since you never emit or listen for native
15+
* events in your code.
16+
*/
17+
export const $emitter = new NativeEventEmitter(NativeReplies);
618

719
/**
820
* Enables and disables everything related to receiving replies.
@@ -32,7 +44,7 @@ export const show = () => {
3244
* @param handler A callback that gets executed when a new message is received.
3345
*/
3446
export const setOnNewReplyReceivedHandler = (handler: () => void) => {
35-
IBGEventEmitter.addListener(NativeReplies, InstabugConstants.ON_REPLY_RECEIVED_HANDLER, handler);
47+
$emitter.addListener($NativeEvents.ON_REPLY_RECEIVED_HANDLER, handler);
3648
NativeReplies.setOnNewReplyReceivedHandler(handler);
3749
};
3850

src/utils/IBGEventEmitter.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/utils/InstabugConstants.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
enum InstabugConstants {
2-
ON_REPLY_RECEIVED_HANDLER = 'IBGOnNewReplyReceivedCallback',
32
GRAPHQL_HEADER = 'ibg-graphql-header',
43
}
54

test/modules/Replies.spec.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,15 @@ import { Platform } from 'react-native';
22

33
import * as Replies from '../../src/modules/Replies';
44
import { NativeReplies } from '../../src/native/NativeReplies';
5-
import IBGEventEmitter from '../../src/utils/IBGEventEmitter';
6-
import IBGConstants from '../../src/utils/InstabugConstants';
75

86
describe('Replies Module', () => {
7+
beforeEach(() => {
8+
const events = Object.values(Replies.$NativeEvents);
9+
events.forEach((event) => {
10+
Replies.$emitter.removeAllListeners(event);
11+
});
12+
});
13+
914
it('should call the native method setRepliesEnabled', () => {
1015
Replies.setEnabled(true);
1116

@@ -39,9 +44,9 @@ describe('Replies Module', () => {
3944
it('should invoke callback on emitting the event IBGOnNewReplyReceivedCallback', () => {
4045
const callback = jest.fn();
4146
Replies.setOnNewReplyReceivedHandler(callback);
42-
IBGEventEmitter.emit(IBGConstants.ON_REPLY_RECEIVED_HANDLER);
47+
Replies.$emitter.emit(Replies.$NativeEvents.ON_REPLY_RECEIVED_HANDLER);
4348

44-
expect(IBGEventEmitter.getListeners(IBGConstants.ON_REPLY_RECEIVED_HANDLER).length).toEqual(1);
49+
expect(Replies.$emitter.listenerCount(Replies.$NativeEvents.ON_REPLY_RECEIVED_HANDLER)).toBe(1);
4550
expect(callback).toHaveBeenCalled();
4651
});
4752

test/setup.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,11 @@ import 'react-native/Libraries/Network/fetch';
77
import nock from 'nock';
88
import XHR from 'xhr2';
99

10-
import IBGEventEmitter from '../src/utils/IBGEventEmitter';
11-
1210
global.XMLHttpRequest = XHR;
1311

1412
nock.disableNetConnect();
1513

1614
beforeEach(() => {
17-
IBGEventEmitter.removeAllListeners();
18-
1915
jest.spyOn(Platform, 'constants', 'get').mockReturnValue({
2016
isTesting: true,
2117
reactNativeVersion: {

0 commit comments

Comments
 (0)