@@ -123,13 +123,7 @@ export class OAuthService
123123 }
124124
125125 private restartRefreshTimerIfStillLoggedIn ( ) : void {
126- if ( this . hasValidAccessToken ( ) ) {
127- this . setupAccessTokenTimer ( ) ;
128- }
129-
130- if ( this . hasValidIdToken ( ) ) {
131- this . setupIdTokenTimer ( ) ;
132- }
126+ this . setupExpirationTimers ( ) ;
133127 }
134128
135129 private setupSessionCheck ( ) {
@@ -218,16 +212,23 @@ export class OAuthService
218212
219213 this . clearAccessTokenTimer ( ) ;
220214 this . clearIdTokenTimer ( ) ;
215+ this . setupExpirationTimers ( ) ;
221216
222- if ( this . hasValidAccessToken ( ) ) {
223- this . setupAccessTokenTimer ( ) ;
224- }
217+ } ) ;
218+ }
225219
226- if ( this . hasValidIdToken ( ) ) {
227- this . setupIdTokenTimer ( ) ;
228- }
220+ private setupExpirationTimers ( ) : void {
221+ let idTokenExp = this . getIdTokenExpiration ( ) || Number . MAX_VALUE ;
222+ let accessTokenExp = this . getAccessTokenExpiration ( ) || Number . MAX_VALUE ;
223+ let useAccessTokenExp = accessTokenExp <= idTokenExp ;
229224
230- } ) ;
225+ if ( this . hasValidAccessToken ( ) && useAccessTokenExp ) {
226+ this . setupAccessTokenTimer ( ) ;
227+ }
228+
229+ if ( this . hasValidIdToken ( ) && ! useAccessTokenExp ) {
230+ this . setupIdTokenTimer ( ) ;
231+ }
231232 }
232233
233234 private setupAccessTokenTimer ( ) : void {
@@ -1285,6 +1286,7 @@ export class OAuthService
12851286 * as milliseconds since 1970.
12861287 */
12871288 public getAccessTokenExpiration ( ) : number {
1289+ if ( ! this . _storage . getItem ( 'expires_at' ) ) return null ;
12881290 return parseInt ( this . _storage . getItem ( 'expires_at' ) , 10 ) ;
12891291 }
12901292
@@ -1302,6 +1304,9 @@ export class OAuthService
13021304 * as milliseconds since 1970.
13031305 */
13041306 public getIdTokenExpiration ( ) : number {
1307+
1308+ if ( ! this . _storage . getItem ( 'id_token_expires_at' ) ) return null ;
1309+
13051310 return parseInt ( this . _storage . getItem ( 'id_token_expires_at' ) , 10 ) ;
13061311 }
13071312
0 commit comments