@@ -19,22 +19,36 @@ @implementation FirestackAuth
1919RCT_EXPORT_METHOD (signInAnonymously:
2020 (RCTResponseSenderBlock) callBack)
2121{
22-
22+ @try {
2323 [[FIRAuth auth ] signInAnonymouslyWithCompletion
2424 :^(FIRUser *user, NSError *error) {
2525 if (!user) {
2626 NSDictionary *evt = @{
27- @" eventName" : @" SignInAnonymouslyError " ,
28- @" msg" : [error localizedFailureReason ]
27+ @" eventName" : AUTH_ANONYMOUS_ERROR_EVENT ,
28+ @" msg" : [error localizedDescription ]
2929 };
3030
31- [self sendJSEvent: AUTH_CHANGED_EVENT props: evt];
31+
32+ [self sendJSEvent: AUTH_CHANGED_EVENT
33+ props: evt];
34+
3235 callBack (@[evt]);
33- return ;
34- }
35- NSDictionary *userProps = [ self userPropsFromFIRUser: user] ;
36- callBack (@[[ NSNull null ], userProps]);
36+ } else {
37+ NSDictionary *userProps = [ self userPropsFromFIRUser: user];
38+ callBack (@[[ NSNull null ], userProps]) ;
39+ }
3740 }];
41+ } @catch (NSException *ex) {
42+ NSDictionary *eventError = @{
43+ @" eventName" : AUTH_ANONYMOUS_ERROR_EVENT,
44+ @" msg" : ex.reason
45+ };
46+
47+ [self sendJSEvent: AUTH_ERROR_EVENT
48+ props: eventError];
49+ NSLog (@" An exception occurred: %@ " , ex);
50+ callBack (@[eventError]);
51+ }
3852}
3953
4054RCT_EXPORT_METHOD (signInWithCustomToken:
@@ -50,7 +64,7 @@ @implementation FirestackAuth
5064 callback (@[[NSNull null ], userProps]);
5165 } else {
5266 NSDictionary *err =
53- [FirestackErrors handleFirebaseError: @" signinError "
67+ [FirestackErrors handleFirebaseError: AUTH_ERROR_EVENT
5468 error: error
5569 withUser: user];
5670 callback (@[err]);
@@ -164,6 +178,11 @@ @implementation FirestackAuth
164178 }
165179}
166180
181+ // Helper
182+ - (Boolean) listeningForAuth {
183+ return (self->authListenerHandle != nil );
184+ }
185+
167186RCT_EXPORT_METHOD (getCurrentUser:(RCTResponseSenderBlock)callback)
168187{
169188 FIRUser *user = [FIRAuth auth ].currentUser ;
@@ -470,15 +489,17 @@ - (FIRAuthCredential *)getCredentialForProvider:(NSString *)provider
470489
471490// Not sure how to get away from this... yet
472491- (NSArray <NSString *> *)supportedEvents {
473- return @[AUTH_CHANGED_EVENT];
492+ return @[AUTH_CHANGED_EVENT, AUTH_ANONYMOUS_ERROR_EVENT, AUTH_ERROR_EVENT ];
474493}
475494
476495- (void ) sendJSEvent : (NSString *)title
477496 props : (NSDictionary *)props
478497{
479498 @try {
499+ if ([self listeningForAuth ]) {
480500 [self sendEventWithName: title
481501 body: props];
502+ }
482503 }
483504 @catch (NSException *err) {
484505 NSLog (@" An error occurred in sendJSEvent: %@ " , [err debugDescription ]);
0 commit comments