@bnsights/bbsf-utilities 1.2.8 → 1.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -128,6 +128,19 @@ See [XMLBUILDER2_FIX.md](./XMLBUILDER2_FIX.md) for technical details.
128
128
 
129
129
  # Change Log
130
130
 
131
+ ## 1.2.10 / 31-03-2026
132
+
133
+ ===================
134
+
135
+ - Update `FileLoaderService.preloadAll()` to apply `environment`, `configurations`, and translation bundles directly from the preload response returned by the latest `Bnsights.Core` libraries.
136
+ - Mark `loadEnvironment()` and `preloadTranslations()` as deprecated, advise consumers to use `preloadAll()` instead, and install the latest version of `Bnsights.Core` libraries. `loadLanguage()` remains supported.
137
+
138
+ ## 1.2.9 / 30-03-2026
139
+
140
+ ===================
141
+
142
+ - Read baseURL from Cookies for Preload endpoint
143
+
131
144
  ## 1.2.8 / 29-03-2026
132
145
 
133
146
  ===================
@@ -1042,31 +1042,80 @@ class FileLoaderService {
1042
1042
  this.http = http;
1043
1043
  this.availableLanguages = ['en', 'ar']; // Add more languages as needed
1044
1044
  this.loadedLanguages = new Set();
1045
+ this.warnedDeprecatedMethods = new Set();
1045
1046
  this.translate.addLangs(this.availableLanguages);
1046
1047
  }
1048
+ getCookie(name) {
1049
+ const normalizedName = (name || '').trim();
1050
+ if (!normalizedName) {
1051
+ return null;
1052
+ }
1053
+ const match = document.cookie.match(new RegExp(`(^| )${normalizedName}=([^;]+)`));
1054
+ return match ? decodeURIComponent(match[2]) : null;
1055
+ }
1056
+ applyPreloadData(data, defaultLang) {
1057
+ if (data?.environment != null && typeof data.environment === 'object') {
1058
+ window.Environment = data.environment;
1059
+ Object.assign(environment, data.environment);
1060
+ }
1061
+ ConfigurationService.JsonData = data?.configurations;
1062
+ for (const lang of this.availableLanguages) {
1063
+ const bundle = data?.translations?.[lang];
1064
+ if (bundle != null && typeof bundle === 'object') {
1065
+ this.translate.setTranslation(lang, bundle, true);
1066
+ this.loadedLanguages.add(lang);
1067
+ }
1068
+ }
1069
+ this.translate.use(defaultLang);
1070
+ }
1071
+ async loadPreloadData(apiBaseUrl = '') {
1072
+ return await lastValueFrom(this.http.get(`${apiBaseUrl}/api/Preload`));
1073
+ }
1074
+ warnDeprecatedMethod(methodName) {
1075
+ if (this.warnedDeprecatedMethods.has(methodName)) {
1076
+ return;
1077
+ }
1078
+ this.warnedDeprecatedMethods.add(methodName);
1079
+ console.warn(`[FileLoaderService] ${methodName}() is deprecated. Use preloadAll() instead and install the latest version of Bnsights.Core libraries.`);
1080
+ }
1047
1081
  async preloadAll() {
1048
1082
  const defaultLang = this.getDefaultLanguage();
1083
+ try {
1084
+ const cookieApiUrl = this.getCookie('BBSF_ApiUrl') || '';
1085
+ if (cookieApiUrl) {
1086
+ const data = await this.loadPreloadData(cookieApiUrl);
1087
+ this.applyPreloadData(data, defaultLang);
1088
+ return;
1089
+ }
1090
+ }
1091
+ catch (error) {
1092
+ console.warn('Cookie-based preload failed, falling back to same-origin preload.', error);
1093
+ }
1094
+ try {
1095
+ const data = await this.loadPreloadData();
1096
+ this.applyPreloadData(data, defaultLang);
1097
+ return;
1098
+ }
1099
+ catch (error) {
1100
+ console.warn('Same-origin preload failed, falling back to environment.json.', error);
1101
+ }
1049
1102
  try {
1050
1103
  const envData = await lastValueFrom(this.http.get('/assets/config/environment.json'));
1051
1104
  window.Environment = envData;
1052
1105
  Object.assign(environment, envData);
1053
1106
  const baseUrl = window.Environment?.BBSF_ApiUrl || '';
1054
- const data = await lastValueFrom(this.http.get(`${baseUrl}/api/Preload`));
1055
- ConfigurationService.JsonData = data.configurations;
1056
- for (const lang of this.availableLanguages) {
1057
- const bundle = data.translations?.[lang];
1058
- if (bundle != null && typeof bundle === 'object') {
1059
- this.translate.setTranslation(lang, bundle, true);
1060
- this.loadedLanguages.add(lang);
1061
- }
1062
- }
1063
- this.translate.use(defaultLang);
1107
+ const data = await this.loadPreloadData(baseUrl);
1108
+ this.applyPreloadData(data, defaultLang);
1064
1109
  }
1065
1110
  catch (error) {
1066
1111
  console.error('Error during preloadAll:', error);
1067
1112
  }
1068
1113
  }
1114
+ /**
1115
+ * @deprecated Use preloadAll() instead and install the latest version of Bnsights.Core libraries.
1116
+ */
1069
1117
  loadEnvironment() {
1118
+ this.warnDeprecatedMethod('loadEnvironment');
1070
1119
  return new Promise((resolve, reject) => {
1071
1120
  const script = document.createElement('script');
1072
1121
  script.src = '/assets/config/environment.js';
@@ -1083,10 +1132,6 @@ class FileLoaderService {
1083
1132
  document.head.insertBefore(script, document.head.firstChild);
1084
1133
  });
1085
1134
  }
1086
- async loadConfigurations() {
1087
- const data = await lastValueFrom(this.http.get('./assets/config/configurations.json'));
1088
- ConfigurationService.JsonData = data;
1089
- }
1090
1135
  getDefaultLanguage() {
1091
1136
  const lang = localStorage.getItem('language');
1092
1137
  if (lang && this.availableLanguages.includes(lang)) {
@@ -1109,7 +1154,11 @@ class FileLoaderService {
1109
1154
  this.translate.setTranslation(normalizedLang, translations, true);
1110
1155
  this.loadedLanguages.add(normalizedLang);
1111
1156
  }
1157
+ /**
1158
+ * @deprecated Use preloadAll() instead and install the latest version of Bnsights.Core libraries.
1159
+ */
1112
1160
  async preloadTranslations() {
1161
+ this.warnDeprecatedMethod('preloadTranslations');
1113
1162
  try {
1114
1163
  const requests = this.availableLanguages.map(async (lang) => {
1115
1164
  const translations = await lastValueFrom(this.http.get(`/assets/i18n/${lang}.json`));
@@ -1 +1 @@
1
- {"version":3,"file":"bnsights-bbsf-utilities.mjs","sources":["../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/enums/authentication-modes-enums.ts","../../../projects/bbsf-utilities/src/lib/shared/services/appearance-configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/area-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/error-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/request-options-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/speech-language.ts","../../../projects/bbsf-utilities/src/lib/shared/services/control-validation.service.ts","../../../projects/bbsf-utilities/src/lib/shared/config/environment.ts","../../../projects/bbsf-utilities/src/lib/shared/services/environment.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/master-layout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/request-handler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/styles-bundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translation-resolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/language.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/speech-recognition.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/preload.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/service-worker-helper.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["export class User {\r\n\r\n token_type: string;\r\n access_token: string;\r\n profile: any;\r\n expires_at: any\r\n}\r\n","export enum AuthenticationModes {\r\n Forms = 'Forms',\r\n UAEPass = \"UAEPass\",\r\n WindowsAD = \"WindowsAD\",\r\n AzureAD = \"AzureAD\",\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ConfigurationService } from \".\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n\r\n constructor(private configService: ConfigurationService) {\r\n }\r\n\r\n getLayoutTheme() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Theme');\r\n }\r\n\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n \r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable, Injector, OnInit } from \"@angular/core\";\r\nimport { AuthService } from \"../authentication\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n\r\n static JsonData: any[] = [];\r\n private currentUserProfile: any;\r\n private _authService: AuthService;\r\n\r\n constructor(private httpClient: HttpClient, private injector: Injector) {\r\n }\r\n\r\n private get authService(): AuthService {\r\n if (!this._authService) {\r\n this._authService = this.injector.get(AuthService);\r\n }\r\n return this._authService;\r\n }\r\n\r\n getConfigurationValue(key: string) {\r\n this.currentUserProfile = this.authService.getCurrentUser()?.profile;\r\n var selectedKey = ConfigurationService.JsonData[key];\r\n if (selectedKey && typeof selectedKey === 'object') {\r\n if (selectedKey.OrganizationConfigurations) {\r\n if (this.currentUserProfile && this.currentUserProfile.organizationGUID_ID) {\r\n let organizationValue = Array(selectedKey.OrganizationConfigurations).find(o => o.OrganizationID_GUID == this.currentUserProfile.organizationGUID_ID);\r\n return organizationValue;\r\n }\r\n } else {\r\n return selectedKey.Value;\r\n }\r\n } else {\r\n return selectedKey;\r\n }\r\n }\r\n\r\n}","export class AreaModel {\r\n permissionSetID: number\r\n areaUrl: string;\r\n}\r\n","export class ErrorModel {\r\n field: string;\r\n controlName: string;\r\n message: string;\r\n}\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport class RequestOptionsModel {\r\n disableSuccessNotification: boolean = false;\r\n disableBlockUI: boolean = false;\r\n disableErrorHandler: boolean = false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType: any = \"\"\r\n formGroup: FormGroup = null\r\n castResponsetoClass: boolean = true;\r\n}\r\n","export class LanguageDTO {\r\n name: string;\r\n prefix: string;\r\n dialect: string;\r\n englishName: string;\r\n arabicName: string;\r\n nativeName: string;\r\n detected: string;\r\n searching: string;\r\n elevating: string;\r\n translating: string;\r\n generatingAnswersForYou: string;\r\n isRTL: boolean;\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ErrorModel, RequestOptionsModel } from '../models';\r\nimport { UtilityService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor(private utilityService: UtilityService) {\r\n }\r\n\r\n isCreatedBefor = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n showGlobalError(errorMessage?: string | string[], formId?: string, deleteOld?: boolean) {\r\n let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger')\r\n if (globalErorrElement.length > 0) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n // tslint:disable-next-line: prefer-const\r\n if (!formId)\r\n formId = \"currentForm\"\r\n var object = document.getElementById(formId);\r\n const tagName = 'div';\r\n // tslint:disable-next-line: prefer-const\r\n var elementToAppend = document.createElement(tagName); // Your tag name here\r\n let message: string | string[] = \"\";\r\n\r\n if (!errorMessage || (typeof errorMessage == \"string\")) {\r\n if (localStorage.getItem('language') == \"ar\")\r\n message = errorMessage ? errorMessage : \"لديك بعص الأخطاء . من فضلك قم بالمراجعه \";\r\n else\r\n message = errorMessage ? errorMessage : \"You have some validation errors. Please check below\"\r\n elementToAppend.innerHTML = \"<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>\" + message + \"</li></ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n else {\r\n let ul = document.createElement(\"ul\");\r\n elementToAppend.appendChild(ul);\r\n\r\n for (const iterator of errorMessage) {\r\n let li = document.createElement(\"li\");\r\n li.innerHTML = iterator;\r\n ul.appendChild(li);\r\n }\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n this.isCreatedBefor = true;\r\n }\r\n\r\n removeGlobalError() {\r\n const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < removedList.length; index++) {\r\n const element = removedList[index];\r\n element.remove();\r\n }\r\n this.isCreatedBefor = false;\r\n }\r\n\r\n showInputErro(errors: any) {\r\n // show error on top of form \r\n this.showGlobalError();\r\n // remove old error from server\r\n this.removeElementsByClass('errortemplet');\r\n // Looping in error Object\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];\r\n if ((input.attributes['ng-reflect-name'].value as string) === key) {\r\n this.removeElementsByClass('erroclass-' + key);\r\n const tagName = 'p'\r\n const elementToAppend = document.createElement(tagName); // Your tag name here\r\n elementToAppend.innerHTML = iterator;\r\n elementToAppend.style.color = 'red'\r\n elementToAppend.className += 'errortemplet erroclass-' + key;\r\n const elementToappen = elementToAppend.cloneNode(true);\r\n input.parentNode.insertBefore(elementToappen, input.lastChild);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeElementsByClass(className) {\r\n const elements = document.getElementsByClassName(className);\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n renderServerErrors(form: FormGroup, err: HttpErrorResponse, requestOptions: RequestOptionsModel, formId?: string) {\r\n if (err.error == null) {\r\n return;\r\n }\r\n let errorsArray: string[] = [];\r\n\r\n this.requestOptions = requestOptions;\r\n\r\n if (err.error.validation_errors) {\r\n err.error.validation_errors.forEach((element: ErrorModel) => {\r\n let fieldName = element.field;\r\n let controlName = element.controlName;\r\n let message = element.message;\r\n if (form == null) {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n this.showGlobalError(null, formId);\r\n }\r\n });\r\n\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\r\n }\r\n }\r\n\r\n private hasControlName(form: FormGroup, controlName: string): boolean {\r\n let control = form.get(controlName);\r\n return control != null;\r\n }\r\n\r\n private setFieldError(form: FormGroup, controlName: string, fieldName: string, message: string) {\r\n let control = null\r\n\r\n if (controlName)\r\n control = this.getControlFormNameByFieldName(form, controlName);\r\n else\r\n control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);\r\n\r\n let errors = { \"errorMassage\": message };\r\n let fieldNameArray = fieldName.split('.');\r\n if (fieldNameArray.length >= 1) {\r\n switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {\r\n case \"english\":\r\n let englishControl = control.get(\"English\")\r\n englishControl.setErrors(errors);\r\n break;\r\n case \"arabic\":\r\n let arabicControl = control.get(\"Arabic\")\r\n arabicControl.setErrors(errors);\r\n break;\r\n default:\r\n control.setErrors(errors);\r\n }\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`)\r\n }\r\n }\r\n\r\n private getControlFormNameByFieldName(form: FormGroup, fieldName: string) {\r\n const formControls = form.controls;\r\n let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());\r\n let control = form.get(controlName);\r\n return control;\r\n }\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({}, (window as any).Environment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../config/environment';\r\nimport { AreaModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n static areaList: AreaModel[] = [];\r\n\r\n static AreaList: AreaModel[] = [];\r\n\r\n getEnvironmentObject() {\r\n return environment;\r\n }\r\n\r\n getBaseUrl() {\r\n return environment[\"BBSF_BaseURL\"];\r\n }\r\n\r\n getApiUrl() {\r\n return environment[\"BBSF_ApiUrl\"];\r\n }\r\n\r\n getProductionMode() {\r\n return environment[\"BBSF_IsProduction\"] as boolean;\r\n }\r\n\r\n getDefaultLanguage() {\r\n return environment[\"BBSF_DefaultLanguage\"] as string;\r\n }\r\n\r\n getIdentityServerUrl() {\r\n return environment[\"BBSF_IdentityServerUrl\"];\r\n }\r\n\r\n getIsIdentityServerExternal() {\r\n return environment[\"BBSF_IsExternalIdentityServer\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientId() {\r\n return environment[\"BBSF_IdentityServer_Client_Id\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n return environment[\"BBSF_IdentityServer_Client_Secret\"] as string;\r\n }\r\n\r\n getBBSFAuthenticationMode() {\r\n let Mode = environment[\"BBSF_AuthenticationMode\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassBaseUrl() {\r\n let Mode = environment[\"UAEPass_BaseUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassClientID() {\r\n let Mode = environment[\"UAEPass_ClientID\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassRedirectUrl() {\r\n let Mode = environment[\"UAEPass_RedirectUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassAuthorizationEndPoint() {\r\n let Mode = environment[\"UAEPass_AuthorizationEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassRedirectLogoutUrl() {\r\n let Mode = environment[\"UAEPass_RedirectLogoutUrl\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassLogoutEndPoint() {\r\n let Mode = environment[\"UAEPass_LogoutEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n\r\n getIsEnableWindowsAuthentication() {\r\n let Mode = environment[\"BBSF_Enable_WindowsAuthentication\"] as string;\r\n return Mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getAllowMultiTenancy() {\r\n let mode = environment[\"BBSF_AllowMultiTenancy\"] as string;\r\n return mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getCookieName() {\r\n let cookieName = environment[\"BBSF_CookieName\"];\r\n return cookieName;\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\r\nimport { FileLoaderService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\ninterface UpdateUserInfoResponse {\r\n token: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService implements OnDestroy {\r\n apiUrl = '/api/Home/';\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,\r\n private stylesBundleService: StylesBundleService, private translate: TranslateService,\r\n private fileLoaderService: FileLoaderService,\r\n ) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (!lang?.trim()) {\r\n return;\r\n }\r\n\r\n if (!this.authService.isAuthenticated()) {\r\n this.router.navigate(['/Admin/account/login']);\r\n return;\r\n }\r\n\r\n this.changeLanguage(lang).pipe(\r\n switchMap(() => this.updateUserInfo()),\r\n tap((userInfo) => {\r\n if (!userInfo?.token) {\r\n return;\r\n }\r\n\r\n this.authService.handleAccessToken(userInfo.token).then(async () => {\r\n this.stylesBundleService.loadThemes(lang, bundleEnglishName, bundleArabicName);\r\n localStorage.setItem('language', lang);\r\n try {\r\n await this.fileLoaderService.loadLanguage(lang);\r\n } catch (e: any) {\r\n this.logError(e?.message || `loadLanguage failed for ${lang}`).pipe(take(1)).subscribe();\r\n }\r\n this.translate.use(lang);\r\n });\r\n }),\r\n takeUntil(this.destroy$)\r\n ).subscribe({\r\n error: (error) => {\r\n this.logError(error?.message || 'switchLang failed').pipe(take(1)).subscribe();\r\n }\r\n });\r\n }\r\n\r\n reloadComponent() {\r\n const currentUrl = this.router.url;\r\n const previousShouldReuseRoute = this.router.routeReuseStrategy.shouldReuseRoute;\r\n const previousOnSameUrlNavigation = this.router.onSameUrlNavigation;\r\n\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]).finally(() => {\r\n this.router.routeReuseStrategy.shouldReuseRoute = previousShouldReuseRoute;\r\n this.router.onSameUrlNavigation = previousOnSameUrlNavigation;\r\n });\r\n }\r\n\r\n private changeLanguage(key: string): Observable<unknown> {\r\n const profile = this.authService.getCurrentUserProfile();\r\n if (!profile?.id) {\r\n return this.logError('changeLanguage failed: missing user profile id');\r\n }\r\n\r\n let params = new HttpParams();\r\n params = params.append('UserId', profile.id);\r\n params = params.append('LanguageKey', key);\r\n return this.http.post(this.apiUrl + 'UpdateLanguage', null, null, params);\r\n }\r\n\r\n logError(error: string) {\r\n let params = new HttpParams();\r\n params = params.append('error', error);\r\n return this.http.post(this.apiUrl + 'LogError', null, null, params);\r\n }\r\n\r\n private updateUserInfo(): Observable<UpdateUserInfoResponse> {\r\n return this.http.get<UpdateUserInfoResponse>(this.apiUrl + 'UpdateUserInfo', null, null);\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n if (!permissionSetID?.trim()) {\r\n return;\r\n }\r\n\r\n this.updateRole(permissionSetID).pipe(\r\n switchMap(() => this.updateUserInfo()),\r\n tap((userInfo) => {\r\n if (userInfo?.token) {\r\n this.authService.handleAccessToken(userInfo.token);\r\n }\r\n }),\r\n takeUntil(this.destroy$)\r\n ).subscribe({\r\n error: (error) => {\r\n this.logError(error?.message || 'switchRole failed').pipe(take(1)).subscribe();\r\n }\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string): Observable<unknown> {\r\n const profile = this.authService.getCurrentUserProfile();\r\n if (!profile?.id) {\r\n return this.logError('updateRole failed: missing user profile id');\r\n }\r\n\r\n let params = new HttpParams();\r\n params = params.append('UserId', profile.id);\r\n params = params.append('RoleID', permissionSetID);\r\n return this.http.post(this.apiUrl + 'SwitchRole', null, null, params);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService, EnvironmentService, UtilityService } from \".\";\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { RequestOptionsModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestHandlerService implements OnDestroy {\r\n\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n private router = inject(Router);\r\n constructor(\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private environmentService: EnvironmentService,\r\n private utilityService: UtilityService,\r\n private bbsfTranslateService: BBSFTranslateService\r\n ) {\r\n //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor\r\n this.bbsfTranslateService.onLangChange.subscribe((event) => {\r\n if (this.currentLanguage != event.lang) {\r\n this.currentLanguage = event.lang;\r\n }\r\n });\r\n }\r\n\r\n // Function to check if the internet connection is available\r\n private isOnline(): boolean {\r\n return navigator.onLine || !this.environmentService.getProductionMode();\r\n }\r\n\r\n // ...\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: errorCode });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n ) as Observable<T>;\r\n }\r\n\r\n post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n delete<T>(Url: string, deletedId: string, requestOptions?: RequestOptionsModel, responseType?: new () => T, params?: HttpParams): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.delete<T>(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n put<T>(Url: string, model?: any, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n patch<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n\r\n return this.http.patch<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n\r\n Upload<T>(Url: string, model?: any, requestOptions?: RequestOptionsModel): Observable<any> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeadersUpdated();\r\n return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, reportProgress: true, observe: 'events' }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n public destroyHandler(): void {\r\n this.onDestroy$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"clearInterval\");\r\n this.destroyHandler();\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n var isEnglish = this.utilityService.getCurrentLanguage() == \"en\";\r\n if (err.error instanceof ErrorEvent) {\r\n this.utilityService.notifyErrorMessage();\r\n }\r\n else {\r\n if (err.status == 400)\r\n throwError(err);//error 400 is thrown to be catch by the Form component to handle Fluent validation errors\r\n else if (err.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"]);\r\n else if (err.status == 403)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Sorry, You're not authorized to access this action\" : \"عذرا ليس لديك الصلاحيه لهذا الطلب\");\r\n else if (err.status == 510)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\");\r\n else if (err.status == 515)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else if (err.status == 504)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else {\r\n console.log(`error message is: ${err.error ? err.error.Message : err.message}`);\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"ErrorMassage\"));\r\n }\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n getHeaders() {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true'\r\n });\r\n }\r\n getHeadersUpdated() {\r\n return new HttpHeaders({\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true',\r\n 'Video-Upload': 'true',\r\n 'Image-Upload': 'true',\r\n });\r\n\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BBSFTranslateService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StylesBundleService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document, private translateService: BBSFTranslateService) { }\r\n\r\n loadThemes(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (lang == \"ar\") {\r\n this.loadStyleBundle(bundleArabicName.toString());\r\n document.querySelector('html').setAttribute(\"b-lang\", \"ar\"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString());\r\n document.querySelector('html').setAttribute(\"b-lang\", \"en\");\r\n document.querySelector('html').setAttribute(\"dir\", \"ltr\");\r\n }\r\n\r\n }\r\n\r\n loadThemesColor(theme: string, bundleDarkName: string, bundleLightName: string) {\r\n if (theme == \"Light\")\r\n this.loadStyleBundle(bundleLightName.toString());\r\n else\r\n this.loadStyleBundle(bundleDarkName.toString());\r\n }\r\n\r\n private loadStyleBundle(styleName: string): void {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n let shouldRemoveOld = false;\r\n\r\n if (themeLink) {\r\n // ✅ Check if current CSS already loaded (by exact filename)\r\n const currentFileName = this.getFileName(themeLink.href);\r\n const requestedFileName = this.getFileName(styleName);\r\n\r\n if (currentFileName === requestedFileName) {\r\n return; // Same CSS already loaded\r\n } else {\r\n shouldRemoveOld = true; // Mark for removal after new CSS is added\r\n }\r\n }\r\n\r\n // ✅ Add new CSS first (prevents FOUC)\r\n const style = this.document.createElement('link');\r\n style.id = 'client-theme';\r\n style.rel = 'stylesheet';\r\n style.href = `${styleName}`;\r\n head.appendChild(style);\r\n\r\n // ✅ Remove old CSS after new one is added (smooth transition)\r\n if (shouldRemoveOld && themeLink) {\r\n themeLink.remove();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Extract filename from full path\r\n * @param path Full path or just filename\r\n * @returns The filename only\r\n */\r\n private getFileName(path: string): string {\r\n // Extract just the filename from full path\r\n const parts = path.split('/');\r\n return parts[parts.length - 1];\r\n }\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BBSFTranslateService extends TranslateService {\r\n}","import { inject } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { BBSFTranslateService } from \".\";\r\n\r\nexport const TranslationResolverService: ResolveFn<any> = () => {\r\n let translateService = inject(BBSFTranslateService);\r\n return translateService.getTranslation(translateService.currentLang);\r\n};","import { Injectable, Injector } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BBSFTranslateService, EnvironmentService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private environmentService: EnvironmentService, private injector: Injector) {\r\n\r\n }\r\n\r\n getResourceValue(Key: string): string { \r\n let ResourceValue = this.translator.instant(Key)\r\n return ResourceValue;\r\n }\r\n\r\n getCurrentLanguage() {\r\n let currentLanguage = this.environmentService.getDefaultLanguage();\r\n let lang = localStorage.getItem('language');\r\n if (lang)\r\n currentLanguage = lang;\r\n else\r\n localStorage.setItem('language', currentLanguage);\r\n return currentLanguage;\r\n }\r\n\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate: string;\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"ErrorMessage\");\r\n let titleTemplate = this.getResourceValue(\"Error\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"WarningMessage\");\r\n let titleTemplate = this.getResourceValue(\"Warning\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { RequestHandlerService } from \"./request-handler.service\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { tap, shareReplay, take } from \"rxjs/operators\";\r\nimport { LanguageDTO } from \"../models\";\r\n\r\n/**\r\n * Language service with internal caching\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LanguageService {\r\n apiUrl = '/api/Language/';\r\n private _languages: LanguageDTO[] = [];\r\n \r\n private isLoading = false;\r\n private isLoaded = false;\r\n private loadRequest$: Observable<LanguageDTO[]> | null = null;\r\n\r\n constructor(private http: RequestHandlerService) {\r\n }\r\n\r\n /** Pure getter - no side effects */\r\n get languages(): LanguageDTO[] {\r\n return this._languages;\r\n }\r\n\r\n \r\n /** Internal method - loads languages from API (race-condition safe) */\r\n private loadLanguages(): void {\r\n if (this.isLoaded || this.isLoading) return; // Sync guard prevents race condition\r\n \r\n this.isLoading = true; // Set immediately to block concurrent calls\r\n\r\n this.loadRequest$ = this.http.get<LanguageDTO[]>(this.apiUrl + 'GetAll', null, null).pipe(\r\n tap((languages: LanguageDTO[]) => {\r\n this._languages = languages;\r\n this.isLoaded = true;\r\n this.isLoading = false;\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n // take(1) ensures auto-unsubscribe after completion\r\n this.loadRequest$.pipe(take(1)).subscribe({\r\n error: (err) => {\r\n this.isLoading = false;\r\n this.loadRequest$ = null;\r\n }\r\n });\r\n }\r\n\r\n /** Get languages as Observable - triggers load if not loaded */\r\n getLanguages(): Observable<LanguageDTO[]> {\r\n if (this.isLoaded) {\r\n return of(this._languages);\r\n }\r\n\r\n if (!this.isLoading) {\r\n this.loadLanguages();\r\n }\r\n\r\n return this.loadRequest$ ?? of(this._languages);\r\n }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpeechRecognitionService {\r\n recognition: any;\r\n isListening = false;\r\n isSupported = false;\r\n language: string = 'en-US';\r\n\r\n constructor(private zone: NgZone,private utilityService:UtilityService) {\r\n const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (SpeechRecognition) {\r\n this.recognition = new SpeechRecognition();\r\n this.recognition.continuous = true;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n this.isSupported = true;\r\n }\r\n }\r\n\r\n startListening(language: string = this.language): Observable<string> {\r\n if (!this.isSupported) {\r\n return throwError(() => new Error('Web Speech API is not supported in this browser.'));\r\n }\r\n\r\n return new Observable(observer => {\r\n this.isListening = true;\r\n this.recognition.lang = language;\r\n this.recognition.start();\r\n\r\n this.recognition.onresult = (event: any) => {\r\n this.zone.run(() => {\r\n const transcript = event.results[event.results.length - 1][0].transcript;\r\n observer.next(transcript);\r\n });\r\n };\r\n\r\n this.recognition.onspeechend = () => {\r\n this.stopListening();\r\n };\r\n\r\n this.recognition.onerror = (event: any) => {\r\n this.zone.run(() => {\r\n if (event.error === 'not-allowed') {\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"MicAccessDenied\"));\r\n observer.error('Microphone access denied by the user.');\r\n } else {\r\n observer.error(event.error);\r\n }\r\n });\r\n };\r\n\r\n this.recognition.onend = () => {\r\n this.zone.run(() => {\r\n if (this.isListening) {\r\n this.recognition.start(); // Automatically restart\r\n } else {\r\n observer.complete();\r\n }\r\n });\r\n };\r\n });\r\n }\r\n\r\n stopListening() {\r\n if (this.isSupported) {\r\n this.isListening = false;\r\n this.recognition.stop();\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { environment } from '../config/environment';\r\nimport { ConfigurationService } from './configuration.service';\r\n\r\ndeclare const window: any;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileLoaderService {\r\n private availableLanguages = ['en', 'ar']; // Add more languages as needed\r\n private loadedLanguages = new Set<string>();\r\n // environment:any;\r\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\r\n this.translate.addLangs(this.availableLanguages);\r\n }\r\n\r\n async preloadAll(): Promise<void> {\r\n const defaultLang = this.getDefaultLanguage();\r\n\r\n try {\r\n const envData: any = await lastValueFrom(this.http.get('/assets/config/environment.json'));\r\n window.Environment = envData;\r\n Object.assign(environment, envData);\r\n\r\n const baseUrl = window.Environment?.BBSF_ApiUrl || '';\r\n const data: any = await lastValueFrom(this.http.get(`${baseUrl}/api/Preload`));\r\n\r\n ConfigurationService.JsonData = data.configurations as any;\r\n\r\n for (const lang of this.availableLanguages) {\r\n const bundle = data.translations?.[lang];\r\n if (bundle != null && typeof bundle === 'object') {\r\n this.translate.setTranslation(lang, bundle, true);\r\n this.loadedLanguages.add(lang);\r\n }\r\n }\r\n\r\n this.translate.use(defaultLang);\r\n } catch (error) {\r\n console.error('Error during preloadAll:', error);\r\n }\r\n }\r\n\r\n loadEnvironment(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n script.src = '/assets/config/environment.js';\r\n script.onload = () => {\r\n if (window.Environment) {\r\n Object.assign(environment, window.Environment);\r\n resolve();\r\n } else {\r\n reject('Environment variables not found.');\r\n }\r\n };\r\n script.onerror = () => reject('Failed to load environment.js');\r\n document.head.insertBefore(script, document.head.firstChild);\r\n });\r\n }\r\n\r\n private async loadConfigurations(): Promise<void> {\r\n const data = await lastValueFrom(this.http.get('./assets/config/configurations.json'));\r\n ConfigurationService.JsonData = data as any;\r\n }\r\n\r\n private getDefaultLanguage(): string {\r\n const lang = localStorage.getItem('language');\r\n if (lang && this.availableLanguages.includes(lang)) {\r\n return lang;\r\n }\r\n return 'en';\r\n }\r\n\r\n async loadLanguage(lang: string): Promise<void> {\r\n const normalizedLang = (lang || '').trim();\r\n if (!normalizedLang) {\r\n return;\r\n }\r\n\r\n if (!this.availableLanguages.includes(normalizedLang)) {\r\n return;\r\n }\r\n\r\n if (this.loadedLanguages.has(normalizedLang)) {\r\n return;\r\n }\r\n\r\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${normalizedLang}.json`));\r\n this.translate.setTranslation(normalizedLang, translations, true);\r\n this.loadedLanguages.add(normalizedLang);\r\n }\r\n\r\n async preloadTranslations(): Promise<void> {\r\n try {\r\n const requests = this.availableLanguages.map(async (lang) => {\r\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${lang}.json`));\r\n this.translate.setTranslation(lang, translations, true);\r\n });\r\n\r\n await Promise.all(requests);\r\n this.translate.use('en'); // Set default language manually\r\n } catch (error) {\r\n console.error('Error preloading translations:', error);\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { SwUpdate, VersionEvent } from '@angular/service-worker';\r\nimport { filter, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceWorkerHelperService {\r\n private swRegistration: ServiceWorkerRegistration | null = null;\r\n private updateCheckInProgress = false;\r\n private chunkHandlersRegistered = false;\r\n private chunkRecoveryInFlight = false;\r\n\r\n private readonly sessionRecoveryAttemptsKey = 'bbsf_chunk_recovery_count';\r\n private readonly maxChunkRecoveryAttempts = 3;\r\n\r\n constructor(public updates: SwUpdate) {\r\n this.initializeServiceWorker();\r\n this.setupChunkErrorHandler();\r\n }\r\n\r\n public checkForUpdates(): void {\r\n if (!this.updates.isEnabled) {\r\n console.warn('Service Worker updates are not enabled');\r\n return;\r\n }\r\n\r\n // Set up event listeners\r\n this.setupUpdateListeners();\r\n\r\n // Start smart checking for updates\r\n this.startSmartUpdateChecking();\r\n }\r\n\r\n private setupUpdateListeners(): void {\r\n this.updates.versionUpdates\r\n .pipe(\r\n filter((event: VersionEvent) => event.type === 'VERSION_DETECTED')\r\n )\r\n .subscribe(() => {\r\n console.log('New version detected, preparing to update...');\r\n this.skipWaiting();\r\n });\r\n\r\n this.updates.versionUpdates\r\n .pipe(\r\n filter((event: VersionEvent) => event.type === 'VERSION_READY'),\r\n switchMap(() => this.updates.activateUpdate())\r\n )\r\n .subscribe(() => {\r\n console.log('New version activated, reloading page...');\r\n // CRITICAL FIX: Reload the page after activation\r\n window.location.reload();\r\n });\r\n\r\n // Handle installation failures\r\n this.updates.versionUpdates\r\n .pipe(\r\n filter((event: VersionEvent) => event.type === 'VERSION_INSTALLATION_FAILED')\r\n )\r\n .subscribe(() => {\r\n console.error('Service Worker installation failed');\r\n this.clearCacheAndReload();\r\n });\r\n\r\n // Handle unrecoverable state\r\n this.updates.unrecoverable.subscribe(event => {\r\n console.error('Unrecoverable state:', event.reason);\r\n this.clearCacheAndReload();\r\n });\r\n }\r\n\r\n private startSmartUpdateChecking(): void {\r\n // Initial check\r\n this.performUpdateCheck();\r\n\r\n // Check every 2 minutes\r\n setInterval(() => {\r\n this.performUpdateCheck();\r\n }, 120000);\r\n\r\n // Check when user returns to tab\r\n document.addEventListener('visibilitychange', () => {\r\n if (!document.hidden) {\r\n this.performUpdateCheck();\r\n }\r\n });\r\n\r\n // Check when user focuses window\r\n window.addEventListener('focus', () => {\r\n this.performUpdateCheck();\r\n });\r\n }\r\n\r\n private performUpdateCheck(): void {\r\n if (this.updates.isEnabled && !this.updateCheckInProgress) {\r\n this.updateCheckInProgress = true;\r\n\r\n this.updates.checkForUpdate()\r\n .then(hasUpdate => {\r\n if (hasUpdate) {\r\n console.log('Update available, processing...');\r\n }\r\n })\r\n .catch(err => {\r\n console.error('Error checking for updates:', err);\r\n })\r\n .finally(() => {\r\n this.updateCheckInProgress = false;\r\n });\r\n }\r\n }\r\n\r\n private initializeServiceWorker(): void {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n this.swRegistration = registration;\r\n });\r\n }\r\n }\r\n\r\n private skipWaiting(): void {\r\n if (this.swRegistration?.waiting) {\r\n this.swRegistration.waiting.postMessage({ type: 'SKIP_WAITING' });\r\n }\r\n }\r\n\r\n private setupChunkErrorHandler(): void {\r\n if (this.chunkHandlersRegistered) {\r\n return;\r\n }\r\n this.chunkHandlersRegistered = true;\r\n\r\n window.addEventListener('error', (event: Event) => {\r\n if (!this.isChunkErrorEvent(event)) {\r\n return;\r\n }\r\n console.warn('Chunk load error detected, attempting recovery...');\r\n event.preventDefault();\r\n this.handleChunkLoadError();\r\n });\r\n\r\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\r\n const reason = event.reason;\r\n const text =\r\n (reason && typeof reason === 'object' && 'message' in reason\r\n ? String((reason as { message: unknown; }).message)\r\n : '') || (reason instanceof Error ? reason.message : String(reason ?? ''));\r\n const name = reason instanceof Error ? reason.name : '';\r\n\r\n if (!this.isChunkLoadFailure(reason, text) && name !== 'ChunkLoadError') {\r\n return;\r\n }\r\n console.warn('Chunk load error in promise, attempting recovery...');\r\n event.preventDefault();\r\n this.handleChunkLoadError();\r\n });\r\n }\r\n\r\n private isChunkErrorEvent(event: Event): boolean {\r\n const ev = event as ErrorEvent;\r\n const message = ev.message || '';\r\n const scriptSrc =\r\n event.target instanceof HTMLScriptElement ? event.target.src || undefined : undefined;\r\n return this.isChunkLoadFailure(ev.error, message, scriptSrc);\r\n }\r\n\r\n private isChunkLoadFailure(error: unknown, message: string, scriptSrc?: string): boolean {\r\n const segments: string[] = [message];\r\n if (error instanceof Error) {\r\n segments.push(error.message, error.name);\r\n } else if (error && typeof error === 'object' && 'message' in error) {\r\n segments.push(String((error as { message: unknown; }).message));\r\n } else if (error != null) {\r\n segments.push(String(error));\r\n }\r\n const text = segments.join(' ');\r\n\r\n if (/Loading chunk .+ failed/i.test(text)) {\r\n return true;\r\n }\r\n if (/ChunkLoadError/i.test(text)) {\r\n return true;\r\n }\r\n if (/Failed to fetch dynamically imported module/i.test(text)) {\r\n return true;\r\n }\r\n\r\n if (scriptSrc && /\\.js(\\?|#|$)/i.test(scriptSrc)) {\r\n const looksLikeBundle =\r\n /chunk|main|runtime|polyfills|vendor/i.test(scriptSrc) ||\r\n /\\/\\d+\\.[\\w.-]*\\.js(\\?|#|$)/i.test(scriptSrc);\r\n const opaqueOrEmpty = !message || message === 'Script error.';\r\n if (looksLikeBundle && opaqueOrEmpty) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private handleChunkLoadError(): void {\r\n if (this.chunkRecoveryInFlight) {\r\n return;\r\n }\r\n\r\n let attempts = 0;\r\n try {\r\n attempts = parseInt(sessionStorage.getItem(this.sessionRecoveryAttemptsKey) || '0', 10);\r\n } catch {\r\n /* private / blocked storage */\r\n }\r\n\r\n if (attempts >= this.maxChunkRecoveryAttempts) {\r\n console.error('Chunk error recovery limit reached for this session; not reloading again.');\r\n return;\r\n }\r\n\r\n try {\r\n sessionStorage.setItem(this.sessionRecoveryAttemptsKey, String(attempts + 1));\r\n } catch {\r\n /* ignore */\r\n }\r\n\r\n this.chunkRecoveryInFlight = true;\r\n this.clearCacheAndReload();\r\n }\r\n\r\n private clearCacheAndReload(): void {\r\n console.log('Clearing caches and reloading...');\r\n\r\n if ('caches' in window) {\r\n caches.keys().then(cacheNames => {\r\n return Promise.all(\r\n cacheNames.map(cacheName => {\r\n console.log('Deleting cache:', cacheName);\r\n return caches.delete(cacheName);\r\n })\r\n );\r\n }).then(() => {\r\n // Unregister all service workers\r\n if ('serviceWorker' in navigator) {\r\n return navigator.serviceWorker.getRegistrations().then(registrations => {\r\n return Promise.all(\r\n registrations.map(registration => {\r\n console.log('Unregistering service worker');\r\n return registration.unregister();\r\n })\r\n );\r\n });\r\n }\r\n }).then(() => {\r\n // Small delay to ensure cleanup completes\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 100);\r\n }).catch(err => {\r\n console.error('Error during cache cleanup:', err);\r\n // Reload anyway\r\n window.location.reload();\r\n });\r\n } else {\r\n (window as any).location.reload();\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { BBSFTranslateService, EnvironmentService } from '../services';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { UtilityService } from '../services/utility.service';\r\nimport { AuthenticationModes } from '../enums/authentication-modes-enums';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public redirectUrl: string = '';\r\n static user: User | null = null;\r\n _user: User | null;\r\n private get user(): User | null {\r\n // Always use static as source of truth\r\n // Only hydrate if static is null\r\n if (!AuthService.user) {\r\n this.getUserManager(); // This will set AuthService.user\r\n }\r\n\r\n return AuthService.user; // Always return fresh static value\r\n }\r\n static UserClaims: any = null;\r\n private jwtHelper: JwtHelperService = new JwtHelperService();\r\n private isAuthenticatedSubject = new BehaviorSubject<boolean>(this.hasToken());\r\n isAuthenticate$ = this.isAuthenticatedSubject.asObservable();\r\n //refresh\r\n static timers = [];\r\n static seconds = 0;\r\n private static isLoginInProgress = false;\r\n\r\n // User cache to prevent inconsistent multi-call results\r\n private _userCache: { user: User | null; timestamp: number; } | null = null;\r\n private USER_CACHE_TTL = 100; // ms\r\n\r\n constructor(private injector: Injector, private http: HttpClient, private environmentService: EnvironmentService, private translateService: BBSFTranslateService, private router: Router, private cookieService: CookieService, private utilityService: UtilityService) {\r\n\r\n // Listen for logout events from other tabs\r\n window.addEventListener('storage', (event) => {\r\n if (event.key === 'auth_logout_broadcast' && event.newValue) {\r\n this.clearLocalAuthState({ keepRedirectUrl: false });\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n });\r\n }\r\n\r\n private _TOKEN_KEY: string;\r\n get TOKEN_KEY() {\r\n if (!this._TOKEN_KEY) {\r\n this._TOKEN_KEY = this.environmentService.getCookieName();\r\n }\r\n return this._TOKEN_KEY;\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const now = Date.now();\r\n\r\n // Return cached user if fresh (within 100ms TTL)\r\n if (this._userCache && now - this._userCache.timestamp < this.USER_CACHE_TTL) {\r\n return this._userCache.user;\r\n }\r\n\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n\r\n if (token) {\r\n try {\r\n // Check both via helper and directly for additional safety\r\n const isExpired = this.jwtHelper.isTokenExpired(token);\r\n const expiryDate = this.jwtHelper.getTokenExpirationDate(token);\r\n const hasTimeLeft = expiryDate && expiryDate.getTime() > Date.now();\r\n\r\n if (!isExpired && hasTimeLeft) {\r\n this.handleAccessTokenWithoutLanguage(token);\r\n } else {\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n } catch (error) {\r\n // Invalid token format\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n }\r\n else {\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n\r\n // Update cache with current user state\r\n this._userCache = { user: AuthService.user, timestamp: now };\r\n return AuthService.user;\r\n }\r\n\r\n getUser() {\r\n // No-op: getter now always reads from static\r\n // Kept for backward compatibility\r\n }\r\n storUser(User: any) {\r\n // Getter now always reads from static, so we don't need to sync\r\n // This method appears unused but kept for backward compatibility\r\n }\r\n\r\n getCurrentUser() {\r\n return AuthService.user;\r\n }\r\n\r\n /**\r\n * The only supported way to read the current user's profile.\r\n * Ensures the in-memory user is hydrated from cookie (or cleared) before returning profile.\r\n */\r\n public getCurrentUserProfile(): any | null {\r\n // Force hydration/cleanup based on cookie state\r\n this.getUserManager();\r\n\r\n return AuthService.user?.profile ?? null;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n const user = this.user; // Call getter to ensure hydrated\r\n if (!user) {\r\n return false;\r\n }\r\n\r\n // Add 10-second grace period to prevent race conditions\r\n const expiryDate = new Date(user.expires_at);\r\n const nowWithBuffer = new Date(Date.now() + 10000);\r\n const now = new Date();\r\n const secondsUntilExpiry = (expiryDate.getTime() - now.getTime()) / 1000;\r\n const result = expiryDate.getTime() > nowWithBuffer.getTime();\r\n\r\n return result;\r\n }\r\n\r\n isUserInRole(allowedPermission) {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return false;\r\n }\r\n\r\n let selectedPermissionSetID = Number.parseInt(profile['selectedpermissionsetid']);\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n isUserPermissionSetsInRoles(allowedPermission: number[]): boolean {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return false;\r\n }\r\n\r\n const permissionSetSIDString = profile['permissionSetSID'];\r\n if (!permissionSetSIDString) {\r\n return false;\r\n }\r\n\r\n // Split comma-separated string and convert to numbers\r\n const userPermissionSets = permissionSetSIDString\r\n .split(',')\r\n .map(id => Number.parseInt(id.trim()))\r\n .filter(id => !isNaN(id)); // Filter out invalid numbers\r\n\r\n // Check if any user permission set is in the allowed permissions\r\n return userPermissionSets.some(permissionSetID => allowedPermission.includes(permissionSetID));\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user\r\n ? `${AuthService.user.token_type} ${AuthService.user.access_token}`\r\n : '';\r\n }\r\n\r\n name(): string {\r\n const profile = this.getCurrentUserProfile();\r\n return profile?.given_name ?? '';\r\n }\r\n\r\n setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\r\n }\r\n\r\n getUrl() {\r\n return localStorage.getItem('redirectUrl') ?? \"/\";\r\n }\r\n\r\n /**\r\n * Local-only cleanup primitive (no HTTP, no redirects).\r\n * Safe to call before/after auth transitions to prevent stale-user windows.\r\n */\r\n clearLocalAuthState(options?: { keepRedirectUrl?: boolean; }) {\r\n // Clear timers\r\n AuthService.timers.forEach((t) => {\r\n clearInterval(t);\r\n });\r\n AuthService.timers = [];\r\n\r\n // Reset seconds counter to prevent stale timers\r\n AuthService.seconds = 0;\r\n\r\n // Clear memory\r\n AuthService.user = null;\r\n this._user = null;\r\n AuthService.UserClaims = null;\r\n\r\n // Delete cookie\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n\r\n // Clear redirectUrl unless explicitly told not to\r\n if (options?.keepRedirectUrl !== true) {\r\n localStorage.removeItem('redirectUrl');\r\n }\r\n\r\n // Invalidate user cache since auth state is cleared\r\n this._userCache = null;\r\n\r\n this.isAuthenticatedSubject.next(false);\r\n }\r\n\r\n signOut() {\r\n const wasAuthenticated = this.isAuthenticated();\r\n\r\n // If authenticated, kick off server logout BEFORE wiping local auth context (cookie/header/session)\r\n if (wasAuthenticated) {\r\n this.logout().subscribe({ next: () => { }, error: () => { } });\r\n }\r\n\r\n // Always clear local state immediately (no stale-user window)\r\n this.clearLocalAuthState({ keepRedirectUrl: false });\r\n\r\n // Notify other tabs about logout\r\n localStorage.setItem('auth_logout_broadcast', Date.now().toString());\r\n localStorage.removeItem('auth_logout_broadcast');\r\n\r\n // Redirect (Forms vs UAEPass)\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n\r\n logout() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/Account/';\r\n return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);\r\n }\r\n\r\n clearUserSessionClaims() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);\r\n }\r\n\r\n async handleAccessToken(response: any): Promise<void> {\r\n AuthService.isLoginInProgress = true;\r\n\r\n try {\r\n const token = response;\r\n\r\n // AGGRESSIVE timer cleanup before starting new session\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.seconds = 0; // Reset counter\r\n\r\n // Brief pause to ensure intervals are cleared\r\n await new Promise(resolve => setTimeout(resolve, 50));\r\n\r\n // Update user atomically\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n\r\n // Add 5-minute buffer to cookie expiry to prevent browser deletion before refresh\r\n // JWT expiry in isAuthenticated() remains authoritative\r\n const cookieExpiry = new Date(AuthService.user.expires_at.getTime() + (5 * 60 * 1000));\r\n\r\n // Update cookie atomically (no deletion window)\r\n this.cookieService.set(this.TOKEN_KEY, token, cookieExpiry, \"/\", null, true, 'Lax');\r\n\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.isAuthenticatedSubject.next(true);\r\n\r\n // Invalidate user cache since we have a new token\r\n this._userCache = null;\r\n\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n } finally {\r\n AuthService.isLoginInProgress = false;\r\n }\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n const token = response;\r\n\r\n // Clear timers only (don't delete cookie to avoid race condition window)\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n\r\n // Update user atomically\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n\r\n // Add 5-minute buffer to cookie expiry to prevent browser deletion before refresh\r\n // JWT expiry in isAuthenticated() remains authoritative\r\n const cookieExpiry = new Date(AuthService.user.expires_at.getTime() + (5 * 60 * 1000));\r\n\r\n // Update cookie atomically (no deletion window)\r\n this.cookieService.set(this.TOKEN_KEY, token, cookieExpiry, \"/\", null, true, 'Lax');\r\n\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.isAuthenticatedSubject.next(true);\r\n\r\n // Invalidate user cache since we have a new token\r\n this._userCache = null;\r\n\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n }\r\n\r\n async updateLanguage() {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return;\r\n }\r\n\r\n if (!localStorage.getItem('language') || localStorage.getItem('language') == profile.locale)\r\n localStorage.setItem('language', profile.locale);\r\n\r\n if (this.translateService.currentLang != localStorage.getItem('language')) {\r\n this.translateService.resetLang(this.translateService.currentLang);\r\n await this.translateService.reloadLang(localStorage.getItem('language')).subscribe();\r\n }\r\n }\r\n\r\n checkRefreshToken() {\r\n let date = new Date() as any;\r\n const timerId = setInterval(() => {\r\n // Early exit if user logged out or no user exists\r\n if (!AuthService.user) {\r\n return;\r\n }\r\n\r\n const secondsRemaining = Math.floor(AuthService.seconds);\r\n\r\n // Early exit if seconds is invalid (negative or zero means already expired/cleared)\r\n if (secondsRemaining <= 0) {\r\n return;\r\n }\r\n\r\n // Refresh when 30 seconds remain (instead of 120)\r\n // This prevents continuous refresh loops with short-lived tokens\r\n // Timer is cleared after triggering to ensure only ONE refresh per token cycle\r\n if (secondsRemaining <= 30 && secondsRemaining > 0 && this.isAuthenticated()) {\r\n // Double-check user still exists before refreshing\r\n if (!AuthService.user) {\r\n return;\r\n }\r\n\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n\r\n if (token) {\r\n this.refresh();\r\n } else {\r\n // Defensive: Token disappeared between isAuthenticated() check and now\r\n console.error('[REFRESH-TIMER] Token disappeared! Attempting recovery...', {\r\n timestamp: new Date().toISOString(),\r\n secondsRemaining,\r\n wasAuthenticated: true\r\n });\r\n\r\n // Try one more time after short delay\r\n setTimeout(() => {\r\n const retryToken = this.cookieService.get(this.TOKEN_KEY);\r\n\r\n if (retryToken) {\r\n this.refresh();\r\n } else {\r\n console.error('[REFRESH-TIMER] Token still missing after retry');\r\n // Don't clear auth state here - let natural expiry handle it\r\n // This prevents premature logout if user is still active\r\n }\r\n }, 100);\r\n }\r\n }\r\n AuthService.seconds--;\r\n }, 1000);\r\n\r\n return timerId;\r\n }\r\n\r\n setTokenSeconds() {\r\n let date = new Date() as any;\r\n AuthService.seconds = (AuthService.user.expires_at - date) / 1000;\r\n }\r\n\r\n refresh() {\r\n // Don't refresh if login is in progress\r\n if (AuthService.isLoginInProgress) {\r\n return;\r\n }\r\n\r\n // Don't refresh if user logged out\r\n if (!AuthService.user) {\r\n return;\r\n }\r\n\r\n const refreshLockKey = 'auth_refreshing_lock';\r\n const lockValue = localStorage.getItem(refreshLockKey);\r\n\r\n // Check if another tab is refreshing (within last 5 seconds)\r\n if (lockValue && Date.now() - parseInt(lockValue) < 5000) {\r\n return; // Another tab is handling the refresh\r\n }\r\n\r\n // Acquire lock\r\n localStorage.setItem(refreshLockKey, Date.now().toString());\r\n\r\n // IMPORTANT: Don't delete cookie before refresh to prevent:\r\n // 1. Race condition window where no token exists\r\n // 2. Repeated cookie deletion/recreation cycles with short-lived tokens\r\n // The cookie will be atomically replaced by handleAccessTokenWithoutLanguage()\r\n\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authorizationHeaderValue(),\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe({\r\n next: (res: any) => {\r\n // Check if user logged out during HTTP call\r\n if (!AuthService.user) {\r\n localStorage.removeItem(refreshLockKey);\r\n return; // Abort - don't set new token\r\n }\r\n\r\n // Atomically replaces the old cookie with new token\r\n this.handleAccessTokenWithoutLanguage(res.val);\r\n localStorage.removeItem(refreshLockKey);\r\n\r\n // Auto-navigate if user was redirected to login during token expiry\r\n // this.handlePostRefreshNavigation();\r\n },\r\n error: (err) => {\r\n localStorage.removeItem(refreshLockKey);\r\n // On error, old cookie remains valid until natural expiry\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handles navigation after successful token refresh.\r\n * If user is on login page and has a stored redirect URL, navigates to that URL.\r\n * This resolves the issue where users remain on login page after token refresh.\r\n * NOTE: This is not used anymore because we are using the async guard to wait for the refresh to complete before navigating to the protected route.\r\n */\r\n private handlePostRefreshNavigation(): void {\r\n // Get the stored redirect URL\r\n const redirectUrl = this.getUrl(); // Returns localStorage 'redirectUrl' or \"/\"\r\n\r\n // Get current URL\r\n const currentUrl = this.router.url;\r\n\r\n // Check if we're currently on the login page\r\n const isOnLoginPage = currentUrl.toLowerCase().includes('login');\r\n\r\n const isAuth = this.isAuthenticated();\r\n\r\n // More lenient conditions:\r\n // 1. User is authenticated\r\n // 2. User is on login page\r\n // 3. There's ANY redirect URL (even \"/\")\r\n if (isAuth && isOnLoginPage) {\r\n // Determine target URL\r\n const targetUrl = redirectUrl && !redirectUrl.toLowerCase().includes('login')\r\n ? redirectUrl\r\n : '/Admin/Home'; // Default fallback instead of rejecting \"/\"\r\n\r\n // Clear the stored redirect URL first\r\n localStorage.removeItem('redirectUrl');\r\n\r\n // Use setTimeout to ensure router has finished current navigation\r\n // This prevents competing navigation attempts\r\n setTimeout(() => {\r\n this.router.navigate([targetUrl]);\r\n }, 100);\r\n }\r\n }\r\n\r\n //#region uaepass methods\r\n loginWithUAEPass() {\r\n const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;\r\n const queryParams = {\r\n response_type: 'code',\r\n client_id: `${this.environmentService.getUAEPassClientID()}`,\r\n redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,\r\n scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',\r\n state: this.translateService.currentLang,\r\n acr_values: 'urn:safelayer:tws:policies:authentication:level:low',\r\n ui_locales: this.translateService.currentLang,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n const loginUrl = `${authEndpoint}?${queryParamsString}`;\r\n window.location.href = loginUrl;\r\n return;\r\n }\r\n\r\n logoutFromUAEPass() {\r\n const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;\r\n const queryParams = {\r\n redirect_uri: `${this.environmentService.getBaseUrl()}`,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;\r\n window.location.href = logoutUrl;\r\n return;\r\n }\r\n //#endregion\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { provideToastr } from 'ngx-toastr';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService,\r\n ControlValidationService, MasterLayoutService, ConfigurationService, AuthService, LanguageService,\r\n SpeechRecognitionService\r\n} from './shared';\r\n\r\n/**\r\n * BBSFUtilitiesModule\r\n * \r\n * This module provides full backward compatibility by including ALL services and modules\r\n * from the original version. Simply import this module to get all functionality.\r\n * \r\n * For new applications, consider using modular imports via secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * \r\n * @example\r\n * // Backward compatible usage (imports everything):\r\n * import { BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';\r\n * \r\n * @NgModule({\r\n * imports: [BBSFUtilitiesModule]\r\n * })\r\n * export class AppModule { }\r\n */\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule.forRoot(),\r\n ],\r\n exports: [\r\n // Re-export modules for backward compatibility\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule,\r\n ],\r\n providers: [\r\n // All services for backward compatibility\r\n UtilityService,\r\n EnvironmentService,\r\n AuthService,\r\n RequestHandlerService,\r\n StylesBundleService,\r\n TranslateService,\r\n BBSFTranslateService,\r\n ControlValidationService,\r\n MasterLayoutService,\r\n ConfigurationService,\r\n CookieService,\r\n LanguageService,\r\n SpeechRecognitionService,\r\n provideToastr()\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n * \r\n * This is the CORE entry point with minimal dependencies.\r\n * \r\n * For feature-specific services, use secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/word - Word document generation\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n */\r\n\r\n//Module (Note: for backward compatibility - contains ALL providers)\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\n//#region Core Services (minimal dependencies)\r\n\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/styles-bundle.service';\r\nexport * from './lib/shared/services/appearance-configuration.service';\r\nexport * from './lib/shared/services/configuration.service';\r\nexport * from './lib/shared/services/service-worker-helper.service';\r\n\r\n//#endregion\r\n\r\n//#region config\r\nexport * from './lib/shared/config/environment';\r\n//#endregion\r\n\r\n//#region models \r\nexport * from './lib/shared/models/area-model';\r\nexport * from './lib/shared/models/error-model';\r\nexport * from './lib/shared/models/UserModel';\r\n//#endregion\r\n\r\n//#region export enums\r\nexport * from './lib/shared/enums/authentication-modes-enums';\r\n//#endregion\r\n\r\n/* \r\n * DEPRECATED EXPORTS (for backward compatibility)\r\n * Please migrate to secondary entry points for these:\r\n */\r\n\r\n// Use @bnsights/bbsf-utilities/ui instead\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/control-validation.service';\r\nexport * from './lib/shared/services/speech-recognition.service';\r\n\r\n// Use @bnsights/bbsf-utilities/translate instead\r\nexport * from './lib/shared/services/translate.service';\r\nexport * from './lib/shared/services/translation-resolver.service';\r\nexport { TranslationResolverService } from './lib/shared/services/translation-resolver.service';\r\nexport * from './lib/shared/services/language.service';\r\n\r\n// Use @bnsights/bbsf-utilities/http instead\r\nexport * from './lib/shared/services/request-handler.service';\r\nexport * from './lib/shared/services/master-layout.service';\r\nexport * from './lib/shared/services/preload.service';\r\nexport * from './lib/shared/models/request-options-model';\r\n\r\n// Word document generation moved to @bnsights/bbsf-utilities-doc\r\n// Install: npm install @bnsights/bbsf-utilities-doc\r\n\r\n// Use @bnsights/bbsf-utilities/auth instead\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n// Re-export speech-language model\r\nexport * from './lib/shared/models/speech-language';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigurationService","i1.UtilityService","i1","i2.RequestHandlerService","i3.AuthService","i2.StylesBundleService","i2.FileLoaderService","takeUntil","tap","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i1.BBSFTranslateService","i1.EnvironmentService","take","i1.RequestHandlerService","i2","switchMap","i2.EnvironmentService","i2.BBSFTranslateService","i3","i4","i5.UtilityService"],"mappings":"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"}
1
+ {"version":3,"file":"bnsights-bbsf-utilities.mjs","sources":["../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/enums/authentication-modes-enums.ts","../../../projects/bbsf-utilities/src/lib/shared/services/appearance-configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/area-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/error-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/request-options-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/speech-language.ts","../../../projects/bbsf-utilities/src/lib/shared/services/control-validation.service.ts","../../../projects/bbsf-utilities/src/lib/shared/config/environment.ts","../../../projects/bbsf-utilities/src/lib/shared/services/environment.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/master-layout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/request-handler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/styles-bundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translation-resolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/language.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/speech-recognition.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/preload.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/service-worker-helper.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["export class User {\r\n\r\n token_type: string;\r\n access_token: string;\r\n profile: any;\r\n expires_at: any\r\n}\r\n","export enum AuthenticationModes {\r\n Forms = 'Forms',\r\n UAEPass = \"UAEPass\",\r\n WindowsAD = \"WindowsAD\",\r\n AzureAD = \"AzureAD\",\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ConfigurationService } from \".\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n\r\n constructor(private configService: ConfigurationService) {\r\n }\r\n\r\n getLayoutTheme() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Theme');\r\n }\r\n\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n \r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable, Injector, OnInit } from \"@angular/core\";\r\nimport { AuthService } from \"../authentication\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n\r\n static JsonData: any[] = [];\r\n private currentUserProfile: any;\r\n private _authService: AuthService;\r\n\r\n constructor(private httpClient: HttpClient, private injector: Injector) {\r\n }\r\n\r\n private get authService(): AuthService {\r\n if (!this._authService) {\r\n this._authService = this.injector.get(AuthService);\r\n }\r\n return this._authService;\r\n }\r\n\r\n getConfigurationValue(key: string) {\r\n this.currentUserProfile = this.authService.getCurrentUser()?.profile;\r\n var selectedKey = ConfigurationService.JsonData[key];\r\n if (selectedKey && typeof selectedKey === 'object') {\r\n if (selectedKey.OrganizationConfigurations) {\r\n if (this.currentUserProfile && this.currentUserProfile.organizationGUID_ID) {\r\n let organizationValue = Array(selectedKey.OrganizationConfigurations).find(o => o.OrganizationID_GUID == this.currentUserProfile.organizationGUID_ID);\r\n return organizationValue;\r\n }\r\n } else {\r\n return selectedKey.Value;\r\n }\r\n } else {\r\n return selectedKey;\r\n }\r\n }\r\n\r\n}","export class AreaModel {\r\n permissionSetID: number\r\n areaUrl: string;\r\n}\r\n","export class ErrorModel {\r\n field: string;\r\n controlName: string;\r\n message: string;\r\n}\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport class RequestOptionsModel {\r\n disableSuccessNotification: boolean = false;\r\n disableBlockUI: boolean = false;\r\n disableErrorHandler: boolean = false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType: any = \"\"\r\n formGroup: FormGroup = null\r\n castResponsetoClass: boolean = true;\r\n}\r\n","export class LanguageDTO {\r\n name: string;\r\n prefix: string;\r\n dialect: string;\r\n englishName: string;\r\n arabicName: string;\r\n nativeName: string;\r\n detected: string;\r\n searching: string;\r\n elevating: string;\r\n translating: string;\r\n generatingAnswersForYou: string;\r\n isRTL: boolean;\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ErrorModel, RequestOptionsModel } from '../models';\r\nimport { UtilityService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor(private utilityService: UtilityService) {\r\n }\r\n\r\n isCreatedBefor = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n showGlobalError(errorMessage?: string | string[], formId?: string, deleteOld?: boolean) {\r\n let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger')\r\n if (globalErorrElement.length > 0) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n // tslint:disable-next-line: prefer-const\r\n if (!formId)\r\n formId = \"currentForm\"\r\n var object = document.getElementById(formId);\r\n const tagName = 'div';\r\n // tslint:disable-next-line: prefer-const\r\n var elementToAppend = document.createElement(tagName); // Your tag name here\r\n let message: string | string[] = \"\";\r\n\r\n if (!errorMessage || (typeof errorMessage == \"string\")) {\r\n if (localStorage.getItem('language') == \"ar\")\r\n message = errorMessage ? errorMessage : \"لديك بعص الأخطاء . من فضلك قم بالمراجعه \";\r\n else\r\n message = errorMessage ? errorMessage : \"You have some validation errors. Please check below\"\r\n elementToAppend.innerHTML = \"<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>\" + message + \"</li></ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n else {\r\n let ul = document.createElement(\"ul\");\r\n elementToAppend.appendChild(ul);\r\n\r\n for (const iterator of errorMessage) {\r\n let li = document.createElement(\"li\");\r\n li.innerHTML = iterator;\r\n ul.appendChild(li);\r\n }\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n this.isCreatedBefor = true;\r\n }\r\n\r\n removeGlobalError() {\r\n const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < removedList.length; index++) {\r\n const element = removedList[index];\r\n element.remove();\r\n }\r\n this.isCreatedBefor = false;\r\n }\r\n\r\n showInputErro(errors: any) {\r\n // show error on top of form \r\n this.showGlobalError();\r\n // remove old error from server\r\n this.removeElementsByClass('errortemplet');\r\n // Looping in error Object\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];\r\n if ((input.attributes['ng-reflect-name'].value as string) === key) {\r\n this.removeElementsByClass('erroclass-' + key);\r\n const tagName = 'p'\r\n const elementToAppend = document.createElement(tagName); // Your tag name here\r\n elementToAppend.innerHTML = iterator;\r\n elementToAppend.style.color = 'red'\r\n elementToAppend.className += 'errortemplet erroclass-' + key;\r\n const elementToappen = elementToAppend.cloneNode(true);\r\n input.parentNode.insertBefore(elementToappen, input.lastChild);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeElementsByClass(className) {\r\n const elements = document.getElementsByClassName(className);\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n renderServerErrors(form: FormGroup, err: HttpErrorResponse, requestOptions: RequestOptionsModel, formId?: string) {\r\n if (err.error == null) {\r\n return;\r\n }\r\n let errorsArray: string[] = [];\r\n\r\n this.requestOptions = requestOptions;\r\n\r\n if (err.error.validation_errors) {\r\n err.error.validation_errors.forEach((element: ErrorModel) => {\r\n let fieldName = element.field;\r\n let controlName = element.controlName;\r\n let message = element.message;\r\n if (form == null) {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n this.showGlobalError(null, formId);\r\n }\r\n });\r\n\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\r\n }\r\n }\r\n\r\n private hasControlName(form: FormGroup, controlName: string): boolean {\r\n let control = form.get(controlName);\r\n return control != null;\r\n }\r\n\r\n private setFieldError(form: FormGroup, controlName: string, fieldName: string, message: string) {\r\n let control = null\r\n\r\n if (controlName)\r\n control = this.getControlFormNameByFieldName(form, controlName);\r\n else\r\n control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);\r\n\r\n let errors = { \"errorMassage\": message };\r\n let fieldNameArray = fieldName.split('.');\r\n if (fieldNameArray.length >= 1) {\r\n switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {\r\n case \"english\":\r\n let englishControl = control.get(\"English\")\r\n englishControl.setErrors(errors);\r\n break;\r\n case \"arabic\":\r\n let arabicControl = control.get(\"Arabic\")\r\n arabicControl.setErrors(errors);\r\n break;\r\n default:\r\n control.setErrors(errors);\r\n }\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`)\r\n }\r\n }\r\n\r\n private getControlFormNameByFieldName(form: FormGroup, fieldName: string) {\r\n const formControls = form.controls;\r\n let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());\r\n let control = form.get(controlName);\r\n return control;\r\n }\r\n\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({}, (window as any).Environment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../config/environment';\r\nimport { AreaModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n static areaList: AreaModel[] = [];\r\n\r\n static AreaList: AreaModel[] = [];\r\n\r\n getEnvironmentObject() {\r\n return environment;\r\n }\r\n\r\n getBaseUrl() {\r\n return environment[\"BBSF_BaseURL\"];\r\n }\r\n\r\n getApiUrl() {\r\n return environment[\"BBSF_ApiUrl\"];\r\n }\r\n\r\n getProductionMode() {\r\n return environment[\"BBSF_IsProduction\"] as boolean;\r\n }\r\n\r\n getDefaultLanguage() {\r\n return environment[\"BBSF_DefaultLanguage\"] as string;\r\n }\r\n\r\n getIdentityServerUrl() {\r\n return environment[\"BBSF_IdentityServerUrl\"];\r\n }\r\n\r\n getIsIdentityServerExternal() {\r\n return environment[\"BBSF_IsExternalIdentityServer\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientId() {\r\n return environment[\"BBSF_IdentityServer_Client_Id\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n return environment[\"BBSF_IdentityServer_Client_Secret\"] as string;\r\n }\r\n\r\n getBBSFAuthenticationMode() {\r\n let Mode = environment[\"BBSF_AuthenticationMode\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassBaseUrl() {\r\n let Mode = environment[\"UAEPass_BaseUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassClientID() {\r\n let Mode = environment[\"UAEPass_ClientID\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassRedirectUrl() {\r\n let Mode = environment[\"UAEPass_RedirectUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassAuthorizationEndPoint() {\r\n let Mode = environment[\"UAEPass_AuthorizationEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassRedirectLogoutUrl() {\r\n let Mode = environment[\"UAEPass_RedirectLogoutUrl\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassLogoutEndPoint() {\r\n let Mode = environment[\"UAEPass_LogoutEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n\r\n getIsEnableWindowsAuthentication() {\r\n let Mode = environment[\"BBSF_Enable_WindowsAuthentication\"] as string;\r\n return Mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getAllowMultiTenancy() {\r\n let mode = environment[\"BBSF_AllowMultiTenancy\"] as string;\r\n return mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getCookieName() {\r\n let cookieName = environment[\"BBSF_CookieName\"];\r\n return cookieName;\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable, Subject, switchMap, take, takeUntil, tap } from 'rxjs';\r\nimport { FileLoaderService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\ninterface UpdateUserInfoResponse {\r\n token: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService implements OnDestroy {\r\n apiUrl = '/api/Home/';\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,\r\n private stylesBundleService: StylesBundleService, private translate: TranslateService,\r\n private fileLoaderService: FileLoaderService,\r\n ) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (!lang?.trim()) {\r\n return;\r\n }\r\n\r\n if (!this.authService.isAuthenticated()) {\r\n this.router.navigate(['/Admin/account/login']);\r\n return;\r\n }\r\n\r\n this.changeLanguage(lang).pipe(\r\n switchMap(() => this.updateUserInfo()),\r\n tap((userInfo) => {\r\n if (!userInfo?.token) {\r\n return;\r\n }\r\n\r\n this.authService.handleAccessToken(userInfo.token).then(async () => {\r\n this.stylesBundleService.loadThemes(lang, bundleEnglishName, bundleArabicName);\r\n localStorage.setItem('language', lang);\r\n try {\r\n await this.fileLoaderService.loadLanguage(lang);\r\n } catch (e: any) {\r\n this.logError(e?.message || `loadLanguage failed for ${lang}`).pipe(take(1)).subscribe();\r\n }\r\n this.translate.use(lang);\r\n });\r\n }),\r\n takeUntil(this.destroy$)\r\n ).subscribe({\r\n error: (error) => {\r\n this.logError(error?.message || 'switchLang failed').pipe(take(1)).subscribe();\r\n }\r\n });\r\n }\r\n\r\n reloadComponent() {\r\n const currentUrl = this.router.url;\r\n const previousShouldReuseRoute = this.router.routeReuseStrategy.shouldReuseRoute;\r\n const previousOnSameUrlNavigation = this.router.onSameUrlNavigation;\r\n\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]).finally(() => {\r\n this.router.routeReuseStrategy.shouldReuseRoute = previousShouldReuseRoute;\r\n this.router.onSameUrlNavigation = previousOnSameUrlNavigation;\r\n });\r\n }\r\n\r\n private changeLanguage(key: string): Observable<unknown> {\r\n const profile = this.authService.getCurrentUserProfile();\r\n if (!profile?.id) {\r\n return this.logError('changeLanguage failed: missing user profile id');\r\n }\r\n\r\n let params = new HttpParams();\r\n params = params.append('UserId', profile.id);\r\n params = params.append('LanguageKey', key);\r\n return this.http.post(this.apiUrl + 'UpdateLanguage', null, null, params);\r\n }\r\n\r\n logError(error: string) {\r\n let params = new HttpParams();\r\n params = params.append('error', error);\r\n return this.http.post(this.apiUrl + 'LogError', null, null, params);\r\n }\r\n\r\n private updateUserInfo(): Observable<UpdateUserInfoResponse> {\r\n return this.http.get<UpdateUserInfoResponse>(this.apiUrl + 'UpdateUserInfo', null, null);\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n if (!permissionSetID?.trim()) {\r\n return;\r\n }\r\n\r\n this.updateRole(permissionSetID).pipe(\r\n switchMap(() => this.updateUserInfo()),\r\n tap((userInfo) => {\r\n if (userInfo?.token) {\r\n this.authService.handleAccessToken(userInfo.token);\r\n }\r\n }),\r\n takeUntil(this.destroy$)\r\n ).subscribe({\r\n error: (error) => {\r\n this.logError(error?.message || 'switchRole failed').pipe(take(1)).subscribe();\r\n }\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string): Observable<unknown> {\r\n const profile = this.authService.getCurrentUserProfile();\r\n if (!profile?.id) {\r\n return this.logError('updateRole failed: missing user profile id');\r\n }\r\n\r\n let params = new HttpParams();\r\n params = params.append('UserId', profile.id);\r\n params = params.append('RoleID', permissionSetID);\r\n return this.http.post(this.apiUrl + 'SwitchRole', null, null, params);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService, EnvironmentService, UtilityService } from \".\";\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { RequestOptionsModel } from '../models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RequestHandlerService implements OnDestroy {\r\n\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n private router = inject(Router);\r\n constructor(\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private environmentService: EnvironmentService,\r\n private utilityService: UtilityService,\r\n private bbsfTranslateService: BBSFTranslateService\r\n ) {\r\n //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor\r\n this.bbsfTranslateService.onLangChange.subscribe((event) => {\r\n if (this.currentLanguage != event.lang) {\r\n this.currentLanguage = event.lang;\r\n }\r\n });\r\n }\r\n\r\n // Function to check if the internet connection is available\r\n private isOnline(): boolean {\r\n return navigator.onLine || !this.environmentService.getProductionMode();\r\n }\r\n\r\n // ...\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: errorCode });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n ) as Observable<T>;\r\n }\r\n\r\n post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n delete<T>(Url: string, deletedId: string, requestOptions?: RequestOptionsModel, responseType?: new () => T, params?: HttpParams): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.delete<T>(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n put<T>(Url: string, model?: any, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n patch<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n\r\n return this.http.patch<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n\r\n Upload<T>(Url: string, model?: any, requestOptions?: RequestOptionsModel): Observable<any> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeadersUpdated();\r\n return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, reportProgress: true, observe: 'events' }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n public destroyHandler(): void {\r\n this.onDestroy$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"clearInterval\");\r\n this.destroyHandler();\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n var isEnglish = this.utilityService.getCurrentLanguage() == \"en\";\r\n if (err.error instanceof ErrorEvent) {\r\n this.utilityService.notifyErrorMessage();\r\n }\r\n else {\r\n if (err.status == 400)\r\n throwError(err);//error 400 is thrown to be catch by the Form component to handle Fluent validation errors\r\n else if (err.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"]);\r\n else if (err.status == 403)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Sorry, You're not authorized to access this action\" : \"عذرا ليس لديك الصلاحيه لهذا الطلب\");\r\n else if (err.status == 510)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\");\r\n else if (err.status == 515)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else if (err.status == 504)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));\r\n else {\r\n console.log(`error message is: ${err.error ? err.error.Message : err.message}`);\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"ErrorMassage\"));\r\n }\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n getHeaders() {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true'\r\n });\r\n }\r\n getHeadersUpdated() {\r\n return new HttpHeaders({\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true',\r\n 'Video-Upload': 'true',\r\n 'Image-Upload': 'true',\r\n });\r\n\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BBSFTranslateService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StylesBundleService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document, private translateService: BBSFTranslateService) { }\r\n\r\n loadThemes(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (lang == \"ar\") {\r\n this.loadStyleBundle(bundleArabicName.toString());\r\n document.querySelector('html').setAttribute(\"b-lang\", \"ar\"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString());\r\n document.querySelector('html').setAttribute(\"b-lang\", \"en\");\r\n document.querySelector('html').setAttribute(\"dir\", \"ltr\");\r\n }\r\n\r\n }\r\n\r\n loadThemesColor(theme: string, bundleDarkName: string, bundleLightName: string) {\r\n if (theme == \"Light\")\r\n this.loadStyleBundle(bundleLightName.toString());\r\n else\r\n this.loadStyleBundle(bundleDarkName.toString());\r\n }\r\n\r\n private loadStyleBundle(styleName: string): void {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n let shouldRemoveOld = false;\r\n\r\n if (themeLink) {\r\n // ✅ Check if current CSS already loaded (by exact filename)\r\n const currentFileName = this.getFileName(themeLink.href);\r\n const requestedFileName = this.getFileName(styleName);\r\n\r\n if (currentFileName === requestedFileName) {\r\n return; // Same CSS already loaded\r\n } else {\r\n shouldRemoveOld = true; // Mark for removal after new CSS is added\r\n }\r\n }\r\n\r\n // ✅ Add new CSS first (prevents FOUC)\r\n const style = this.document.createElement('link');\r\n style.id = 'client-theme';\r\n style.rel = 'stylesheet';\r\n style.href = `${styleName}`;\r\n head.appendChild(style);\r\n\r\n // ✅ Remove old CSS after new one is added (smooth transition)\r\n if (shouldRemoveOld && themeLink) {\r\n themeLink.remove();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Extract filename from full path\r\n * @param path Full path or just filename\r\n * @returns The filename only\r\n */\r\n private getFileName(path: string): string {\r\n // Extract just the filename from full path\r\n const parts = path.split('/');\r\n return parts[parts.length - 1];\r\n }\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BBSFTranslateService extends TranslateService {\r\n}","import { inject } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { BBSFTranslateService } from \".\";\r\n\r\nexport const TranslationResolverService: ResolveFn<any> = () => {\r\n let translateService = inject(BBSFTranslateService);\r\n return translateService.getTranslation(translateService.currentLang);\r\n};","import { Injectable, Injector } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BBSFTranslateService, EnvironmentService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private environmentService: EnvironmentService, private injector: Injector) {\r\n\r\n }\r\n\r\n getResourceValue(Key: string): string { \r\n let ResourceValue = this.translator.instant(Key)\r\n return ResourceValue;\r\n }\r\n\r\n getCurrentLanguage() {\r\n let currentLanguage = this.environmentService.getDefaultLanguage();\r\n let lang = localStorage.getItem('language');\r\n if (lang)\r\n currentLanguage = lang;\r\n else\r\n localStorage.setItem('language', currentLanguage);\r\n return currentLanguage;\r\n }\r\n\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate: string;\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"ErrorMessage\");\r\n let titleTemplate = this.getResourceValue(\"Error\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n let MessageTemplate = this.getResourceValue(\"WarningMessage\");\r\n let titleTemplate = this.getResourceValue(\"Warning\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = this.injector.get(ToastrService);\r\n showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { RequestHandlerService } from \"./request-handler.service\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { tap, shareReplay, take } from \"rxjs/operators\";\r\nimport { LanguageDTO } from \"../models\";\r\n\r\n/**\r\n * Language service with internal caching\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LanguageService {\r\n apiUrl = '/api/Language/';\r\n private _languages: LanguageDTO[] = [];\r\n \r\n private isLoading = false;\r\n private isLoaded = false;\r\n private loadRequest$: Observable<LanguageDTO[]> | null = null;\r\n\r\n constructor(private http: RequestHandlerService) {\r\n }\r\n\r\n /** Pure getter - no side effects */\r\n get languages(): LanguageDTO[] {\r\n return this._languages;\r\n }\r\n\r\n \r\n /** Internal method - loads languages from API (race-condition safe) */\r\n private loadLanguages(): void {\r\n if (this.isLoaded || this.isLoading) return; // Sync guard prevents race condition\r\n \r\n this.isLoading = true; // Set immediately to block concurrent calls\r\n\r\n this.loadRequest$ = this.http.get<LanguageDTO[]>(this.apiUrl + 'GetAll', null, null).pipe(\r\n tap((languages: LanguageDTO[]) => {\r\n this._languages = languages;\r\n this.isLoaded = true;\r\n this.isLoading = false;\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n // take(1) ensures auto-unsubscribe after completion\r\n this.loadRequest$.pipe(take(1)).subscribe({\r\n error: (err) => {\r\n this.isLoading = false;\r\n this.loadRequest$ = null;\r\n }\r\n });\r\n }\r\n\r\n /** Get languages as Observable - triggers load if not loaded */\r\n getLanguages(): Observable<LanguageDTO[]> {\r\n if (this.isLoaded) {\r\n return of(this._languages);\r\n }\r\n\r\n if (!this.isLoading) {\r\n this.loadLanguages();\r\n }\r\n\r\n return this.loadRequest$ ?? of(this._languages);\r\n }\r\n}\r\n","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpeechRecognitionService {\r\n recognition: any;\r\n isListening = false;\r\n isSupported = false;\r\n language: string = 'en-US';\r\n\r\n constructor(private zone: NgZone,private utilityService:UtilityService) {\r\n const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (SpeechRecognition) {\r\n this.recognition = new SpeechRecognition();\r\n this.recognition.continuous = true;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n this.isSupported = true;\r\n }\r\n }\r\n\r\n startListening(language: string = this.language): Observable<string> {\r\n if (!this.isSupported) {\r\n return throwError(() => new Error('Web Speech API is not supported in this browser.'));\r\n }\r\n\r\n return new Observable(observer => {\r\n this.isListening = true;\r\n this.recognition.lang = language;\r\n this.recognition.start();\r\n\r\n this.recognition.onresult = (event: any) => {\r\n this.zone.run(() => {\r\n const transcript = event.results[event.results.length - 1][0].transcript;\r\n observer.next(transcript);\r\n });\r\n };\r\n\r\n this.recognition.onspeechend = () => {\r\n this.stopListening();\r\n };\r\n\r\n this.recognition.onerror = (event: any) => {\r\n this.zone.run(() => {\r\n if (event.error === 'not-allowed') {\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"MicAccessDenied\"));\r\n observer.error('Microphone access denied by the user.');\r\n } else {\r\n observer.error(event.error);\r\n }\r\n });\r\n };\r\n\r\n this.recognition.onend = () => {\r\n this.zone.run(() => {\r\n if (this.isListening) {\r\n this.recognition.start(); // Automatically restart\r\n } else {\r\n observer.complete();\r\n }\r\n });\r\n };\r\n });\r\n }\r\n\r\n stopListening() {\r\n if (this.isSupported) {\r\n this.isListening = false;\r\n this.recognition.stop();\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { lastValueFrom } from 'rxjs';\nimport { BBSFTranslateService } from './translate.service';\nimport { environment } from '../config/environment';\nimport { ConfigurationService } from './configuration.service';\n\ndeclare const window: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FileLoaderService {\n private availableLanguages = ['en', 'ar']; // Add more languages as needed\n private loadedLanguages = new Set<string>();\n private warnedDeprecatedMethods = new Set<string>();\n // environment:any;\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\n this.translate.addLangs(this.availableLanguages);\n }\n\n private getCookie(name: string): string | null {\n const normalizedName = (name || '').trim();\n if (!normalizedName) {\n return null;\n }\n\n const match = document.cookie.match(new RegExp(`(^| )${normalizedName}=([^;]+)`));\n return match ? decodeURIComponent(match[2]) : null;\n }\n\n private applyPreloadData(data: any, defaultLang: string): void {\n if (data?.environment != null && typeof data.environment === 'object') {\n window.Environment = data.environment;\n Object.assign(environment, data.environment);\n }\n\n ConfigurationService.JsonData = data?.configurations as any;\n\n for (const lang of this.availableLanguages) {\n const bundle = data?.translations?.[lang];\n if (bundle != null && typeof bundle === 'object') {\n this.translate.setTranslation(lang, bundle, true);\n this.loadedLanguages.add(lang);\n }\n }\n\n this.translate.use(defaultLang);\n }\n\n private async loadPreloadData(apiBaseUrl = ''): Promise<any> {\n return await lastValueFrom(this.http.get(`${apiBaseUrl}/api/Preload`));\n }\n\n private warnDeprecatedMethod(methodName: string): void {\n if (this.warnedDeprecatedMethods.has(methodName)) {\n return;\n }\n\n this.warnedDeprecatedMethods.add(methodName);\n console.warn(\n `[FileLoaderService] ${methodName}() is deprecated. Use preloadAll() instead and install the latest version of Bnsights.Core libraries.`\n );\n }\n\n async preloadAll(): Promise<void> {\n const defaultLang = this.getDefaultLanguage();\n\n try {\n const cookieApiUrl = this.getCookie('BBSF_ApiUrl') || '';\n\n if (cookieApiUrl) {\n const data = await this.loadPreloadData(cookieApiUrl);\n this.applyPreloadData(data, defaultLang);\n return;\n }\n } catch (error) {\n console.warn('Cookie-based preload failed, falling back to same-origin preload.', error);\n }\n\n try {\n const data = await this.loadPreloadData();\n this.applyPreloadData(data, defaultLang);\n return;\n } catch (error) {\n console.warn('Same-origin preload failed, falling back to environment.json.', error);\n }\n\n try {\n const envData: any = await lastValueFrom(this.http.get('/assets/config/environment.json'));\n window.Environment = envData;\n Object.assign(environment, envData);\n\n const baseUrl = window.Environment?.BBSF_ApiUrl || '';\n const data = await this.loadPreloadData(baseUrl);\n this.applyPreloadData(data, defaultLang);\n } catch (error) {\n console.error('Error during preloadAll:', error);\n }\n }\n\n /**\n * @deprecated Use preloadAll() instead and install the latest version of Bnsights.Core libraries.\n */\n loadEnvironment(): Promise<void> {\n this.warnDeprecatedMethod('loadEnvironment');\n\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = '/assets/config/environment.js';\n script.onload = () => {\n if (window.Environment) {\n Object.assign(environment, window.Environment);\n resolve();\n } else {\n reject('Environment variables not found.');\n }\n };\n script.onerror = () => reject('Failed to load environment.js');\n document.head.insertBefore(script, document.head.firstChild);\n });\n }\n\n private getDefaultLanguage(): string {\n const lang = localStorage.getItem('language');\n if (lang && this.availableLanguages.includes(lang)) {\n return lang;\n }\n return 'en';\n }\n\n async loadLanguage(lang: string): Promise<void> {\n const normalizedLang = (lang || '').trim();\n if (!normalizedLang) {\n return;\n }\n\n if (!this.availableLanguages.includes(normalizedLang)) {\n return;\n }\n\n if (this.loadedLanguages.has(normalizedLang)) {\n return;\n }\n\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${normalizedLang}.json`));\n this.translate.setTranslation(normalizedLang, translations, true);\n this.loadedLanguages.add(normalizedLang);\n }\n\n /**\n * @deprecated Use preloadAll() instead and install the latest version of Bnsights.Core libraries.\n */\n async preloadTranslations(): Promise<void> {\n this.warnDeprecatedMethod('preloadTranslations');\n\n try {\n const requests = this.availableLanguages.map(async (lang) => {\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${lang}.json`));\n this.translate.setTranslation(lang, translations, true);\n });\n\n await Promise.all(requests);\n this.translate.use('en'); // Set default language manually\n } catch (error) {\n console.error('Error preloading translations:', error);\n }\n }\n}","import { Injectable } from '@angular/core';\r\nimport { SwUpdate, VersionEvent } from '@angular/service-worker';\r\nimport { filter, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceWorkerHelperService {\r\n private swRegistration: ServiceWorkerRegistration | null = null;\r\n private updateCheckInProgress = false;\r\n private chunkHandlersRegistered = false;\r\n private chunkRecoveryInFlight = false;\r\n\r\n private readonly sessionRecoveryAttemptsKey = 'bbsf_chunk_recovery_count';\r\n private readonly maxChunkRecoveryAttempts = 3;\r\n\r\n constructor(public updates: SwUpdate) {\r\n this.initializeServiceWorker();\r\n this.setupChunkErrorHandler();\r\n }\r\n\r\n public checkForUpdates(): void {\r\n if (!this.updates.isEnabled) {\r\n console.warn('Service Worker updates are not enabled');\r\n return;\r\n }\r\n\r\n // Set up event listeners\r\n this.setupUpdateListeners();\r\n\r\n // Start smart checking for updates\r\n this.startSmartUpdateChecking();\r\n }\r\n\r\n private setupUpdateListeners(): void {\r\n this.updates.versionUpdates\r\n .pipe(\r\n filter((event: VersionEvent) => event.type === 'VERSION_DETECTED')\r\n )\r\n .subscribe(() => {\r\n console.log('New version detected, preparing to update...');\r\n this.skipWaiting();\r\n });\r\n\r\n this.updates.versionUpdates\r\n .pipe(\r\n filter((event: VersionEvent) => event.type === 'VERSION_READY'),\r\n switchMap(() => this.updates.activateUpdate())\r\n )\r\n .subscribe(() => {\r\n console.log('New version activated, reloading page...');\r\n // CRITICAL FIX: Reload the page after activation\r\n window.location.reload();\r\n });\r\n\r\n // Handle installation failures\r\n this.updates.versionUpdates\r\n .pipe(\r\n filter((event: VersionEvent) => event.type === 'VERSION_INSTALLATION_FAILED')\r\n )\r\n .subscribe(() => {\r\n console.error('Service Worker installation failed');\r\n this.clearCacheAndReload();\r\n });\r\n\r\n // Handle unrecoverable state\r\n this.updates.unrecoverable.subscribe(event => {\r\n console.error('Unrecoverable state:', event.reason);\r\n this.clearCacheAndReload();\r\n });\r\n }\r\n\r\n private startSmartUpdateChecking(): void {\r\n // Initial check\r\n this.performUpdateCheck();\r\n\r\n // Check every 2 minutes\r\n setInterval(() => {\r\n this.performUpdateCheck();\r\n }, 120000);\r\n\r\n // Check when user returns to tab\r\n document.addEventListener('visibilitychange', () => {\r\n if (!document.hidden) {\r\n this.performUpdateCheck();\r\n }\r\n });\r\n\r\n // Check when user focuses window\r\n window.addEventListener('focus', () => {\r\n this.performUpdateCheck();\r\n });\r\n }\r\n\r\n private performUpdateCheck(): void {\r\n if (this.updates.isEnabled && !this.updateCheckInProgress) {\r\n this.updateCheckInProgress = true;\r\n\r\n this.updates.checkForUpdate()\r\n .then(hasUpdate => {\r\n if (hasUpdate) {\r\n console.log('Update available, processing...');\r\n }\r\n })\r\n .catch(err => {\r\n console.error('Error checking for updates:', err);\r\n })\r\n .finally(() => {\r\n this.updateCheckInProgress = false;\r\n });\r\n }\r\n }\r\n\r\n private initializeServiceWorker(): void {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n this.swRegistration = registration;\r\n });\r\n }\r\n }\r\n\r\n private skipWaiting(): void {\r\n if (this.swRegistration?.waiting) {\r\n this.swRegistration.waiting.postMessage({ type: 'SKIP_WAITING' });\r\n }\r\n }\r\n\r\n private setupChunkErrorHandler(): void {\r\n if (this.chunkHandlersRegistered) {\r\n return;\r\n }\r\n this.chunkHandlersRegistered = true;\r\n\r\n window.addEventListener('error', (event: Event) => {\r\n if (!this.isChunkErrorEvent(event)) {\r\n return;\r\n }\r\n console.warn('Chunk load error detected, attempting recovery...');\r\n event.preventDefault();\r\n this.handleChunkLoadError();\r\n });\r\n\r\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\r\n const reason = event.reason;\r\n const text =\r\n (reason && typeof reason === 'object' && 'message' in reason\r\n ? String((reason as { message: unknown; }).message)\r\n : '') || (reason instanceof Error ? reason.message : String(reason ?? ''));\r\n const name = reason instanceof Error ? reason.name : '';\r\n\r\n if (!this.isChunkLoadFailure(reason, text) && name !== 'ChunkLoadError') {\r\n return;\r\n }\r\n console.warn('Chunk load error in promise, attempting recovery...');\r\n event.preventDefault();\r\n this.handleChunkLoadError();\r\n });\r\n }\r\n\r\n private isChunkErrorEvent(event: Event): boolean {\r\n const ev = event as ErrorEvent;\r\n const message = ev.message || '';\r\n const scriptSrc =\r\n event.target instanceof HTMLScriptElement ? event.target.src || undefined : undefined;\r\n return this.isChunkLoadFailure(ev.error, message, scriptSrc);\r\n }\r\n\r\n private isChunkLoadFailure(error: unknown, message: string, scriptSrc?: string): boolean {\r\n const segments: string[] = [message];\r\n if (error instanceof Error) {\r\n segments.push(error.message, error.name);\r\n } else if (error && typeof error === 'object' && 'message' in error) {\r\n segments.push(String((error as { message: unknown; }).message));\r\n } else if (error != null) {\r\n segments.push(String(error));\r\n }\r\n const text = segments.join(' ');\r\n\r\n if (/Loading chunk .+ failed/i.test(text)) {\r\n return true;\r\n }\r\n if (/ChunkLoadError/i.test(text)) {\r\n return true;\r\n }\r\n if (/Failed to fetch dynamically imported module/i.test(text)) {\r\n return true;\r\n }\r\n\r\n if (scriptSrc && /\\.js(\\?|#|$)/i.test(scriptSrc)) {\r\n const looksLikeBundle =\r\n /chunk|main|runtime|polyfills|vendor/i.test(scriptSrc) ||\r\n /\\/\\d+\\.[\\w.-]*\\.js(\\?|#|$)/i.test(scriptSrc);\r\n const opaqueOrEmpty = !message || message === 'Script error.';\r\n if (looksLikeBundle && opaqueOrEmpty) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private handleChunkLoadError(): void {\r\n if (this.chunkRecoveryInFlight) {\r\n return;\r\n }\r\n\r\n let attempts = 0;\r\n try {\r\n attempts = parseInt(sessionStorage.getItem(this.sessionRecoveryAttemptsKey) || '0', 10);\r\n } catch {\r\n /* private / blocked storage */\r\n }\r\n\r\n if (attempts >= this.maxChunkRecoveryAttempts) {\r\n console.error('Chunk error recovery limit reached for this session; not reloading again.');\r\n return;\r\n }\r\n\r\n try {\r\n sessionStorage.setItem(this.sessionRecoveryAttemptsKey, String(attempts + 1));\r\n } catch {\r\n /* ignore */\r\n }\r\n\r\n this.chunkRecoveryInFlight = true;\r\n this.clearCacheAndReload();\r\n }\r\n\r\n private clearCacheAndReload(): void {\r\n console.log('Clearing caches and reloading...');\r\n\r\n if ('caches' in window) {\r\n caches.keys().then(cacheNames => {\r\n return Promise.all(\r\n cacheNames.map(cacheName => {\r\n console.log('Deleting cache:', cacheName);\r\n return caches.delete(cacheName);\r\n })\r\n );\r\n }).then(() => {\r\n // Unregister all service workers\r\n if ('serviceWorker' in navigator) {\r\n return navigator.serviceWorker.getRegistrations().then(registrations => {\r\n return Promise.all(\r\n registrations.map(registration => {\r\n console.log('Unregistering service worker');\r\n return registration.unregister();\r\n })\r\n );\r\n });\r\n }\r\n }).then(() => {\r\n // Small delay to ensure cleanup completes\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 100);\r\n }).catch(err => {\r\n console.error('Error during cache cleanup:', err);\r\n // Reload anyway\r\n window.location.reload();\r\n });\r\n } else {\r\n (window as any).location.reload();\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { BBSFTranslateService, EnvironmentService } from '../services';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { UtilityService } from '../services/utility.service';\r\nimport { AuthenticationModes } from '../enums/authentication-modes-enums';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public redirectUrl: string = '';\r\n static user: User | null = null;\r\n _user: User | null;\r\n private get user(): User | null {\r\n // Always use static as source of truth\r\n // Only hydrate if static is null\r\n if (!AuthService.user) {\r\n this.getUserManager(); // This will set AuthService.user\r\n }\r\n\r\n return AuthService.user; // Always return fresh static value\r\n }\r\n static UserClaims: any = null;\r\n private jwtHelper: JwtHelperService = new JwtHelperService();\r\n private isAuthenticatedSubject = new BehaviorSubject<boolean>(this.hasToken());\r\n isAuthenticate$ = this.isAuthenticatedSubject.asObservable();\r\n //refresh\r\n static timers = [];\r\n static seconds = 0;\r\n private static isLoginInProgress = false;\r\n\r\n // User cache to prevent inconsistent multi-call results\r\n private _userCache: { user: User | null; timestamp: number; } | null = null;\r\n private USER_CACHE_TTL = 100; // ms\r\n\r\n constructor(private injector: Injector, private http: HttpClient, private environmentService: EnvironmentService, private translateService: BBSFTranslateService, private router: Router, private cookieService: CookieService, private utilityService: UtilityService) {\r\n\r\n // Listen for logout events from other tabs\r\n window.addEventListener('storage', (event) => {\r\n if (event.key === 'auth_logout_broadcast' && event.newValue) {\r\n this.clearLocalAuthState({ keepRedirectUrl: false });\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n });\r\n }\r\n\r\n private _TOKEN_KEY: string;\r\n get TOKEN_KEY() {\r\n if (!this._TOKEN_KEY) {\r\n this._TOKEN_KEY = this.environmentService.getCookieName();\r\n }\r\n return this._TOKEN_KEY;\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const now = Date.now();\r\n\r\n // Return cached user if fresh (within 100ms TTL)\r\n if (this._userCache && now - this._userCache.timestamp < this.USER_CACHE_TTL) {\r\n return this._userCache.user;\r\n }\r\n\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n\r\n if (token) {\r\n try {\r\n // Check both via helper and directly for additional safety\r\n const isExpired = this.jwtHelper.isTokenExpired(token);\r\n const expiryDate = this.jwtHelper.getTokenExpirationDate(token);\r\n const hasTimeLeft = expiryDate && expiryDate.getTime() > Date.now();\r\n\r\n if (!isExpired && hasTimeLeft) {\r\n this.handleAccessTokenWithoutLanguage(token);\r\n } else {\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n } catch (error) {\r\n // Invalid token format\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n }\r\n else {\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n\r\n // Update cache with current user state\r\n this._userCache = { user: AuthService.user, timestamp: now };\r\n return AuthService.user;\r\n }\r\n\r\n getUser() {\r\n // No-op: getter now always reads from static\r\n // Kept for backward compatibility\r\n }\r\n storUser(User: any) {\r\n // Getter now always reads from static, so we don't need to sync\r\n // This method appears unused but kept for backward compatibility\r\n }\r\n\r\n getCurrentUser() {\r\n return AuthService.user;\r\n }\r\n\r\n /**\r\n * The only supported way to read the current user's profile.\r\n * Ensures the in-memory user is hydrated from cookie (or cleared) before returning profile.\r\n */\r\n public getCurrentUserProfile(): any | null {\r\n // Force hydration/cleanup based on cookie state\r\n this.getUserManager();\r\n\r\n return AuthService.user?.profile ?? null;\r\n }\r\n\r\n isAuthenticated(): boolean {\r\n const user = this.user; // Call getter to ensure hydrated\r\n if (!user) {\r\n return false;\r\n }\r\n\r\n // Add 10-second grace period to prevent race conditions\r\n const expiryDate = new Date(user.expires_at);\r\n const nowWithBuffer = new Date(Date.now() + 10000);\r\n const now = new Date();\r\n const secondsUntilExpiry = (expiryDate.getTime() - now.getTime()) / 1000;\r\n const result = expiryDate.getTime() > nowWithBuffer.getTime();\r\n\r\n return result;\r\n }\r\n\r\n isUserInRole(allowedPermission) {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return false;\r\n }\r\n\r\n let selectedPermissionSetID = Number.parseInt(profile['selectedpermissionsetid']);\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n isUserPermissionSetsInRoles(allowedPermission: number[]): boolean {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return false;\r\n }\r\n\r\n const permissionSetSIDString = profile['permissionSetSID'];\r\n if (!permissionSetSIDString) {\r\n return false;\r\n }\r\n\r\n // Split comma-separated string and convert to numbers\r\n const userPermissionSets = permissionSetSIDString\r\n .split(',')\r\n .map(id => Number.parseInt(id.trim()))\r\n .filter(id => !isNaN(id)); // Filter out invalid numbers\r\n\r\n // Check if any user permission set is in the allowed permissions\r\n return userPermissionSets.some(permissionSetID => allowedPermission.includes(permissionSetID));\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user\r\n ? `${AuthService.user.token_type} ${AuthService.user.access_token}`\r\n : '';\r\n }\r\n\r\n name(): string {\r\n const profile = this.getCurrentUserProfile();\r\n return profile?.given_name ?? '';\r\n }\r\n\r\n setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\r\n }\r\n\r\n getUrl() {\r\n return localStorage.getItem('redirectUrl') ?? \"/\";\r\n }\r\n\r\n /**\r\n * Local-only cleanup primitive (no HTTP, no redirects).\r\n * Safe to call before/after auth transitions to prevent stale-user windows.\r\n */\r\n clearLocalAuthState(options?: { keepRedirectUrl?: boolean; }) {\r\n // Clear timers\r\n AuthService.timers.forEach((t) => {\r\n clearInterval(t);\r\n });\r\n AuthService.timers = [];\r\n\r\n // Reset seconds counter to prevent stale timers\r\n AuthService.seconds = 0;\r\n\r\n // Clear memory\r\n AuthService.user = null;\r\n this._user = null;\r\n AuthService.UserClaims = null;\r\n\r\n // Delete cookie\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n\r\n // Clear redirectUrl unless explicitly told not to\r\n if (options?.keepRedirectUrl !== true) {\r\n localStorage.removeItem('redirectUrl');\r\n }\r\n\r\n // Invalidate user cache since auth state is cleared\r\n this._userCache = null;\r\n\r\n this.isAuthenticatedSubject.next(false);\r\n }\r\n\r\n signOut() {\r\n const wasAuthenticated = this.isAuthenticated();\r\n\r\n // If authenticated, kick off server logout BEFORE wiping local auth context (cookie/header/session)\r\n if (wasAuthenticated) {\r\n this.logout().subscribe({ next: () => { }, error: () => { } });\r\n }\r\n\r\n // Always clear local state immediately (no stale-user window)\r\n this.clearLocalAuthState({ keepRedirectUrl: false });\r\n\r\n // Notify other tabs about logout\r\n localStorage.setItem('auth_logout_broadcast', Date.now().toString());\r\n localStorage.removeItem('auth_logout_broadcast');\r\n\r\n // Redirect (Forms vs UAEPass)\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n\r\n logout() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/Account/';\r\n return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);\r\n }\r\n\r\n clearUserSessionClaims() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);\r\n }\r\n\r\n async handleAccessToken(response: any): Promise<void> {\r\n AuthService.isLoginInProgress = true;\r\n\r\n try {\r\n const token = response;\r\n\r\n // AGGRESSIVE timer cleanup before starting new session\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.seconds = 0; // Reset counter\r\n\r\n // Brief pause to ensure intervals are cleared\r\n await new Promise(resolve => setTimeout(resolve, 50));\r\n\r\n // Update user atomically\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n\r\n // Add 5-minute buffer to cookie expiry to prevent browser deletion before refresh\r\n // JWT expiry in isAuthenticated() remains authoritative\r\n const cookieExpiry = new Date(AuthService.user.expires_at.getTime() + (5 * 60 * 1000));\r\n\r\n // Update cookie atomically (no deletion window)\r\n this.cookieService.set(this.TOKEN_KEY, token, cookieExpiry, \"/\", null, true, 'Lax');\r\n\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.isAuthenticatedSubject.next(true);\r\n\r\n // Invalidate user cache since we have a new token\r\n this._userCache = null;\r\n\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n } finally {\r\n AuthService.isLoginInProgress = false;\r\n }\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n const token = response;\r\n\r\n // Clear timers only (don't delete cookie to avoid race condition window)\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n\r\n // Update user atomically\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\";\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n\r\n // Add 5-minute buffer to cookie expiry to prevent browser deletion before refresh\r\n // JWT expiry in isAuthenticated() remains authoritative\r\n const cookieExpiry = new Date(AuthService.user.expires_at.getTime() + (5 * 60 * 1000));\r\n\r\n // Update cookie atomically (no deletion window)\r\n this.cookieService.set(this.TOKEN_KEY, token, cookieExpiry, \"/\", null, true, 'Lax');\r\n\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.isAuthenticatedSubject.next(true);\r\n\r\n // Invalidate user cache since we have a new token\r\n this._userCache = null;\r\n\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n }\r\n\r\n async updateLanguage() {\r\n const profile = this.getCurrentUserProfile();\r\n if (!profile) {\r\n return;\r\n }\r\n\r\n if (!localStorage.getItem('language') || localStorage.getItem('language') == profile.locale)\r\n localStorage.setItem('language', profile.locale);\r\n\r\n if (this.translateService.currentLang != localStorage.getItem('language')) {\r\n this.translateService.resetLang(this.translateService.currentLang);\r\n await this.translateService.reloadLang(localStorage.getItem('language')).subscribe();\r\n }\r\n }\r\n\r\n checkRefreshToken() {\r\n let date = new Date() as any;\r\n const timerId = setInterval(() => {\r\n // Early exit if user logged out or no user exists\r\n if (!AuthService.user) {\r\n return;\r\n }\r\n\r\n const secondsRemaining = Math.floor(AuthService.seconds);\r\n\r\n // Early exit if seconds is invalid (negative or zero means already expired/cleared)\r\n if (secondsRemaining <= 0) {\r\n return;\r\n }\r\n\r\n // Refresh when 30 seconds remain (instead of 120)\r\n // This prevents continuous refresh loops with short-lived tokens\r\n // Timer is cleared after triggering to ensure only ONE refresh per token cycle\r\n if (secondsRemaining <= 30 && secondsRemaining > 0 && this.isAuthenticated()) {\r\n // Double-check user still exists before refreshing\r\n if (!AuthService.user) {\r\n return;\r\n }\r\n\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n\r\n if (token) {\r\n this.refresh();\r\n } else {\r\n // Defensive: Token disappeared between isAuthenticated() check and now\r\n console.error('[REFRESH-TIMER] Token disappeared! Attempting recovery...', {\r\n timestamp: new Date().toISOString(),\r\n secondsRemaining,\r\n wasAuthenticated: true\r\n });\r\n\r\n // Try one more time after short delay\r\n setTimeout(() => {\r\n const retryToken = this.cookieService.get(this.TOKEN_KEY);\r\n\r\n if (retryToken) {\r\n this.refresh();\r\n } else {\r\n console.error('[REFRESH-TIMER] Token still missing after retry');\r\n // Don't clear auth state here - let natural expiry handle it\r\n // This prevents premature logout if user is still active\r\n }\r\n }, 100);\r\n }\r\n }\r\n AuthService.seconds--;\r\n }, 1000);\r\n\r\n return timerId;\r\n }\r\n\r\n setTokenSeconds() {\r\n let date = new Date() as any;\r\n AuthService.seconds = (AuthService.user.expires_at - date) / 1000;\r\n }\r\n\r\n refresh() {\r\n // Don't refresh if login is in progress\r\n if (AuthService.isLoginInProgress) {\r\n return;\r\n }\r\n\r\n // Don't refresh if user logged out\r\n if (!AuthService.user) {\r\n return;\r\n }\r\n\r\n const refreshLockKey = 'auth_refreshing_lock';\r\n const lockValue = localStorage.getItem(refreshLockKey);\r\n\r\n // Check if another tab is refreshing (within last 5 seconds)\r\n if (lockValue && Date.now() - parseInt(lockValue) < 5000) {\r\n return; // Another tab is handling the refresh\r\n }\r\n\r\n // Acquire lock\r\n localStorage.setItem(refreshLockKey, Date.now().toString());\r\n\r\n // IMPORTANT: Don't delete cookie before refresh to prevent:\r\n // 1. Race condition window where no token exists\r\n // 2. Repeated cookie deletion/recreation cycles with short-lived tokens\r\n // The cookie will be atomically replaced by handleAccessTokenWithoutLanguage()\r\n\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authorizationHeaderValue(),\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe({\r\n next: (res: any) => {\r\n // Check if user logged out during HTTP call\r\n if (!AuthService.user) {\r\n localStorage.removeItem(refreshLockKey);\r\n return; // Abort - don't set new token\r\n }\r\n\r\n // Atomically replaces the old cookie with new token\r\n this.handleAccessTokenWithoutLanguage(res.val);\r\n localStorage.removeItem(refreshLockKey);\r\n\r\n // Auto-navigate if user was redirected to login during token expiry\r\n // this.handlePostRefreshNavigation();\r\n },\r\n error: (err) => {\r\n localStorage.removeItem(refreshLockKey);\r\n // On error, old cookie remains valid until natural expiry\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handles navigation after successful token refresh.\r\n * If user is on login page and has a stored redirect URL, navigates to that URL.\r\n * This resolves the issue where users remain on login page after token refresh.\r\n * NOTE: This is not used anymore because we are using the async guard to wait for the refresh to complete before navigating to the protected route.\r\n */\r\n private handlePostRefreshNavigation(): void {\r\n // Get the stored redirect URL\r\n const redirectUrl = this.getUrl(); // Returns localStorage 'redirectUrl' or \"/\"\r\n\r\n // Get current URL\r\n const currentUrl = this.router.url;\r\n\r\n // Check if we're currently on the login page\r\n const isOnLoginPage = currentUrl.toLowerCase().includes('login');\r\n\r\n const isAuth = this.isAuthenticated();\r\n\r\n // More lenient conditions:\r\n // 1. User is authenticated\r\n // 2. User is on login page\r\n // 3. There's ANY redirect URL (even \"/\")\r\n if (isAuth && isOnLoginPage) {\r\n // Determine target URL\r\n const targetUrl = redirectUrl && !redirectUrl.toLowerCase().includes('login')\r\n ? redirectUrl\r\n : '/Admin/Home'; // Default fallback instead of rejecting \"/\"\r\n\r\n // Clear the stored redirect URL first\r\n localStorage.removeItem('redirectUrl');\r\n\r\n // Use setTimeout to ensure router has finished current navigation\r\n // This prevents competing navigation attempts\r\n setTimeout(() => {\r\n this.router.navigate([targetUrl]);\r\n }, 100);\r\n }\r\n }\r\n\r\n //#region uaepass methods\r\n loginWithUAEPass() {\r\n const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;\r\n const queryParams = {\r\n response_type: 'code',\r\n client_id: `${this.environmentService.getUAEPassClientID()}`,\r\n redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,\r\n scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',\r\n state: this.translateService.currentLang,\r\n acr_values: 'urn:safelayer:tws:policies:authentication:level:low',\r\n ui_locales: this.translateService.currentLang,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n const loginUrl = `${authEndpoint}?${queryParamsString}`;\r\n window.location.href = loginUrl;\r\n return;\r\n }\r\n\r\n logoutFromUAEPass() {\r\n const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;\r\n const queryParams = {\r\n redirect_uri: `${this.environmentService.getBaseUrl()}`,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;\r\n window.location.href = logoutUrl;\r\n return;\r\n }\r\n //#endregion\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { provideToastr } from 'ngx-toastr';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService,\r\n ControlValidationService, MasterLayoutService, ConfigurationService, AuthService, LanguageService,\r\n SpeechRecognitionService\r\n} from './shared';\r\n\r\n/**\r\n * BBSFUtilitiesModule\r\n * \r\n * This module provides full backward compatibility by including ALL services and modules\r\n * from the original version. Simply import this module to get all functionality.\r\n * \r\n * For new applications, consider using modular imports via secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * \r\n * @example\r\n * // Backward compatible usage (imports everything):\r\n * import { BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';\r\n * \r\n * @NgModule({\r\n * imports: [BBSFUtilitiesModule]\r\n * })\r\n * export class AppModule { }\r\n */\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule.forRoot(),\r\n ],\r\n exports: [\r\n // Re-export modules for backward compatibility\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule,\r\n ],\r\n providers: [\r\n // All services for backward compatibility\r\n UtilityService,\r\n EnvironmentService,\r\n AuthService,\r\n RequestHandlerService,\r\n StylesBundleService,\r\n TranslateService,\r\n BBSFTranslateService,\r\n ControlValidationService,\r\n MasterLayoutService,\r\n ConfigurationService,\r\n CookieService,\r\n LanguageService,\r\n SpeechRecognitionService,\r\n provideToastr()\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n * \r\n * This is the CORE entry point with minimal dependencies.\r\n * \r\n * For feature-specific services, use secondary entry points:\r\n * - @bnsights/bbsf-utilities/auth - Authentication services\r\n * - @bnsights/bbsf-utilities/word - Word document generation\r\n * - @bnsights/bbsf-utilities/translate - Translation services\r\n * - @bnsights/bbsf-utilities/ui - UI services (BlockUI, Toastr, etc.)\r\n * - @bnsights/bbsf-utilities/http - HTTP request handling\r\n */\r\n\r\n//Module (Note: for backward compatibility - contains ALL providers)\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\n//#region Core Services (minimal dependencies)\r\n\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/styles-bundle.service';\r\nexport * from './lib/shared/services/appearance-configuration.service';\r\nexport * from './lib/shared/services/configuration.service';\r\nexport * from './lib/shared/services/service-worker-helper.service';\r\n\r\n//#endregion\r\n\r\n//#region config\r\nexport * from './lib/shared/config/environment';\r\n//#endregion\r\n\r\n//#region models \r\nexport * from './lib/shared/models/area-model';\r\nexport * from './lib/shared/models/error-model';\r\nexport * from './lib/shared/models/UserModel';\r\n//#endregion\r\n\r\n//#region export enums\r\nexport * from './lib/shared/enums/authentication-modes-enums';\r\n//#endregion\r\n\r\n/* \r\n * DEPRECATED EXPORTS (for backward compatibility)\r\n * Please migrate to secondary entry points for these:\r\n */\r\n\r\n// Use @bnsights/bbsf-utilities/ui instead\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/control-validation.service';\r\nexport * from './lib/shared/services/speech-recognition.service';\r\n\r\n// Use @bnsights/bbsf-utilities/translate instead\r\nexport * from './lib/shared/services/translate.service';\r\nexport * from './lib/shared/services/translation-resolver.service';\r\nexport { TranslationResolverService } from './lib/shared/services/translation-resolver.service';\r\nexport * from './lib/shared/services/language.service';\r\n\r\n// Use @bnsights/bbsf-utilities/http instead\r\nexport * from './lib/shared/services/request-handler.service';\r\nexport * from './lib/shared/services/master-layout.service';\r\nexport * from './lib/shared/services/preload.service';\r\nexport * from './lib/shared/models/request-options-model';\r\n\r\n// Word document generation moved to @bnsights/bbsf-utilities-doc\r\n// Install: npm install @bnsights/bbsf-utilities-doc\r\n\r\n// Use @bnsights/bbsf-utilities/auth instead\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n// Re-export speech-language model\r\nexport * from './lib/shared/models/speech-language';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigurationService","i1.UtilityService","i1","i2.RequestHandlerService","i3.AuthService","i2.StylesBundleService","i2.FileLoaderService","takeUntil","tap","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i1.BBSFTranslateService","i1.EnvironmentService","take","i1.RequestHandlerService","i2","switchMap","i2.EnvironmentService","i2.BBSFTranslateService","i3","i4","i5.UtilityService"],"mappings":"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"}
@@ -6,12 +6,22 @@ export declare class FileLoaderService {
6
6
  private http;
7
7
  private availableLanguages;
8
8
  private loadedLanguages;
9
+ private warnedDeprecatedMethods;
9
10
  constructor(translate: BBSFTranslateService, http: HttpClient);
11
+ private getCookie;
12
+ private applyPreloadData;
13
+ private loadPreloadData;
14
+ private warnDeprecatedMethod;
10
15
  preloadAll(): Promise<void>;
16
+ /**
17
+ * @deprecated Use preloadAll() instead and install the latest version of Bnsights.Core libraries.
18
+ */
11
19
  loadEnvironment(): Promise<void>;
12
- private loadConfigurations;
13
20
  private getDefaultLanguage;
14
21
  loadLanguage(lang: string): Promise<void>;
22
+ /**
23
+ * @deprecated Use preloadAll() instead and install the latest version of Bnsights.Core libraries.
24
+ */
15
25
  preloadTranslations(): Promise<void>;
16
26
  static ɵfac: i0.ɵɵFactoryDeclaration<FileLoaderService, never>;
17
27
  static ɵprov: i0.ɵɵInjectableDeclaration<FileLoaderService>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bnsights/bbsf-utilities",
3
- "version": "1.2.8",
3
+ "version": "1.2.10",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^19.2.14",
6
6
  "@angular/cdk": "^19.2.19",
@@ -44,13 +44,13 @@
44
44
  "types": "./http/index.d.ts",
45
45
  "default": "./fesm2022/bnsights-bbsf-utilities-http.mjs"
46
46
  },
47
- "./translate": {
48
- "types": "./translate/index.d.ts",
49
- "default": "./fesm2022/bnsights-bbsf-utilities-translate.mjs"
50
- },
51
47
  "./ui": {
52
48
  "types": "./ui/index.d.ts",
53
49
  "default": "./fesm2022/bnsights-bbsf-utilities-ui.mjs"
50
+ },
51
+ "./translate": {
52
+ "types": "./translate/index.d.ts",
53
+ "default": "./fesm2022/bnsights-bbsf-utilities-translate.mjs"
54
54
  }
55
55
  },
56
56
  "sideEffects": false