aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Source/Auth/FSTCredentialsProvider.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/Source/Auth/FSTCredentialsProvider.mm')
-rw-r--r--Firestore/Source/Auth/FSTCredentialsProvider.mm43
1 files changed, 30 insertions, 13 deletions
diff --git a/Firestore/Source/Auth/FSTCredentialsProvider.mm b/Firestore/Source/Auth/FSTCredentialsProvider.mm
index 653d7ff..cf045e3 100644
--- a/Firestore/Source/Auth/FSTCredentialsProvider.mm
+++ b/Firestore/Source/Auth/FSTCredentialsProvider.mm
@@ -21,36 +21,53 @@
#import <GRPCClient/GRPCCall.h>
#import "FIRFirestoreErrors.h"
-#import "Firestore/Source/Auth/FSTUser.h"
#import "Firestore/Source/Util/FSTAssert.h"
#import "Firestore/Source/Util/FSTClasses.h"
#import "Firestore/Source/Util/FSTDispatchQueue.h"
+#include "Firestore/core/src/firebase/firestore/auth/user.h"
+#include "Firestore/core/src/firebase/firestore/util/string_apple.h"
+
+namespace util = firebase::firestore::util;
+using firebase::firestore::auth::User;
+
NS_ASSUME_NONNULL_BEGIN
#pragma mark - FSTGetTokenResult
+@interface FSTGetTokenResult () {
+ User _user;
+}
+
+@end
+
@implementation FSTGetTokenResult
-- (instancetype)initWithUser:(FSTUser *)user token:(NSString *_Nullable)token {
+
+- (instancetype)initWithUser:(const User &)user token:(NSString *_Nullable)token {
if (self = [super init]) {
_user = user;
_token = token;
}
return self;
}
+
+- (const User &)user {
+ return _user;
+}
+
@end
#pragma mark - FSTFirebaseCredentialsProvider
-@interface FSTFirebaseCredentialsProvider ()
+@interface FSTFirebaseCredentialsProvider () {
+ /** The current user as reported to us via our AuthStateDidChangeListener. */
+ User _currentUser;
+}
@property(nonatomic, strong, readonly) FIRApp *app;
/** Handle used to stop receiving auth changes once userChangeListener is removed. */
@property(nonatomic, strong, nullable, readwrite) id<NSObject> authListenerHandle;
-/** The current user as reported to us via our AuthStateDidChangeListener. */
-@property(nonatomic, strong, nonnull, readwrite) FSTUser *currentUser;
-
/**
* Counter used to detect if the user changed while a -getTokenForcingRefresh: request was
* outstanding.
@@ -67,7 +84,7 @@ NS_ASSUME_NONNULL_BEGIN
self = [super init];
if (self) {
_app = app;
- _currentUser = [[FSTUser alloc] initWithUID:[self.app getUID]];
+ _currentUser = User([self.app getUID]);
_userCounter = 0;
// Register for user changes so that we can internally track the current user.
@@ -90,13 +107,13 @@ NS_ASSUME_NONNULL_BEGIN
}
NSString *userID = userInfo[FIRAuthStateDidChangeInternalNotificationUIDKey];
- FSTUser *newUser = [[FSTUser alloc] initWithUID:userID];
- if (![newUser isEqual:self.currentUser]) {
- self.currentUser = newUser;
+ User newUser = User(userID);
+ if (newUser != _currentUser) {
+ _currentUser = newUser;
self.userCounter++;
FSTVoidUserBlock listenerBlock = self.userChangeListener;
if (listenerBlock) {
- listenerBlock(self.currentUser);
+ listenerBlock(_currentUser);
}
}
}
@@ -127,7 +144,7 @@ NS_ASSUME_NONNULL_BEGIN
completion(nil, cancelError);
} else {
FSTGetTokenResult *result =
- [[FSTGetTokenResult alloc] initWithUser:self.currentUser token:token];
+ [[FSTGetTokenResult alloc] initWithUser:_currentUser token:token];
completion(result, error);
}
};
@@ -142,7 +159,7 @@ NS_ASSUME_NONNULL_BEGIN
FSTAssert(!_userChangeListener, @"UserChangeListener set twice!");
// Fire initial event.
- block(self.currentUser);
+ block(_currentUser);
} else {
FSTAssert(self.authListenerHandle, @"UserChangeListener removed twice!");
FSTAssert(_userChangeListener, @"UserChangeListener removed without being set!");