Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ repositories {
}

dependencies {
compile "com.facebook.react:react-native:${safeExtGet('reactNative', '+')}"
compile('com.launchdarkly:launchdarkly-android-client:2.5.1') {
implementation "com.facebook.react:react-native:${safeExtGet('reactNative', '+')}"
implementation('com.launchdarkly:launchdarkly-android-client:2.5.1') {
exclude group: 'com.squareup.okhttp', module: 'okhttp'
}

Expand Down
2 changes: 1 addition & 1 deletion android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.reactlibrary">
package="com.launchdarkly">

</manifest>

Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@

package com.reactlibrary;
package com.launchdarkly;

import android.app.Activity;
import android.app.Application;
import android.util.Log;

import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableMapKeySetIterator;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.ReadableType;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.google.common.collect.Sets;
import com.launchdarkly.android.FeatureFlagChangeListener;
Expand Down Expand Up @@ -39,7 +42,7 @@ public String getName() {
}

@ReactMethod
public void configure(String apiKey, ReadableMap options) {
public void configure(String apiKey, ReadableMap options, Promise promise) {
LDConfig ldConfig = new LDConfig.Builder()
.setMobileKey(apiKey)
.build();
Expand Down Expand Up @@ -68,26 +71,36 @@ public void configure(String apiKey, ReadableMap options) {
while (iterator.hasNextKey()) {
String key = iterator.nextKey();
if (!nonCustomFields.contains(key)) {
userBuilder = userBuilder.custom(key, options.getString(key));
if (options.getType(key) == ReadableType.Number) {
userBuilder = userBuilder.custom(key, options.getDouble(key));
} else if (options.getType(key) == ReadableType.String) {
userBuilder = userBuilder.custom(key, options.getString(key));
}
Log.d("RNLaunchDarklyModule", "Launch Darkly custom field: " + key);
}
}

if (user != null && ldClient != null) {
user = userBuilder.build();
ldClient.identify(user);

WritableMap map = Arguments.createMap();
map.putString("email", options.getString("email"));
promise.resolve(map);
return;
}

user = userBuilder.build();

Application application = reactContext.getCurrentActivity().getApplication();
Activity reactActivity = reactContext.getCurrentActivity();

if (application != null) {
ldClient = LDClient.init(application, ldConfig, user, 0);
if (reactActivity != null && reactActivity.getApplication() != null) {
ldClient = LDClient.init(reactActivity.getApplication(), ldConfig, user, 0);
WritableMap map = Arguments.createMap();
map.putString("email", options.getString("email"));
promise.resolve(map);
} else {
Log.d("RNLaunchDarklyModule", "Couldn't init RNLaunchDarklyModule cause application was null");
promise.reject(new Throwable("Couldn't init RNLaunchDarklyModule cause application was null"));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

package com.reactlibrary;
package com.launchdarkly;

import java.util.Arrays;
import java.util.Collections;
Expand Down
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class LaunchDarkly {
}

configure (apiKey, options) {
RNLaunchDarkly.configure(apiKey, options);
return RNLaunchDarkly.configure(apiKey, options);
}

boolVariation (featureName, callback) {
Expand Down
4 changes: 3 additions & 1 deletion ios/RNLaunchDarkly.m
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ @implementation RNLaunchDarkly
return @[@"FeatureFlagChanged"];
}

RCT_EXPORT_METHOD(configure:(NSString*)apiKey options:(NSDictionary*)options) {
RCT_EXPORT_METHOD(configure:(NSString*)apiKey options:(NSDictionary*)options resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
NSLog(@"configure with %@", options);

NSString* key = options[@"key"];
Expand Down Expand Up @@ -53,6 +53,7 @@ @implementation RNLaunchDarkly
if ( self.user ) {
bool updatedSuccesfully = [[LDClient sharedInstance] updateUser:user];
NSLog(@"LaunchDarkly User was updated. Key=%@ IsSuccess=%@", key, updatedSuccesfully ? @"YES" : @"NO");
resolve(@{ @"email": email});
return;
}

Expand All @@ -65,6 +66,7 @@ @implementation RNLaunchDarkly
object:nil];

[[LDClient sharedInstance] start:config userBuilder:user];
resolve(@{ @"email": email});
}

RCT_EXPORT_METHOD(boolVariation:(NSString*)flagName callback:(RCTResponseSenderBlock)callback) {
Expand Down