diff --git a/npm/ng-packs/packages/core/src/lib/core.module.ts b/npm/ng-packs/packages/core/src/lib/core.module.ts index 9637ad6847..eb475074ce 100644 --- a/npm/ng-packs/packages/core/src/lib/core.module.ts +++ b/npm/ng-packs/packages/core/src/lib/core.module.ts @@ -43,6 +43,7 @@ import { AuthErrorFilterService } from './abstracts'; import { DYNAMIC_LAYOUTS_TOKEN } from "./tokens/dynamic-layout.token"; import { DEFAULT_DYNAMIC_LAYOUTS } from "./constants"; import { AbpTitleStrategy } from './services/title-strategy.service'; +import { LocalStorageListenerService } from './services/local-storage-listener.service'; const standaloneDirectives = [ @@ -164,6 +165,12 @@ export class CoreModule { deps: [LocalizationService], useFactory: noop, }, + { + provide: APP_INITIALIZER, + multi: true, + deps: [LocalStorageListenerService], + useFactory: noop, + }, { provide: APP_INITIALIZER, multi: true, diff --git a/npm/ng-packs/packages/core/src/lib/services/index.ts b/npm/ng-packs/packages/core/src/lib/services/index.ts index 5d3e9d6d1e..a20ae907ae 100644 --- a/npm/ng-packs/packages/core/src/lib/services/index.ts +++ b/npm/ng-packs/packages/core/src/lib/services/index.ts @@ -20,4 +20,5 @@ export * from './subscription.service'; export * from './track-by.service'; export * from './local-storage.service'; export * from './window.service'; -export * from './internet-connection-service' \ No newline at end of file +export * from './internet-connection-service'; +export * from './local-storage-listener.service'; diff --git a/npm/ng-packs/packages/core/src/lib/services/local-storage-listener.service.ts b/npm/ng-packs/packages/core/src/lib/services/local-storage-listener.service.ts new file mode 100644 index 0000000000..67231f5e85 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/local-storage-listener.service.ts @@ -0,0 +1,17 @@ +import { DOCUMENT } from '@angular/common'; +import { Injectable, inject } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class LocalStorageListenerService { + protected readonly window = inject(DOCUMENT).defaultView; + + constructor() { + this.window.addEventListener('storage', event => { + if (event.key === 'access_token' && event.newValue === null) { + this.window.location.reload(); + } + }); + } +}