@@ -107,13 +107,15 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
107107 } else if ([@" signInAnonymously" isEqualToString: call.method]) {
108108 [[self getAuth: call.arguments]
109109 signInAnonymouslyWithCompletion: ^(FIRAuthDataResult *authResult, NSError *error) {
110- [self sendResult: result forUser : authResult.user error: error];
110+ [self sendResult: result forAuthDataResult : authResult error: error];
111111 }];
112112 } else if ([@" signInWithCredential" isEqualToString: call.method]) {
113113 [[self getAuth: call.arguments]
114114 signInAndRetrieveDataWithCredential: [self getCredential: call.arguments]
115115 completion: ^(FIRAuthDataResult *authResult, NSError *error) {
116- [self sendResult: result forUser: authResult.user error: error];
116+ [self sendResult: result
117+ forAuthDataResult: authResult
118+ error: error];
117119 }];
118120 } else if ([@" createUserWithEmailAndPassword" isEqualToString: call.method]) {
119121 NSString *email = call.arguments [@" email" ];
@@ -122,7 +124,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
122124 createUserWithEmail: email
123125 password: password
124126 completion: ^(FIRAuthDataResult *authResult, NSError *error) {
125- [self sendResult: result forUser : authResult.user error: error];
127+ [self sendResult: result forAuthDataResult : authResult error: error];
126128 }];
127129 } else if ([@" fetchSignInMethodsForEmail" isEqualToString: call.method]) {
128130 NSString *email = call.arguments [@" email" ];
@@ -177,7 +179,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
177179 signInWithEmail: email
178180 link: link
179181 completion: ^(FIRAuthDataResult *_Nullable authResult, NSError *_Nullable error) {
180- [self sendResult: result forUser : authResult.user error: error];
182+ [self sendResult: result forAuthDataResult : authResult error: error];
181183 }];
182184 } else if ([@" signInWithEmailAndPassword" isEqualToString: call.method]) {
183185 NSString *email = call.arguments [@" email" ];
@@ -186,7 +188,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
186188 signInWithEmail: email
187189 password: password
188190 completion: ^(FIRAuthDataResult *authResult, NSError *error) {
189- [self sendResult: result forUser : authResult.user error: error];
191+ [self sendResult: result forAuthDataResult : authResult error: error];
190192 }];
191193 } else if ([@" signOut" isEqualToString: call.method]) {
192194 NSError *signOutError;
@@ -215,8 +217,8 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
215217 } else if ([@" linkWithCredential" isEqualToString: call.method]) {
216218 [[self getAuth: call.arguments].currentUser
217219 linkAndRetrieveDataWithCredential: [self getCredential: call.arguments]
218- completion: ^(FIRAuthDataResult *r , NSError *error) {
219- [self sendResult: result forUser: r.user error: error];
220+ completion: ^(FIRAuthDataResult *authResult , NSError *error) {
221+ [self sendResult: result forAuthDataResult: authResult error: error];
220222 }];
221223 } else if ([@" unlinkFromProvider" isEqualToString: call.method]) {
222224 NSString *provider = call.arguments [@" provider" ];
@@ -266,7 +268,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
266268 [[self getAuth: call.arguments]
267269 signInWithCustomToken: token
268270 completion: ^(FIRAuthDataResult *authResult, NSError *error) {
269- [self sendResult: result forUser : authResult.user error: error];
271+ [self sendResult: result forAuthDataResult : authResult error: error];
270272 }];
271273
272274 } else if ([@" startListeningAuthState" isEqualToString: call.method]) {
@@ -329,8 +331,11 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
329331 verificationCode: smsCode];
330332 [[self getAuth: call.arguments]
331333 signInAndRetrieveDataWithCredential: credential
332- completion: ^(FIRAuthDataResult *r, NSError *_Nullable error) {
333- [self sendResult: result forUser: r.user error: error];
334+ completion: ^(FIRAuthDataResult *authResult,
335+ NSError *_Nullable error) {
336+ [self sendResult: result
337+ forAuthDataResult: authResult
338+ error: error];
334339 }];
335340 } else if ([@" setLanguageCode" isEqualToString: call.method]) {
336341 NSString *language = call.arguments [@" language" ];
@@ -353,14 +358,32 @@ - (NSMutableDictionary *)dictionaryFromUser:(FIRUser *)user {
353358
354359 NSMutableDictionary *userData = [toDictionary (user) mutableCopy ];
355360 userData[@" creationTimestamp" ] = [NSNumber numberWithLong: creationDate];
356- userData[@" lastSignInTimestamp" ] = [NSNumber numberWithInt : lastSignInDate];
361+ userData[@" lastSignInTimestamp" ] = [NSNumber numberWithLong : lastSignInDate];
357362 userData[@" isAnonymous" ] = [NSNumber numberWithBool: user.isAnonymous];
358363 userData[@" isEmailVerified" ] = [NSNumber numberWithBool: user.isEmailVerified];
359364 userData[@" providerData" ] = providerData;
360365 return userData;
361366}
362367#pragma clang diagnostic pop
363368
369+ - (void )sendResult : (FlutterResult)result
370+ forAuthDataResult : (FIRAuthDataResult *)authResult
371+ error : (NSError *)error {
372+ FIRUser *user = authResult.user ;
373+ FIRAdditionalUserInfo *additionalUserInfo = authResult.additionalUserInfo ;
374+ [self sendResult: result
375+ forObject: @{
376+ @" user" : (user != nil ? [self dictionaryFromUser: user] : nil ),
377+ @" additionalUserInfo" : @{
378+ @" isNewUser" : [NSNumber numberWithBool: additionalUserInfo.isNewUser],
379+ @" username" : additionalUserInfo.username ,
380+ @" providerId" : additionalUserInfo.providerID ,
381+ @" profile" : additionalUserInfo.profile ,
382+ }
383+ }
384+ error: error];
385+ }
386+
364387- (void )sendResult : (FlutterResult)result forUser : (FIRUser *)user error : (NSError *)error {
365388 [self sendResult: result
366389 forObject: (user != nil ? [self dictionaryFromUser: user] : nil )
0 commit comments