Merge with master

This commit is contained in:
Elliot Hesp
2018-01-06 14:47:11 +00:00
90 changed files with 2289 additions and 1574 deletions

View File

@@ -2,9 +2,13 @@ buildscript {
ext.firebaseVersion = '11.4.2'
repositories {
jcenter()
maven {
url 'https://maven.fabric.io/public'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'io.fabric.tools:gradle:1.24.4'
}
}
@@ -91,4 +95,7 @@ dependencies {
compile "com.google.firebase:firebase-ads:$firebaseVersion"
compile "com.google.firebase:firebase-firestore:$firebaseVersion"
compile "com.google.firebase:firebase-invites:$firebaseVersion"
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
transitive = true
}
}

View File

@@ -142,6 +142,8 @@ class RNFirebaseAdMobUtils {
return AdSize.LEADERBOARD;
case "SMART_BANNER":
return AdSize.SMART_BANNER;
case "SMART_BANNER_LANDSCAPE":
return AdSize.SMART_BANNER;
}
}
}

View File

@@ -31,6 +31,7 @@ import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseException;
import com.google.firebase.auth.ActionCodeResult;
import com.google.firebase.auth.ActionCodeSettings;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
@@ -322,25 +323,32 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
* @param promise
*/
@ReactMethod
public void sendPasswordResetEmail(String appName, final String email, final Promise promise) {
public void sendPasswordResetEmail(String appName, final String email,
ReadableMap actionCodeSettings, final Promise promise) {
Log.d(TAG, "sendPasswordResetEmail");
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(firebaseApp);
firebaseAuth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "sendPasswordResetEmail:onComplete:success");
promiseNoUser(promise, false);
} else {
Exception exception = task.getException();
Log.e(TAG, "sendPasswordResetEmail:onComplete:failure", exception);
promiseRejectAuthException(promise, exception);
}
OnCompleteListener<Void> listener = new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "sendPasswordResetEmail:onComplete:success");
promiseNoUser(promise, false);
} else {
Exception exception = task.getException();
Log.e(TAG, "sendPasswordResetEmail:onComplete:failure", exception);
promiseRejectAuthException(promise, exception);
}
});
}
};
if (actionCodeSettings == null) {
firebaseAuth.sendPasswordResetEmail(email).addOnCompleteListener(listener);
} else {
ActionCodeSettings settings = buildActionCodeSettings(actionCodeSettings);
firebaseAuth.sendPasswordResetEmail(email, settings).addOnCompleteListener(listener);
}
}
/**
@@ -440,7 +448,7 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
* @param promise
*/
@ReactMethod
public void sendEmailVerification(String appName, final Promise promise) {
public void sendEmailVerification(String appName, ReadableMap actionCodeSettings, final Promise promise) {
FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
final FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(firebaseApp);
@@ -451,20 +459,26 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
promiseNoUser(promise, false);
Log.e(TAG, "sendEmailVerification:failure:noCurrentUser");
} else {
user.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "sendEmailVerification:onComplete:success");
promiseWithUser(firebaseAuth.getCurrentUser(), promise);
} else {
Exception exception = task.getException();
Log.e(TAG, "sendEmailVerification:onComplete:failure", exception);
promiseRejectAuthException(promise, exception);
}
OnCompleteListener<Void> listener = new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "sendEmailVerification:onComplete:success");
promiseWithUser(firebaseAuth.getCurrentUser(), promise);
} else {
Exception exception = task.getException();
Log.e(TAG, "sendEmailVerification:onComplete:failure", exception);
promiseRejectAuthException(promise, exception);
}
});
}
};
if (actionCodeSettings == null) {
user.sendEmailVerification().addOnCompleteListener(listener);
} else {
ActionCodeSettings settings = buildActionCodeSettings(actionCodeSettings);
user.sendEmailVerification(settings).addOnCompleteListener(listener);
}
}
}
@@ -1426,6 +1440,30 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
return userMap;
}
private ActionCodeSettings buildActionCodeSettings(ReadableMap actionCodeSettings) {
ActionCodeSettings.Builder builder = ActionCodeSettings.newBuilder();
ReadableMap android = actionCodeSettings.getMap("android");
ReadableMap ios = actionCodeSettings.getMap("iOS");
String url = actionCodeSettings.getString("url");
if (android != null) {
boolean installApp = android.hasKey("installApp") ? android.getBoolean("installApp") : false;
String minimumVersion = android.hasKey("minimumVersion") ? android.getString("minimumVersion") : null;
String packageName = android.getString("packageName");
builder = builder.setAndroidPackageName(packageName, installApp, minimumVersion);
}
if (actionCodeSettings.hasKey("handleCodeInApp")) {
builder = builder.setHandleCodeInApp(actionCodeSettings.getBoolean("handleCodeInApp"));
}
if (ios != null && ios.hasKey("bundleId")) {
builder = builder.setIOSBundleId(ios.getString("bundleId"));
}
if (url != null) {
builder = builder.setUrl(url);
}
return builder.build();
}
/**
* @param appName
* @param requestKey

View File

@@ -0,0 +1,65 @@
package io.invertase.firebase.fabric.crashlytics;
import android.util.Log;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.crashlytics.android.Crashlytics;
public class RNFirebaseCrashlytics extends ReactContextBaseJavaModule {
private static final String TAG = "RNFirebaseCrashlytics";
public RNFirebaseCrashlytics(ReactApplicationContext reactContext) {
super(reactContext);
Log.d(TAG, "New instance");
}
@Override
public String getName() {
return TAG;
}
@ReactMethod
public void crash() {
Crashlytics.getInstance().crash();
}
@ReactMethod
public void log(final String message) {
Crashlytics.log(message);
}
@ReactMethod
public void recordError(final int code, final String domain) {
Crashlytics.logException(new Exception(code + ": " + domain));
}
@ReactMethod
public void setBoolValue(final String key, final boolean boolValue) {
Crashlytics.setBool(key, boolValue);
}
@ReactMethod
public void setFloatValue(final String key, final float floatValue) {
Crashlytics.setFloat(key, floatValue);
}
@ReactMethod
public void setIntValue(final String key, final int intValue) {
Crashlytics.setInt(key, intValue);
}
@ReactMethod
public void setStringValue(final String key, final String stringValue) {
Crashlytics.setString(key, stringValue);
}
@ReactMethod
public void setUserIdentifier(String userId) {
Crashlytics.setUserIdentifier(userId);
}
}

View File

@@ -0,0 +1,39 @@
package io.invertase.firebase.fabric.crashlytics;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.UIManagerModule;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@SuppressWarnings("unused")
public class RNFirebaseCrashlyticsPackage implements ReactPackage {
public RNFirebaseCrashlyticsPackage() {
}
/**
* @param reactContext react application context that can be used to create modules
* @return list of native modules to register with the newly created catalyst instance
*/
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new RNFirebaseCrashlytics(reactContext));
return modules;
}
/**
* @param reactContext
* @return a list of view managers that should be registered with {@link UIManagerModule}
*/
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}