Skip to content

Commit eb33a26

Browse files
committed
1.0.5
1 parent 2f7b449 commit eb33a26

File tree

7 files changed

+988
-39
lines changed

7 files changed

+988
-39
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,9 @@ Radar.on('error', (err) => {
151151
});
152152
```
153153

154-
You should remove event listeners when you are done with them (e.g., in `componentWillUnmount`):
154+
Add event listeners outside of your component lifecycle (e.g., not in `componentDidMount`) if you want them to work even when the app is in the background.
155+
156+
You can remove event listeners later:
155157

156158
```js
157159
Radar.off('events');

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ repositories {
3131

3232
dependencies {
3333
compile 'com.facebook.react:react-native:+'
34-
compile 'com.onradar:sdk:1.1.+'
34+
compile 'com.onradar:sdk:1.2.+'
3535
}

android/src/main/java/com/onradar/react/RNRadarEventEmitter.java

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

android/src/main/java/com/onradar/react/RNRadarModule.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.onradar.react;
22

33
import android.app.Activity;
4+
import android.content.Context;
5+
import android.content.IntentFilter;
46
import android.location.Location;
57
import android.support.annotation.NonNull;
68

@@ -11,9 +13,11 @@
1113
import com.facebook.react.bridge.ReactMethod;
1214
import com.facebook.react.bridge.ReadableMap;
1315
import com.facebook.react.bridge.WritableMap;
16+
import com.facebook.react.bridge.ReactContext;
1417

1518
import com.onradar.sdk.Radar;
1619
import com.onradar.sdk.RadarCallback;
20+
import com.onradar.sdk.RadarReceiver;
1721
import com.onradar.sdk.model.RadarEvent;
1822
import com.onradar.sdk.model.RadarUser;
1923

android/src/main/java/com/onradar/react/RNRadarPackage.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public class RNRadarPackage implements ReactPackage {
1414

1515
@Override
1616
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
17-
RNRadarEventEmitter.initialize(reactContext);
1817
return Arrays.<NativeModule>asList(new RNRadarModule(reactContext));
1918
}
2019

android/src/main/java/com/onradar/react/RNRadarReceiver.java

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,64 @@
33
import android.content.Context;
44
import android.support.annotation.NonNull;
55

6+
import com.facebook.react.ReactApplication;
7+
import com.facebook.react.ReactInstanceManager;
8+
import com.facebook.react.ReactNativeHost;
69
import com.facebook.react.bridge.Arguments;
10+
import com.facebook.react.bridge.ReactContext;
711
import com.facebook.react.bridge.WritableMap;
12+
import com.facebook.react.modules.core.DeviceEventManagerModule;
13+
814
import com.onradar.sdk.Radar;
915
import com.onradar.sdk.RadarReceiver;
1016
import com.onradar.sdk.model.RadarEvent;
1117
import com.onradar.sdk.model.RadarUser;
1218

1319
public class RNRadarReceiver extends RadarReceiver {
1420

21+
private ReactNativeHost mReactNativeHost;
22+
23+
private void invokeSendEvent(ReactContext reactContext, String eventName, Object data) {
24+
reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, data);
25+
}
26+
27+
private void sendEvent(final String eventName, final Object data) {
28+
final ReactInstanceManager reactInstanceManager = mReactNativeHost.getReactInstanceManager();
29+
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
30+
if (reactContext == null) {
31+
reactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
32+
@Override
33+
public void onReactContextInitialized(ReactContext reactContext) {
34+
invokeSendEvent(reactContext, eventName, data);
35+
reactInstanceManager.removeReactInstanceEventListener(this);
36+
}
37+
});
38+
if (!reactInstanceManager.hasStartedCreatingInitialContext()) {
39+
reactInstanceManager.createReactContextInBackground();
40+
}
41+
} else {
42+
invokeSendEvent(reactContext, eventName, data);
43+
}
44+
}
45+
1546
@Override
1647
public void onEventsReceived(@NonNull Context context, @NonNull RadarEvent[] events, @NonNull RadarUser user) {
48+
ReactApplication reactApplication = ((ReactApplication)context.getApplicationContext());
49+
mReactNativeHost = reactApplication.getReactNativeHost();
50+
1751
WritableMap map = Arguments.createMap();
1852
map.putArray("events", RNRadarUtils.arrayForEvents(events));
1953
map.putMap("user", RNRadarUtils.mapForUser(user));
20-
RNRadarEventEmitter.getSharedInstance().sendEvent("events", map);
54+
55+
sendEvent("events", map);
2156
}
2257

2358
@Override
2459
public void onError(@NonNull Context context, @NonNull Radar.RadarStatus status) {
25-
RNRadarEventEmitter.getSharedInstance().sendEvent("error", RNRadarUtils.stringForStatus(status));
60+
ReactApplication reactApplication = ((ReactApplication)context.getApplicationContext());
61+
mReactNativeHost = reactApplication.getReactNativeHost();
62+
63+
sendEvent("error", RNRadarUtils.stringForStatus(status));
2664
}
2765

2866
}

0 commit comments

Comments
 (0)