@@ -91,13 +91,9 @@ void* CreatePlatformAuth(App* const app, void* const /*app_impl*/) {
91
91
return auth;
92
92
}
93
93
94
- IdTokenRefreshListener::IdTokenRefreshListener ()
95
- : token_timestamp_(0 ), get_token_semaphore_(1 ) {}
94
+ IdTokenRefreshListener::IdTokenRefreshListener () : token_timestamp_(0 ) {}
96
95
97
- IdTokenRefreshListener::~IdTokenRefreshListener () {
98
- // Wait for get token to complete.
99
- get_token_semaphore_.Wait ();
100
- }
96
+ IdTokenRefreshListener::~IdTokenRefreshListener () {}
101
97
102
98
void IdTokenRefreshListener::OnIdTokenChanged (Auth* auth) {
103
99
// Note: Make sure to always make future_impl.mutex the innermost lock,
@@ -107,30 +103,13 @@ void IdTokenRefreshListener::OnIdTokenChanged(Auth* auth) {
107
103
if (auth->current_user ()) {
108
104
ResetTokenRefreshCounter (auth->auth_data_ );
109
105
110
- if (get_token_semaphore_.TryWait ()) {
111
- // Grab the current token, now that the token has been changed.
112
- // Since the system's token is fairly fresh (since we're in the callback
113
- // from having received it!) this should be a near-instant call, and
114
- // the system should never try to refresh the token. (Since we're not
115
- // asking it to force-refresh)
116
- Future<std::string> token_future = auth->current_user ()->GetTokenInternal (
117
- false , kInternalFn_GetTokenForRefresher );
118
-
119
- token_future.OnCompletion (
120
- [](const Future<std::string>& result, void * ptr) {
121
- auto listener = static_cast <IdTokenRefreshListener*>(ptr);
122
- MutexLock lock (listener->mutex_ );
123
- if (result.status () == kFutureStatusComplete ) {
124
- listener->current_token_ = *result.result ();
125
- listener->token_timestamp_ = internal::GetTimestampEpoch ();
126
- }
127
- listener->get_token_semaphore_ .Post ();
128
- },
129
- this );
130
- // Wait for the future to complete before we exit.
131
- // (Should be fast, since the token listener fired, so it should just
132
- // be cached.)
106
+ // Retrieve id_token from auth_data
107
+ {
108
+ UserView::Reader reader = UserView::GetReader (auth->auth_data_ );
109
+ assert (reader.IsValid ());
110
+ current_token_ = reader->id_token ;
133
111
}
112
+ token_timestamp_ = internal::GetTimestampEpoch ();
134
113
} else {
135
114
current_token_ = " " ;
136
115
}
0 commit comments