@@ -19,22 +19,36 @@ @implementation FirestackAuth
19
19
RCT_EXPORT_METHOD (signInAnonymously:
20
20
(RCTResponseSenderBlock) callBack)
21
21
{
22
-
22
+ @try {
23
23
[[FIRAuth auth ] signInAnonymouslyWithCompletion
24
24
:^(FIRUser *user, NSError *error) {
25
25
if (!user) {
26
26
NSDictionary *evt = @{
27
- @" eventName" : @" SignInAnonymouslyError " ,
28
- @" msg" : [error localizedFailureReason ]
27
+ @" eventName" : AUTH_ANONYMOUS_ERROR_EVENT ,
28
+ @" msg" : [error localizedDescription ]
29
29
};
30
30
31
- [self sendJSEvent: AUTH_CHANGED_EVENT props: evt];
31
+
32
+ [self sendJSEvent: AUTH_CHANGED_EVENT
33
+ props: evt];
34
+
32
35
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
+ }
37
40
}];
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
+ }
38
52
}
39
53
40
54
RCT_EXPORT_METHOD (signInWithCustomToken:
@@ -50,7 +64,7 @@ @implementation FirestackAuth
50
64
callback (@[[NSNull null ], userProps]);
51
65
} else {
52
66
NSDictionary *err =
53
- [FirestackErrors handleFirebaseError: @" signinError "
67
+ [FirestackErrors handleFirebaseError: AUTH_ERROR_EVENT
54
68
error: error
55
69
withUser: user];
56
70
callback (@[err]);
@@ -164,6 +178,11 @@ @implementation FirestackAuth
164
178
}
165
179
}
166
180
181
+ // Helper
182
+ - (Boolean) listeningForAuth {
183
+ return (self->authListenerHandle != nil );
184
+ }
185
+
167
186
RCT_EXPORT_METHOD (getCurrentUser:(RCTResponseSenderBlock)callback)
168
187
{
169
188
FIRUser *user = [FIRAuth auth ].currentUser ;
@@ -470,15 +489,17 @@ - (FIRAuthCredential *)getCredentialForProvider:(NSString *)provider
470
489
471
490
// Not sure how to get away from this... yet
472
491
- (NSArray <NSString *> *)supportedEvents {
473
- return @[AUTH_CHANGED_EVENT];
492
+ return @[AUTH_CHANGED_EVENT, AUTH_ANONYMOUS_ERROR_EVENT, AUTH_ERROR_EVENT ];
474
493
}
475
494
476
495
- (void ) sendJSEvent : (NSString *)title
477
496
props : (NSDictionary *)props
478
497
{
479
498
@try {
499
+ if ([self listeningForAuth ]) {
480
500
[self sendEventWithName: title
481
501
body: props];
502
+ }
482
503
}
483
504
@catch (NSException *err) {
484
505
NSLog (@" An error occurred in sendJSEvent: %@ " , [err debugDescription ]);
0 commit comments