@@ -6,20 +6,30 @@ import timer from './timer.js';
6
6
import { StringMap } from './types.js' ;
7
7
8
8
export async function renewTokensAndStartTimerAsync ( oidc , refreshToken , forceRefresh = false , extras :StringMap = null ) {
9
- const updateTokens = ( tokens ) => { oidc . tokens = tokens ; } ;
10
- const { tokens, status } = await oidc . synchroniseTokensAsync ( refreshToken , 0 , forceRefresh , extras , updateTokens ) ;
11
9
12
- const serviceWorker = await initWorkerAsync ( oidc . configuration , oidc . configurationName ) ;
13
- if ( ! serviceWorker ) {
14
- const session = initSession ( oidc . configurationName , oidc . configuration . storage ) ;
15
- await session . setTokens ( oidc . tokens ) ;
16
- }
10
+ const configuration = oidc . configuration ;
11
+ const lockResourcesName = `${ configuration . client_id } _${ oidc . configurationName } _${ configuration . authority } ` ;
12
+ const tokens = await navigator . locks . request ( lockResourcesName , async ( lock ) => {
13
+ const updateTokens = ( tokens ) => {
14
+ oidc . tokens = tokens ;
15
+ } ;
16
+ const { tokens, status} = await oidc . synchroniseTokensAsync ( refreshToken , 0 , forceRefresh , extras , updateTokens ) ;
17
17
18
- if ( ! oidc . tokens ) {
19
- await oidc . destroyAsync ( status ) ;
20
- return ;
21
- }
18
+ const serviceWorker = await initWorkerAsync ( oidc . configuration , oidc . configurationName ) ;
19
+ if ( ! serviceWorker ) {
20
+ const session = initSession ( oidc . configurationName , oidc . configuration . storage ) ;
21
+ await session . setTokens ( oidc . tokens ) ;
22
+ }
22
23
24
+ if ( ! oidc . tokens ) {
25
+ await oidc . destroyAsync ( status ) ;
26
+ return null ;
27
+ }
28
+ return tokens
29
+ } ) ;
30
+ if ( ! tokens ) {
31
+ return null ;
32
+ }
23
33
if ( oidc . timeoutId ) {
24
34
oidc . timeoutId = autoRenewTokens ( oidc , tokens . refreshToken , oidc . tokens . expiresAt , extras ) ;
25
35
}
0 commit comments