@@ -91,13 +91,9 @@ void* CreatePlatformAuth(App* const app, void* const /*app_impl*/) {
9191 return auth;
9292}
9393
94- IdTokenRefreshListener::IdTokenRefreshListener ()
95- : token_timestamp_(0 ), get_token_semaphore_(1 ) {}
94+ IdTokenRefreshListener::IdTokenRefreshListener () : token_timestamp_(0 ) {}
9695
97- IdTokenRefreshListener::~IdTokenRefreshListener () {
98- // Wait for get token to complete.
99- get_token_semaphore_.Wait ();
100- }
96+ IdTokenRefreshListener::~IdTokenRefreshListener () {}
10197
10298void IdTokenRefreshListener::OnIdTokenChanged (Auth* auth) {
10399 // Note: Make sure to always make future_impl.mutex the innermost lock,
@@ -107,30 +103,13 @@ void IdTokenRefreshListener::OnIdTokenChanged(Auth* auth) {
107103 if (auth->current_user ()) {
108104 ResetTokenRefreshCounter (auth->auth_data_ );
109105
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 ;
133111 }
112+ token_timestamp_ = internal::GetTimestampEpoch ();
134113 } else {
135114 current_token_ = " " ;
136115 }
0 commit comments