Skip to content

Commit a1cc83c

Browse files
- Add support for OIDC session management error status
1 parent 809da48 commit a1cc83c

File tree

3 files changed

+43
-1
lines changed

3 files changed

+43
-1
lines changed

docs/oidc-client-ts.api.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,8 @@ export class UserManagerEvents extends AccessTokenEvents {
941941
addSilentRenewError(cb: SilentRenewErrorCallback): () => void;
942942
addUserLoaded(cb: UserLoadedCallback): () => void;
943943
addUserSessionChanged(cb: UserSessionChangedCallback): () => void;
944+
// Warning: (ae-forgotten-export) The symbol "UserSessionErrorCallback" needs to be exported by the entry point index.d.ts
945+
addUserSessionError(cb: UserSessionErrorCallback): () => void;
944946
addUserSignedIn(cb: UserSignedInCallback): () => void;
945947
addUserSignedOut(cb: UserSignedOutCallback): () => void;
946948
addUserUnloaded(cb: UserUnloadedCallback): () => void;
@@ -953,12 +955,15 @@ export class UserManagerEvents extends AccessTokenEvents {
953955
// @internal (undocumented)
954956
_raiseUserSessionChanged(): void;
955957
// @internal (undocumented)
958+
_raiseUserSessionError(): void;
959+
// @internal (undocumented)
956960
_raiseUserSignedIn(): void;
957961
// @internal (undocumented)
958962
_raiseUserSignedOut(): void;
959963
removeSilentRenewError(cb: SilentRenewErrorCallback): void;
960964
removeUserLoaded(cb: UserLoadedCallback): void;
961965
removeUserSessionChanged(cb: UserSessionChangedCallback): void;
966+
removeUserSessionError(cb: UserSessionErrorCallback): void;
962967
removeUserSignedIn(cb: UserSignedInCallback): void;
963968
removeUserSignedOut(cb: UserSignedOutCallback): void;
964969
removeUserUnloaded(cb: UserUnloadedCallback): void;

src/UserManagerEvents.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,19 @@ describe("UserManagerEvents", () => {
5959
// assert
6060
expect(e).toEqual(expected);
6161
});
62+
63+
it("should pass error to callback", () => {
64+
// arrange
65+
const e: Error | null = null;
66+
const cb = jest.fn();
67+
const expected = new Error("boom");
68+
69+
// act
70+
subject.addUserSessionError(cb);
71+
subject._raiseUserSessionError();
72+
73+
// assert
74+
expect(e).toEqual(expected);
75+
});
6276
});
6377
});

src/UserManagerEvents.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ export type UserSignedOutCallback = () => Promise<void> | void;
3030
* @public
3131
*/
3232
export type UserSessionChangedCallback = () => Promise<void> | void;
33-
33+
/**
34+
* @public
35+
*/
36+
export type UserSessionErrorCallback = () => Promise<void> | void;
3437
/**
3538
* @public
3639
*/
@@ -43,6 +46,7 @@ export class UserManagerEvents extends AccessTokenEvents {
4346
private readonly _userSignedIn = new Event<[]>("User signed in");
4447
private readonly _userSignedOut = new Event<[]>("User signed out");
4548
private readonly _userSessionChanged = new Event<[]>("User session changed");
49+
private readonly _userSessionError = new Event<[]>("User session error");
4650

4751
public constructor(settings: UserManagerSettingsStore) {
4852
super({ expiringNotificationTimeInSeconds: settings.accessTokenExpiringNotificationTimeInSeconds });
@@ -163,4 +167,23 @@ export class UserManagerEvents extends AccessTokenEvents {
163167
public _raiseUserSessionChanged(): void {
164168
this._userSessionChanged.raise();
165169
}
170+
/**
171+
* Add callback: Raised when the user session changed (when `monitorSession` is set).
172+
* @see {@link UserManagerSettings.monitorSession}
173+
*/
174+
public addUserSessionError(cb: UserSessionErrorCallback): () => void {
175+
return this._userSessionError.addHandler(cb);
176+
}
177+
/**
178+
* Remove callback: Raised when the user session changed (when `monitorSession` is set).
179+
*/
180+
public removeUserSessionError(cb: UserSessionErrorCallback): void {
181+
this._userSessionError.removeHandler(cb);
182+
}
183+
/**
184+
* @internal
185+
*/
186+
public _raiseUserSessionError(): void {
187+
this._userSessionError.raise();
188+
}
166189
}

0 commit comments

Comments
 (0)