Skip to content

Commit a26c8ab

Browse files
committed
feat(refresh-session): add manual renew
1 parent 35c42eb commit a26c8ab

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

docs/site/angular-auth-oidc-client/docs/documentation/public-events.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ export enum EventTypes {
2626
IdTokenExpired,
2727
SilentRenewStarted,
2828
SilentRenewFailed,
29+
ManualRenewStarted,
30+
ManualRenewFailed,
31+
ManualRenewFinished,
2932
}
3033
```
3134

projects/angular-auth-oidc-client/src/lib/callback/refresh-session.service.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@ import {
88
timer,
99
} from 'rxjs';
1010
import {
11+
catchError,
12+
finalize,
1113
map,
1214
mergeMap,
1315
retryWhen,
1416
switchMap,
1517
take,
18+
tap,
1619
timeout,
1720
} from 'rxjs/operators';
1821
import { AuthStateService } from '../auth-state/auth-state.service';
@@ -24,6 +27,8 @@ import { RefreshSessionIframeService } from '../iframe/refresh-session-iframe.se
2427
import { SilentRenewService } from '../iframe/silent-renew.service';
2528
import { LoggerService } from '../logging/logger.service';
2629
import { LoginResponse } from '../login/login-response';
30+
import { EventTypes } from '../public-events/event-types';
31+
import { PublicEventsService } from '../public-events/public-events.service';
2732
import { StoragePersistenceService } from '../storage/storage-persistence.service';
2833
import { UserService } from '../user-data/user.service';
2934
import { FlowHelper } from '../utils/flowHelper/flow-helper.service';
@@ -39,6 +44,8 @@ export class RefreshSessionService {
3944

4045
private readonly loggerService = inject(LoggerService);
4146

47+
private readonly publicEventsService = inject(PublicEventsService);
48+
4249
private readonly silentRenewService = inject(SilentRenewService);
4350

4451
private readonly authStateService = inject(AuthStateService);
@@ -76,8 +83,19 @@ export class RefreshSessionService {
7683
this.persistCustomParams(extraCustomParams, config);
7784

7885
// Best place ?
86+
this.publicEventsService.fireEvent(EventTypes.ManualRenewStarted);
87+
7988
return this.forceRefreshSession(config, allConfigs, extraCustomParams).pipe(
89+
catchError((error) => {
90+
this.loggerService.logError(config, 'manual renew failed!', error);
91+
this.publicEventsService.fireEvent(EventTypes.ManualRenewFailed, error);
92+
93+
return throwError(() => new Error(error));
94+
}),
8095
finalize(() => this.flowsDataService.resetSilentRenewRunning(config)),
96+
tap(() =>
97+
this.publicEventsService.fireEvent(EventTypes.ManualRenewFinished)
98+
)
8199
);
82100
}
83101

projects/angular-auth-oidc-client/src/lib/public-events/event-types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,7 @@ export enum EventTypes {
1414
IdTokenExpired,
1515
SilentRenewStarted,
1616
SilentRenewFailed,
17+
ManualRenewStarted,
18+
ManualRenewFailed,
19+
ManualRenewFinished,
1720
}

0 commit comments

Comments
 (0)