diff --git a/frontend/src/ts/modules/app/service/authorization.service.ts b/frontend/src/ts/modules/app/service/authorization.service.ts index 427253bd..110e8b65 100644 --- a/frontend/src/ts/modules/app/service/authorization.service.ts +++ b/frontend/src/ts/modules/app/service/authorization.service.ts @@ -16,6 +16,8 @@ export interface UserSession { @Injectable({providedIn: 'root'}) export class AuthorizationService implements OnDestroy { + private static READ_LS_ATTEMPTS: number = 50; + private session: UserSession; public onSessionUpdate: Subject = new Subject(); @@ -37,9 +39,7 @@ export class AuthorizationService implements OnDestroy { if (parsedObj && parsedObj.traceId) { if (parsedObj.className === 'update' || parsedObj.className === 'processError') { - parsedObj.appNumber = localStorage.getItem(parsedObj.traceId); - localStorage.removeItem(parsedObj.traceId); - this.statusUpdateService.update(parsedObj); + this.updateStatus(parsedObj, 0); } } }); @@ -48,6 +48,22 @@ export class AuthorizationService implements OnDestroy { }) } + private updateStatus(parsedObj: any, count: number): void { + if (count === AuthorizationService.READ_LS_ATTEMPTS) { + return; + } + let appNumber = localStorage.getItem(parsedObj.traceId); + + if (appNumber) { + parsedObj.appNumber = appNumber; + localStorage.removeItem(parsedObj.traceId); + this.statusUpdateService.update(parsedObj); + } + else { + setTimeout(() => this.updateStatus(parsedObj, count++), 100); + } + } + isAuthorized(): boolean { return !!this.session; }