diff --git a/android/build.gradle b/android/build.gradle index a06d876..edd8c3b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -20,13 +20,13 @@ android { dependencies { compile 'com.facebook.react:react-native:0.20.+' - compile 'com.google.android.gms:play-services-base:9.8.0' + compile 'com.google.android.gms:play-services-base:9.6.0' - compile 'com.google.firebase:firebase-core:9.8.0' - compile 'com.google.firebase:firebase-auth:9.8.0' - compile 'com.google.firebase:firebase-analytics:9.8.0' - compile 'com.google.firebase:firebase-database:9.8.0' - compile 'com.google.firebase:firebase-storage:9.8.0' - compile 'com.google.firebase:firebase-messaging:9.8.0' + compile 'com.google.firebase:firebase-core:9.6.0' + compile 'com.google.firebase:firebase-auth:9.6.0' + compile 'com.google.firebase:firebase-analytics:9.6.0' + compile 'com.google.firebase:firebase-database:9.6.0' + compile 'com.google.firebase:firebase-storage:9.6.0' + compile 'com.google.firebase:firebase-messaging:9.6.0' } diff --git a/android/src/main/java/io/fullstack/firestack/FirestackAuth.java b/android/src/main/java/io/fullstack/firestack/FirestackAuth.java index e9ec2bf..e52186e 100644 --- a/android/src/main/java/io/fullstack/firestack/FirestackAuth.java +++ b/android/src/main/java/io/fullstack/firestack/FirestackAuth.java @@ -1,3 +1,4 @@ + package io.fullstack.firestack; import android.content.Context; @@ -99,21 +100,30 @@ public void unlistenForAuth(final Callback callback) { } @ReactMethod - public void createUserWithEmail(final String email, final String password, final Callback onComplete) { + public void createUserWithEmail(final String email, final String password, final Callback callback) { mAuth = FirebaseAuth.getInstance(); mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { + try { + if (task.isSuccessful()) { FirestackAuthModule.this.user = task.getResult().getUser(); - userCallback(FirestackAuthModule.this.user, onComplete); - }else{ - userErrorCallback(task, onComplete); + userCallback(FirestackAuthModule.this.user, callback); + } else { + userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @ReactMethod @@ -124,14 +134,23 @@ public void signInWithEmail(final String email, final String password, final Cal .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { + try { + if (task.isSuccessful()) { FirestackAuthModule.this.user = task.getResult().getUser(); userCallback(FirestackAuthModule.this.user, callback); - } else { + } else { userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } + } + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); } - }); + }); } @ReactMethod @@ -155,15 +174,23 @@ public void signInAnonymously(final Callback callback) { public void onComplete(@NonNull Task task) { Log.d(TAG, "signInAnonymously:onComplete:" + task.isSuccessful()); - if (task.isSuccessful()) { + try { + if (task.isSuccessful()) { FirestackAuthModule.this.user = task.getResult().getUser(); anonymousUserCallback(FirestackAuthModule.this.user, callback); - }else{ + } else { userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } - } - }); - + } + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @ReactMethod @@ -175,14 +202,23 @@ public void signInWithCustomToken(final String customToken, final Callback callb @Override public void onComplete(@NonNull Task task) { Log.d(TAG, "signInWithCustomToken:onComplete:" + task.isSuccessful()); - if (task.isSuccessful()) { - FirestackAuthModule.this.user = task.getResult().getUser(); + try { + if (task.isSuccessful()) { + FirestackAuthModule.this.user = task.getResult().getUser(); userCallback(FirestackAuthModule.this.user, callback); - } else { - userErrorCallback(task, callback); + } else { + userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @ReactMethod @@ -233,15 +269,24 @@ public void updateUserEmail(final String email, final Callback callback) { .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - Log.d(TAG, "User email address updated"); - FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser(); - userCallback(u, callback); - } else { - userErrorCallback(task, callback); + try { + if (task.isSuccessful()) { + Log.d(TAG, "User email address updated"); + FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser(); + userCallback(u, callback); + } else { + userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } else { WritableMap err = Arguments.createMap(); err.putInt("errorCode", NO_CURRENT_USER); @@ -259,16 +304,25 @@ public void updateUserPassword(final String newPassword, final Callback callback .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - Log.d(TAG, "User password updated"); + try { + if (task.isSuccessful()) { + Log.d(TAG, "User password updated"); - FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser(); - userCallback(u, callback); - } else { - userErrorCallback(task, callback); + FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser(); + userCallback(u, callback); + } else { + userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } else { WritableMap err = Arguments.createMap(); err.putInt("errorCode", NO_CURRENT_USER); @@ -285,6 +339,7 @@ public void sendPasswordResetWithEmail(final String email, final Callback callba .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { + try { if(task.isSuccessful()){ WritableMap resp = Arguments.createMap(); resp.putString("status", "complete"); @@ -292,8 +347,16 @@ public void onComplete(@NonNull Task task) { }else{ callback.invoke(task.getException().toString()); } + } catch (Exception ex) { + userExceptionCallback(ex, callback); + } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @ReactMethod @@ -305,17 +368,26 @@ public void deleteUser(final Callback callback) { .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - Log.d(TAG, "User account deleted"); - WritableMap resp = Arguments.createMap(); - resp.putString("status", "complete"); - resp.putString("msg", "User account deleted"); - callback.invoke(null, resp); - } else { - userErrorCallback(task, callback); + try { + if (task.isSuccessful()) { + Log.d(TAG, "User account deleted"); + WritableMap resp = Arguments.createMap(); + resp.putString("status", "complete"); + resp.putString("msg", "User account deleted"); + callback.invoke(null, resp); + } else { + userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } else { WritableMap err = Arguments.createMap(); err.putInt("errorCode", NO_CURRENT_USER); @@ -332,20 +404,29 @@ public void getToken(final Callback callback) { .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - String token = task.getResult().getToken(); - WritableMap resp = Arguments.createMap(); - resp.putString("status", "complete"); - resp.putString("token", token); - callback.invoke(null, resp); - } else { - WritableMap err = Arguments.createMap(); - err.putInt("errorCode", ERROR_FETCHING_TOKEN); - err.putString("errorMessage", task.getException().getMessage()); - callback.invoke(err); + try { + if (task.isSuccessful()) { + String token = task.getResult().getToken(); + WritableMap resp = Arguments.createMap(); + resp.putString("status", "complete"); + resp.putString("token", token); + callback.invoke(null, resp); + } else { + WritableMap err = Arguments.createMap(); + err.putInt("errorCode", ERROR_FETCHING_TOKEN); + err.putString("errorMessage", task.getException().getMessage()); + callback.invoke(err); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @ReactMethod @@ -373,15 +454,24 @@ public void updateUserProfile(ReadableMap props, final Callback callback) { .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { - if (task.isSuccessful()) { - Log.d(TAG, "User profile updated"); - FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser(); - userCallback(u, callback); - } else { - userErrorCallback(task, callback); + try { + if (task.isSuccessful()) { + Log.d(TAG, "User profile updated"); + FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser(); + userCallback(u, callback); + } else { + userErrorCallback(task, callback); + } + } catch (Exception ex) { + userExceptionCallback(ex, callback); } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @ReactMethod @@ -417,14 +507,23 @@ public void googleLogin(String IdToken, final Callback callback) { .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { + try { if (task.isSuccessful()) { FirestackAuthModule.this.user = task.getResult().getUser(); userCallback(FirestackAuthModule.this.user, callback); }else{ userErrorCallback(task, callback); } + } catch (Exception ex) { + userExceptionCallback(ex, callback); + } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @ReactMethod @@ -436,18 +535,27 @@ public void facebookLogin(String Token, final Callback callback) { .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { + try { if (task.isSuccessful()) { FirestackAuthModule.this.user = task.getResult().getUser(); userCallback(FirestackAuthModule.this.user, callback); }else{ userErrorCallback(task, callback); } + } catch (Exception ex) { + userExceptionCallback(ex, callback); + } } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } // Internal helpers - public void userCallback(FirebaseUser passedUser, final Callback onComplete) { + public void userCallback(FirebaseUser passedUser, final Callback callback) { if (passedUser == null) { mAuth = FirebaseAuth.getInstance(); @@ -469,13 +577,18 @@ public void onComplete(@NonNull Task task) { msgMap.putMap("user", userMap); - onComplete.invoke(null, msgMap); + callback.invoke(null, msgMap); } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } // TODO: Reduce to one method - public void anonymousUserCallback(FirebaseUser passedUser, final Callback onComplete) { + public void anonymousUserCallback(FirebaseUser passedUser, final Callback callback) { if (passedUser == null) { mAuth = FirebaseAuth.getInstance(); @@ -484,7 +597,8 @@ public void anonymousUserCallback(FirebaseUser passedUser, final Callback onComp this.user = passedUser; } - this.user.getToken(true).addOnCompleteListener(new OnCompleteListener() { + this.user.getToken(true) + .addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { WritableMap msgMap = Arguments.createMap(); @@ -499,9 +613,14 @@ public void onComplete(@NonNull Task task) { msgMap.putMap("user", userMap); - onComplete.invoke(null, msgMap); + callback.invoke(null, msgMap); } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception ex) { + userExceptionCallback(ex, callback); + } + }); } @@ -524,6 +643,15 @@ public void userErrorCallback(Task task, final Callback onFail) { onFail.invoke(error); } + public void userExceptionCallback(Exception ex, final Callback onFail) { + WritableMap error = Arguments.createMap(); + error.putInt("errorCode", ex.hashCode()); + error.putString("errorMessage", ex.getMessage()); + error.putString("allErrorMessage", ex.toString()); + + onFail.invoke(error); + } + private WritableMap getUserMap() { WritableMap userMap = Arguments.createMap(); diff --git a/lib/__tests__/firestack.spec.js b/lib/__tests__/firestack.spec.js new file mode 100644 index 0000000..39b1dd5 --- /dev/null +++ b/lib/__tests__/firestack.spec.js @@ -0,0 +1,12 @@ +// import 'React' +import Firestack from '../firestack.js' + +describe('Firestack', () => { + + it('does not blow up on instantiation', () => { + expect(function() { + new Firestack({}); + }).not.toThrow() + }) + +}) \ No newline at end of file diff --git a/lib/firestack.js b/lib/firestack.js index 8bcbbfa..9448a96 100644 --- a/lib/firestack.js +++ b/lib/firestack.js @@ -10,7 +10,7 @@ import Log from './utils/log' // const storage = require('firebase/storage'); // const db = require('firebase/database'); -import {NativeModules, NativeEventEmitter, AsyncStorage} from 'react-native'; +import RN, {NativeModules, NativeEventEmitter} from 'react-native'; // TODO: Break out modules into component pieces // i.e. auth component, storage component, etc. const FirestackModule = NativeModules.Firestack; diff --git a/lib/utils/__tests__/log-test.js b/lib/utils/__tests__/log-test.js index 2d49a0e..abf8842 100644 --- a/lib/utils/__tests__/log-test.js +++ b/lib/utils/__tests__/log-test.js @@ -1,5 +1,3 @@ -jest.unmock('../log'); -jest.unmock('../window-or-global') import Log from '../log'; import root from '../window-or-global'; @@ -15,18 +13,6 @@ describe('Log', () => { expect(log).toBeDefined(); }); - it('can be enabled', () => { - log = new Log('test', true); - expect(log.enabled).toBeTruthy(); - }); - - it('can be disabled', () => { - log = new Log('test', true); - expect(log.enabled).toBeTruthy(); - log.enable(false); - expect(log.enabled).toBeFalsy(); - }); - describe('levels', () => { beforeEach(() => { log = new Log('test', true); diff --git a/lib/utils/__tests__/promisify-test.js b/lib/utils/__tests__/promisify-test.js index b159c66..f9f3cc6 100644 --- a/lib/utils/__tests__/promisify-test.js +++ b/lib/utils/__tests__/promisify-test.js @@ -1,5 +1,3 @@ -jest.unmock('../promisify'); - import promisify from '../promisify'; import sinon from 'sinon' diff --git a/lib/utils/__tests__/singleton-test.js b/lib/utils/__tests__/singleton-test.js index fb7a35c..4209f5d 100644 --- a/lib/utils/__tests__/singleton-test.js +++ b/lib/utils/__tests__/singleton-test.js @@ -1,5 +1,3 @@ -jest.unmock('../singleton'); - import Singleton from '../singleton'; import sinon from 'sinon' diff --git a/package.json b/package.json index e611094..735c0b0 100644 --- a/package.json +++ b/package.json @@ -17,13 +17,18 @@ "url": "https://github.com/fullstackreact/react-native-firestack.git" }, "jest": { - "preset": "jest-react-native", - "setupFiles": [], - "unmockedModulePathPatterns": [ - "./node_modules/react", - "./node_modules/react-native", - "./node_modules/react-native-mock", - "./node_modules/react-addons-test-utils" + "globals": { + "__DEV__": true + }, + "verbose": false, + "setupFiles": [ + "test/test-helper.js" + ], + "modulePaths": [ + "/node_modules/react-native" + ], + "modulePathIgnorePatterns": [ + "/node_modules/react" ] }, "license": "ISC", @@ -51,18 +56,19 @@ } }, "devDependencies": { - "babel-jest": "^14.1.0", + "babel-jest": "^16.0.0", "babel-preset-react-native": "^1.9.0", - "debug": "^2.2.0", - "enzyme": "^2.4.1", - "jest": "^14.1.0", - "jest-react-native": "^14.1.3", - "mocha": "^3.0.2", - "react": "^15.3.0", - "react-dom": "^15.3.0", - "react-native-mock": "^0.2.6", - "react-test-renderer": "^15.3.0", - "should": "^11.1.0", + "debug": "^2.3.0", + "enzyme": "^2.5.1", + "jest": "^16.0.2", + "jest-react-native": "^16.1.0", + "mocha": "^3.1.2", + "react": "^15.3.2", + "react-dom": "^15.3.2", + "react-native": "^0.36.1", + "react-native-mock": "^0.2.7", + "react-test-renderer": "^15.3.2", + "should": "^11.1.1", "sinon": "^2.0.0-pre.2" }, "dependencies": { diff --git a/test/firestack.test.js b/test/firestack.test.js deleted file mode 100644 index 0388a1a..0000000 --- a/test/firestack.test.js +++ /dev/null @@ -1,19 +0,0 @@ -const should = require('should'); -const { shallow } = require('enzyme'); -const Firestack = require('..'); -const React = require('react'); - -describe('Firestack', () => { - - let firestackInstance; - - before(() => { - firestackInstance = new Firestack({ - - }); - }); - - it('can be configured', () => { - true.should.be.false; - }); -}); \ No newline at end of file diff --git a/test/test-helper.js b/test/test-helper.js index 32d3926..ee8439b 100644 --- a/test/test-helper.js +++ b/test/test-helper.js @@ -1,7 +1,7 @@ -require('react-native-mock/mock'); +// require('react-native-mock'); -var { NativeEventEmitter, NativeModules } = require('react-native'); +// var { NativeEventEmitter, NativeModules } = require('react-native'); -NativeModules.Firestack = { +// NativeModules.Firestack = { -} \ No newline at end of file +// } \ No newline at end of file pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy