@@ -261,25 +261,26 @@ firebase.getRemoteConfigDefaults = function (properties) {
261261} ;
262262
263263firebase . _isGooglePlayServicesAvailable = function ( ) {
264- var context = appModule . android . foregroundActivity ;
264+ var context = appModule . android . context ;
265265 var playServiceStatusSuccess = com . google . android . gms . common . ConnectionResult . SUCCESS ; // 0
266266 var playServicesStatus = com . google . android . gms . common . GoogleApiAvailability . getInstance ( ) . isGooglePlayServicesAvailable ( context ) ;
267267 return playServicesStatus === playServiceStatusSuccess ;
268268} ;
269269
270270firebase . getRemoteConfig = function ( arg ) {
271271 return new Promise ( function ( resolve , reject ) {
272- try {
273- if ( typeof ( com . google . firebase . remoteconfig ) === "undefined" ) {
274- reject ( "Uncomment firebase-config in the plugin's include.gradle first" ) ;
275- return ;
276- }
277272
278- if ( arg . properties === undefined ) {
279- reject ( "Argument 'properties' is missing" ) ;
280- return ;
281- }
273+ if ( typeof ( com . google . firebase . remoteconfig ) === "undefined" ) {
274+ reject ( "Uncomment firebase-config in the plugin's include.gradle first" ) ;
275+ return ;
276+ }
277+
278+ if ( arg . properties === undefined ) {
279+ reject ( "Argument 'properties' is missing" ) ;
280+ return ;
281+ }
282282
283+ function _resolve ( ) {
283284 if ( ! firebase . _isGooglePlayServicesAvailable ( ) ) {
284285 reject ( "Google Play services is required for this feature, but not available on this device" ) ;
285286 return ;
@@ -342,6 +343,15 @@ firebase.getRemoteConfig = function (arg) {
342343 firebaseRemoteConfig . fetch ( expirationDuration )
343344 . addOnSuccessListener ( onSuccessListener )
344345 . addOnFailureListener ( onFailureListener ) ;
346+ }
347+
348+ try {
349+ if ( appModule . android . foregroundActivity ) {
350+ _resolve ( ) ;
351+ } else {
352+ // if this is called before application.start() wait for the event to fire
353+ appModule . on ( appModule . launchEvent , _resolve ) ;
354+ }
345355 } catch ( ex ) {
346356 console . log ( "Error in firebase.getRemoteConfig: " + ex ) ;
347357 reject ( ex ) ;
@@ -413,87 +423,96 @@ function toLoginResult(user) {
413423
414424firebase . login = function ( arg ) {
415425 return new Promise ( function ( resolve , reject ) {
416- try {
417- if ( ! firebase . _isGooglePlayServicesAvailable ( ) ) {
418- reject ( "Google Play services is required for this feature, but not available on this device" ) ;
419- return ;
420- }
421426
422- var firebaseAuth = com . google . firebase . auth . FirebaseAuth . getInstance ( ) ;
423- var onCompleteListener = new com . google . android . gms . tasks . OnCompleteListener ( {
424- onComplete : function ( task ) {
425- // alert("login task: " + task.isSuccessful());
426- if ( ! task . isSuccessful ( ) ) {
427- reject ( "Logging in the user failed. " + ( task . getException ( ) && task . getException ( ) . getReason ? task . getException ( ) . getReason ( ) : task . getException ( ) ) ) ;
427+ function _resolve ( ) {
428+ if ( ! firebase . _isGooglePlayServicesAvailable ( ) ) {
429+ reject ( "Google Play services is required for this feature, but not available on this device" ) ;
430+ return ;
431+ }
432+
433+ var firebaseAuth = com . google . firebase . auth . FirebaseAuth . getInstance ( ) ;
434+ var onCompleteListener = new com . google . android . gms . tasks . OnCompleteListener ( {
435+ onComplete : function ( task ) {
436+ if ( ! task . isSuccessful ( ) ) {
437+ reject ( "Logging in the user failed. " + ( task . getException ( ) && task . getException ( ) . getReason ? task . getException ( ) . getReason ( ) : task . getException ( ) ) ) ;
438+ } else {
439+ var user = task . getResult ( ) . getUser ( ) ;
440+ resolve ( toLoginResult ( user ) ) ;
441+ }
442+ }
443+ } ) ;
444+
445+ if ( arg . type === firebase . LoginType . ANONYMOUS ) {
446+ // var onFailureListener = new com.google.android.gms.tasks.OnFailureListener({
447+ // onFailure: function (throwable) {
448+ // reject("Anonymous login failed with message: " + throwable.getMessage());
449+ // }
450+ // });
451+ // firebaseAuth.signInAnonymously().addOnFailureListener(onFailureListener);
452+ firebaseAuth . signInAnonymously ( ) . addOnCompleteListener ( onCompleteListener ) ;
453+ } else if ( arg . type === firebase . LoginType . PASSWORD ) {
454+ if ( ! arg . email || ! arg . password ) {
455+ reject ( "Auth type emailandpassword requires an email and password argument" ) ;
428456 } else {
429- var user = task . getResult ( ) . getUser ( ) ;
430- resolve ( toLoginResult ( user ) ) ;
457+ firebaseAuth . signInWithEmailAndPassword ( arg . email , arg . password ) . addOnCompleteListener ( onCompleteListener ) ;
458+ }
459+ } else if ( arg . type === firebase . LoginType . CUSTOM ) {
460+ if ( ! arg . token && ! arg . tokenProviderFn ) {
461+ reject ( "Auth type custom requires a token or a tokenProviderFn argument" ) ;
462+ } else if ( arg . token ) {
463+ firebaseAuth . signInWithCustomToken ( arg . token ) . addOnCompleteListener ( onCompleteListener ) ;
464+ } else if ( arg . tokenProviderFn ) {
465+ arg . tokenProviderFn ( )
466+ . then (
467+ function ( token ) {
468+ firebaseAuth . signInWithCustomToken ( arg . token ) . addOnCompleteListener ( onCompleteListener ) ;
469+ } ,
470+ function ( error ) {
471+ reject ( error ) ;
472+ }
473+ ) ;
431474 }
432- }
433- } ) ;
434475
435- if ( arg . type === firebase . LoginType . ANONYMOUS ) {
436- // var onFailureListener = new com.google.android.gms.tasks.OnFailureListener({
437- // onFailure: function (throwable) {
438- // reject("Anonymous login failed with message: " + throwable.getMessage());
439- // }
440- // });
441- // firebaseAuth.signInAnonymously().addOnFailureListener(onFailureListener);
442- firebaseAuth . signInAnonymously ( ) . addOnCompleteListener ( onCompleteListener ) ;
443- } else if ( arg . type === firebase . LoginType . PASSWORD ) {
444- if ( ! arg . email || ! arg . password ) {
445- reject ( "Auth type emailandpassword requires an email and password argument" ) ;
446- } else {
447- firebaseAuth . signInWithEmailAndPassword ( arg . email , arg . password ) . addOnCompleteListener ( onCompleteListener ) ;
448- }
449- } else if ( arg . type === firebase . LoginType . CUSTOM ) {
450- if ( ! arg . token && ! arg . tokenProviderFn ) {
451- reject ( "Auth type custom requires a token or a tokenProviderFn argument" ) ;
452- } else if ( arg . token ) {
453- firebaseAuth . signInWithCustomToken ( arg . token ) . addOnCompleteListener ( onCompleteListener ) ;
454- } else if ( arg . tokenProviderFn ) {
455- arg . tokenProviderFn ( )
456- . then (
457- function ( token ) {
458- firebaseAuth . signInWithCustomToken ( arg . token ) . addOnCompleteListener ( onCompleteListener ) ;
459- } ,
460- function ( error ) {
461- reject ( error ) ;
462- }
463- ) ;
464- }
476+ } else if ( arg . type === firebase . LoginType . FACEBOOK ) {
477+ if ( typeof ( com . facebook ) === "undefined" ) {
478+ reject ( "Facebook SDK not installed - see gradle config" ) ;
479+ return ;
480+ }
465481
466- } else if ( arg . type === firebase . LoginType . FACEBOOK ) {
467- if ( typeof ( com . facebook ) === "undefined" ) {
468- reject ( "Facebook SDK not installed - see gradle config" ) ;
469- return ;
470- }
482+ // TODO see https://firebase.google.com/docs/auth/android/facebook-login#authenticate_with_firebase
483+ var fbLoginManager = com . facebook . login . LoginManager . getInstance ( ) ;
484+ var callbackManager = com . facebook . CallbackManager . Factory . create ( ) ;
471485
472- // TODO see https://firebase.google.com/docs/auth/android/facebook-login#authenticate_with_firebase
473- var fbLoginManager = com . facebook . login . LoginManager . getInstance ( ) ;
474- var callbackManager = com . facebook . CallbackManager . Factory . create ( ) ;
486+ fbLoginManager . registerCallback (
487+ callbackManager ,
488+ new com . facebook . FacebookCallback ( {
489+ onSuccess : function ( loginResult ) {
490+ console . log ( "------------- fb callback" ) ;
491+ console . log ( "------------- fb loginResult " + loginResult ) ;
492+ }
493+ } )
494+ ) ;
475495
476- fbLoginManager . registerCallback (
477- callbackManager ,
478- new com . facebook . FacebookCallback ( {
479- onSuccess : function ( loginResult ) {
480- console . log ( "------------- fb callback" ) ;
481- console . log ( "------------- fb loginResult " + loginResult ) ;
482- }
483- } )
484- ) ;
496+ var permissions = [ "public_profile" , "email" ] ;
497+ var activity = appModule . android . foregroundActivity ;
498+ fbLoginManager . logInWithReadPermissions ( foregroundActivity , permissions ) ;
485499
486- var permissions = [ "public_profile" , "email" ] ;
487- var activity = appModule . android . foregroundActivity ;
488- fbLoginManager . logInWithReadPermissions ( foregroundActivity , permissions ) ;
500+ } else {
501+ reject ( "Unsupported auth type: " + arg . type ) ;
502+ }
503+ }
489504
490- } else {
491- reject ( "Unsupported auth type: " + arg . type ) ;
505+ try {
506+ if ( appModule . android . foregroundActivity ) {
507+ _resolve ( ) ;
508+ } else {
509+ // if this is called before application.start() wait for the event to fire
510+ appModule . on ( appModule . launchEvent , _resolve ) ;
511+ }
512+ } catch ( ex ) {
513+ console . log ( "Error in firebase.login: " + ex ) ;
514+ reject ( ex ) ;
492515 }
493- } catch ( ex ) {
494- console . log ( "Error in firebase.login: " + ex ) ;
495- reject ( ex ) ;
496- }
497516 } ) ;
498517} ;
499518
0 commit comments