@bnsights/bbsf-utilities 1.2.2 → 1.2.3
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
|
@@ -126,6 +126,12 @@ See [XMLBUILDER2_FIX.md](./XMLBUILDER2_FIX.md) for technical details.
|
|
|
126
126
|
|
|
127
127
|
# Change Log
|
|
128
128
|
|
|
129
|
+
## 1.2.3 5-1-2026
|
|
130
|
+
|
|
131
|
+
===================
|
|
132
|
+
|
|
133
|
+
- introduce new service `ServiceWorkerHelperService` that contains service worker helper methods.
|
|
134
|
+
|
|
129
135
|
## 1.2.2 / 25-12-202h5
|
|
130
136
|
|
|
131
137
|
=====================
|
|
@@ -5,7 +5,7 @@ import * as i1$1 from '@angular/router';
|
|
|
5
5
|
import { Router, RouterModule } from '@angular/router';
|
|
6
6
|
import * as i4 from '@ngx-translate/core';
|
|
7
7
|
import { TranslateService } from '@ngx-translate/core';
|
|
8
|
-
import * as i1$
|
|
8
|
+
import * as i1$3 from 'ng-block-ui';
|
|
9
9
|
import { BlockUI, BlockUIModule } from 'ng-block-ui';
|
|
10
10
|
import { ToastrService, provideToastr } from 'ngx-toastr';
|
|
11
11
|
import * as i4$1 from 'ngx-cookie-service';
|
|
@@ -16,7 +16,8 @@ import { Subject, throwError, of, Observable, lastValueFrom, BehaviorSubject } f
|
|
|
16
16
|
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
17
17
|
import { __decorate } from 'tslib';
|
|
18
18
|
import { plainToClass } from 'class-transformer';
|
|
19
|
-
import { takeUntil, tap, map, shareReplay, take } from 'rxjs/operators';
|
|
19
|
+
import { takeUntil, tap, map, shareReplay, take, filter, switchMap } from 'rxjs/operators';
|
|
20
|
+
import * as i1$2 from '@angular/service-worker';
|
|
20
21
|
|
|
21
22
|
class User {
|
|
22
23
|
}
|
|
@@ -1048,6 +1049,176 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
1048
1049
|
}]
|
|
1049
1050
|
}], ctorParameters: () => [{ type: BBSFTranslateService }, { type: i1.HttpClient }] });
|
|
1050
1051
|
|
|
1052
|
+
class ServiceWorkerHelperService {
|
|
1053
|
+
constructor(updates) {
|
|
1054
|
+
this.updates = updates;
|
|
1055
|
+
this.swRegistration = null;
|
|
1056
|
+
this.updateCheckInProgress = false;
|
|
1057
|
+
this.initializeServiceWorker();
|
|
1058
|
+
}
|
|
1059
|
+
checkForUpdates() {
|
|
1060
|
+
if (!this.updates.isEnabled) {
|
|
1061
|
+
console.warn('Service Worker updates are not enabled');
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1064
|
+
// Set up event listeners
|
|
1065
|
+
this.setupUpdateListeners();
|
|
1066
|
+
// Start smart checking for updates
|
|
1067
|
+
this.startSmartUpdateChecking();
|
|
1068
|
+
// CRITICAL: Handle chunk load errors
|
|
1069
|
+
this.setupChunkErrorHandler();
|
|
1070
|
+
}
|
|
1071
|
+
setupUpdateListeners() {
|
|
1072
|
+
this.updates.versionUpdates
|
|
1073
|
+
.pipe(filter((event) => event.type === 'VERSION_DETECTED'))
|
|
1074
|
+
.subscribe(() => {
|
|
1075
|
+
console.log('New version detected, preparing to update...');
|
|
1076
|
+
this.skipWaiting();
|
|
1077
|
+
});
|
|
1078
|
+
this.updates.versionUpdates
|
|
1079
|
+
.pipe(filter((event) => event.type === 'VERSION_READY'), switchMap(() => this.updates.activateUpdate()))
|
|
1080
|
+
.subscribe(() => {
|
|
1081
|
+
console.log('New version activated, reloading page...');
|
|
1082
|
+
// CRITICAL FIX: Reload the page after activation
|
|
1083
|
+
window.location.reload();
|
|
1084
|
+
});
|
|
1085
|
+
// Handle installation failures
|
|
1086
|
+
this.updates.versionUpdates
|
|
1087
|
+
.pipe(filter((event) => event.type === 'VERSION_INSTALLATION_FAILED'))
|
|
1088
|
+
.subscribe(() => {
|
|
1089
|
+
console.error('Service Worker installation failed');
|
|
1090
|
+
this.clearCacheAndReload();
|
|
1091
|
+
});
|
|
1092
|
+
// Handle unrecoverable state
|
|
1093
|
+
this.updates.unrecoverable.subscribe(event => {
|
|
1094
|
+
console.error('Unrecoverable state:', event.reason);
|
|
1095
|
+
this.clearCacheAndReload();
|
|
1096
|
+
});
|
|
1097
|
+
}
|
|
1098
|
+
startSmartUpdateChecking() {
|
|
1099
|
+
// Initial check
|
|
1100
|
+
this.performUpdateCheck();
|
|
1101
|
+
// Check every 2 minutes
|
|
1102
|
+
setInterval(() => {
|
|
1103
|
+
this.performUpdateCheck();
|
|
1104
|
+
}, 120000);
|
|
1105
|
+
// Check when user returns to tab
|
|
1106
|
+
document.addEventListener('visibilitychange', () => {
|
|
1107
|
+
if (!document.hidden) {
|
|
1108
|
+
this.performUpdateCheck();
|
|
1109
|
+
}
|
|
1110
|
+
});
|
|
1111
|
+
// Check when user focuses window
|
|
1112
|
+
window.addEventListener('focus', () => {
|
|
1113
|
+
this.performUpdateCheck();
|
|
1114
|
+
});
|
|
1115
|
+
}
|
|
1116
|
+
performUpdateCheck() {
|
|
1117
|
+
if (this.updates.isEnabled && !this.updateCheckInProgress) {
|
|
1118
|
+
this.updateCheckInProgress = true;
|
|
1119
|
+
this.updates.checkForUpdate()
|
|
1120
|
+
.then(hasUpdate => {
|
|
1121
|
+
if (hasUpdate) {
|
|
1122
|
+
console.log('Update available, processing...');
|
|
1123
|
+
}
|
|
1124
|
+
})
|
|
1125
|
+
.catch(err => {
|
|
1126
|
+
console.error('Error checking for updates:', err);
|
|
1127
|
+
})
|
|
1128
|
+
.finally(() => {
|
|
1129
|
+
this.updateCheckInProgress = false;
|
|
1130
|
+
});
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
initializeServiceWorker() {
|
|
1134
|
+
if ('serviceWorker' in navigator) {
|
|
1135
|
+
navigator.serviceWorker.ready.then(registration => {
|
|
1136
|
+
this.swRegistration = registration;
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
skipWaiting() {
|
|
1141
|
+
if (this.swRegistration?.waiting) {
|
|
1142
|
+
this.swRegistration.waiting.postMessage({ type: 'SKIP_WAITING' });
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
// CRITICAL: Handle chunk load errors
|
|
1146
|
+
setupChunkErrorHandler() {
|
|
1147
|
+
window.addEventListener('error', (event) => {
|
|
1148
|
+
const chunkFailedMessage = /Loading chunk [\d]+ failed|ChunkLoadError/i;
|
|
1149
|
+
const isChunkError = event.message && chunkFailedMessage.test(event.message);
|
|
1150
|
+
if (isChunkError) {
|
|
1151
|
+
console.warn('Chunk load error detected, attempting recovery...');
|
|
1152
|
+
event.preventDefault(); // Prevent default error handling
|
|
1153
|
+
this.handleChunkLoadError();
|
|
1154
|
+
}
|
|
1155
|
+
});
|
|
1156
|
+
// Also handle unhandled promise rejections (some chunk errors appear here)
|
|
1157
|
+
window.addEventListener('unhandledrejection', (event) => {
|
|
1158
|
+
const reason = event.reason?.message || event.reason?.toString() || '';
|
|
1159
|
+
const isChunkError = /Loading chunk [\d]+ failed|ChunkLoadError/i.test(reason);
|
|
1160
|
+
if (isChunkError) {
|
|
1161
|
+
console.warn('Chunk load error in promise, attempting recovery...');
|
|
1162
|
+
event.preventDefault();
|
|
1163
|
+
this.handleChunkLoadError();
|
|
1164
|
+
}
|
|
1165
|
+
});
|
|
1166
|
+
}
|
|
1167
|
+
handleChunkLoadError() {
|
|
1168
|
+
// Check if we've already tried to recover recently (prevent infinite loops)
|
|
1169
|
+
const lastReloadTime = localStorage.getItem('lastChunkErrorReload');
|
|
1170
|
+
const now = Date.now();
|
|
1171
|
+
if (lastReloadTime && (now - parseInt(lastReloadTime, 10)) < 5000) {
|
|
1172
|
+
console.error('Multiple chunk errors in short time, skipping auto-reload');
|
|
1173
|
+
return;
|
|
1174
|
+
}
|
|
1175
|
+
localStorage.setItem('lastChunkErrorReload', now.toString());
|
|
1176
|
+
// Clear cache and reload
|
|
1177
|
+
this.clearCacheAndReload();
|
|
1178
|
+
}
|
|
1179
|
+
clearCacheAndReload() {
|
|
1180
|
+
console.log('Clearing caches and reloading...');
|
|
1181
|
+
if ('caches' in window) {
|
|
1182
|
+
caches.keys().then(cacheNames => {
|
|
1183
|
+
return Promise.all(cacheNames.map(cacheName => {
|
|
1184
|
+
console.log('Deleting cache:', cacheName);
|
|
1185
|
+
return caches.delete(cacheName);
|
|
1186
|
+
}));
|
|
1187
|
+
}).then(() => {
|
|
1188
|
+
// Unregister all service workers
|
|
1189
|
+
if ('serviceWorker' in navigator) {
|
|
1190
|
+
return navigator.serviceWorker.getRegistrations().then(registrations => {
|
|
1191
|
+
return Promise.all(registrations.map(registration => {
|
|
1192
|
+
console.log('Unregistering service worker');
|
|
1193
|
+
return registration.unregister();
|
|
1194
|
+
}));
|
|
1195
|
+
});
|
|
1196
|
+
}
|
|
1197
|
+
}).then(() => {
|
|
1198
|
+
// Small delay to ensure cleanup completes
|
|
1199
|
+
setTimeout(() => {
|
|
1200
|
+
window.location.reload();
|
|
1201
|
+
}, 100);
|
|
1202
|
+
}).catch(err => {
|
|
1203
|
+
console.error('Error during cache cleanup:', err);
|
|
1204
|
+
// Reload anyway
|
|
1205
|
+
window.location.reload();
|
|
1206
|
+
});
|
|
1207
|
+
}
|
|
1208
|
+
else {
|
|
1209
|
+
window.location.reload();
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: ServiceWorkerHelperService, deps: [{ token: i1$2.SwUpdate }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1213
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: ServiceWorkerHelperService, providedIn: 'root' }); }
|
|
1214
|
+
}
|
|
1215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: ServiceWorkerHelperService, decorators: [{
|
|
1216
|
+
type: Injectable,
|
|
1217
|
+
args: [{
|
|
1218
|
+
providedIn: 'root'
|
|
1219
|
+
}]
|
|
1220
|
+
}], ctorParameters: () => [{ type: i1$2.SwUpdate }] });
|
|
1221
|
+
|
|
1051
1222
|
class AuthService {
|
|
1052
1223
|
static { this.user = null; }
|
|
1053
1224
|
get user() {
|
|
@@ -1350,7 +1521,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
1350
1521
|
class BBSFUtilitiesModule {
|
|
1351
1522
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: BBSFUtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1352
1523
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.16", ngImport: i0, type: BBSFUtilitiesModule, imports: [CommonModule,
|
|
1353
|
-
RouterModule, i1$
|
|
1524
|
+
RouterModule, i1$3.BlockUIModule], exports: [
|
|
1354
1525
|
// Re-export modules for backward compatibility
|
|
1355
1526
|
CommonModule,
|
|
1356
1527
|
RouterModule,
|
|
@@ -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/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 this.httpClient.get(\"./assets/config/configurations.json\")\r\n .subscribe(data => {\r\n ConfigurationService.JsonData = data as any[];\r\n });\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 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { EnvironmentService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n\r\n apiUrl = '/api/Home/';\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 environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (this.authService.isAuthenticated()) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n this.stylesBundleService.loadThemes(\r\n lang,\r\n bundleEnglishName,\r\n bundleArabicName\r\n );\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n\r\n reloadComponent() {\r\n let currentUrl = this.router.url;\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]);\r\n }\r\n\r\n private changeLanguage(key: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', AuthService.user.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() {\r\n return this.http.get(this.apiUrl + 'UpdateUserInfo', null, null);\r\n\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n this.updateRole(permissionSetID).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n });\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', AuthService.user.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}\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\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 // environment:any;\r\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\r\n this.translate.addLangs(this.availableLanguages);\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 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 { 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 if (!this._user) {\r\n this._user = this.getUserManager();\r\n }\r\n return this._user;\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\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 }\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 token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n if (!this.jwtHelper.isTokenExpired(token))\r\n this.handleAccessTokenWithoutLanguage(token);\r\n else\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n else {\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n return AuthService.user;\r\n }\r\n\r\n getUser() {\r\n this._user = AuthService.user;\r\n }\r\n storUser(User: any) {\r\n AuthService.user = this._user = this.user;\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 AuthService.user = this.user;\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\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 setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\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.map(t => clearInterval(t));\r\n AuthService.timers = [];\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 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 // 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\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 // Always start from a clean local state to prevent stale-user windows\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n const token = response;\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 this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n // Always start from a clean local state to prevent stale-user windows\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n const token = response;\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 this.setTokenSeconds();\r\n this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n AuthService.timers.push(this.checkRefreshToken());\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 return setInterval(() => {\r\n if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated()) {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n this.refresh();\r\n }\r\n }\r\n AuthService.seconds--;\r\n }, 1000);\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 refresh() {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\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((res: any) => {\r\n this.handleAccessTokenWithoutLanguage(res.val);\r\n });\r\n }\r\n\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}\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\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.EnvironmentService","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i1.BBSFTranslateService","i1.EnvironmentService","i1.RequestHandlerService","i2","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 this.httpClient.get(\"./assets/config/configurations.json\")\r\n .subscribe(data => {\r\n ConfigurationService.JsonData = data as any[];\r\n });\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 } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { EnvironmentService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n\r\n apiUrl = '/api/Home/';\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 environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (this.authService.isAuthenticated()) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n this.stylesBundleService.loadThemes(\r\n lang,\r\n bundleEnglishName,\r\n bundleArabicName\r\n );\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n }\r\n\r\n reloadComponent() {\r\n let currentUrl = this.router.url;\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]);\r\n }\r\n\r\n private changeLanguage(key: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', AuthService.user.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() {\r\n return this.http.get(this.apiUrl + 'UpdateUserInfo', null, null);\r\n\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n this.updateRole(permissionSetID).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token);\r\n });\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', AuthService.user.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}\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\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 // environment:any;\r\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\r\n this.translate.addLangs(this.availableLanguages);\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 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\r\n constructor(public updates: SwUpdate) {\r\n this.initializeServiceWorker();\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 // CRITICAL: Handle chunk load errors\r\n this.setupChunkErrorHandler();\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 // CRITICAL: Handle chunk load errors\r\n private setupChunkErrorHandler(): void {\r\n window.addEventListener('error', (event: ErrorEvent) => {\r\n const chunkFailedMessage = /Loading chunk [\\d]+ failed|ChunkLoadError/i;\r\n const isChunkError = event.message && chunkFailedMessage.test(event.message);\r\n\r\n if (isChunkError) {\r\n console.warn('Chunk load error detected, attempting recovery...');\r\n event.preventDefault(); // Prevent default error handling\r\n this.handleChunkLoadError();\r\n }\r\n });\r\n\r\n // Also handle unhandled promise rejections (some chunk errors appear here)\r\n window.addEventListener('unhandledrejection', (event: PromiseRejectionEvent) => {\r\n const reason = event.reason?.message || event.reason?.toString() || '';\r\n const isChunkError = /Loading chunk [\\d]+ failed|ChunkLoadError/i.test(reason);\r\n\r\n if (isChunkError) {\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\r\n private handleChunkLoadError(): void {\r\n // Check if we've already tried to recover recently (prevent infinite loops)\r\n const lastReloadTime = localStorage.getItem('lastChunkErrorReload');\r\n const now = Date.now();\r\n\r\n if (lastReloadTime && (now - parseInt(lastReloadTime, 10)) < 5000) {\r\n console.error('Multiple chunk errors in short time, skipping auto-reload');\r\n return;\r\n }\r\n\r\n localStorage.setItem('lastChunkErrorReload', now.toString());\r\n\r\n // Clear cache and reload\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 if (!this._user) {\r\n this._user = this.getUserManager();\r\n }\r\n return this._user;\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\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 }\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 token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n if (!this.jwtHelper.isTokenExpired(token))\r\n this.handleAccessTokenWithoutLanguage(token);\r\n else\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n else {\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n }\r\n return AuthService.user;\r\n }\r\n\r\n getUser() {\r\n this._user = AuthService.user;\r\n }\r\n storUser(User: any) {\r\n AuthService.user = this._user = this.user;\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 AuthService.user = this.user;\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\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 setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\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.map(t => clearInterval(t));\r\n AuthService.timers = [];\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 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 // 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\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 // Always start from a clean local state to prevent stale-user windows\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n const token = response;\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 this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n // Always start from a clean local state to prevent stale-user windows\r\n this.clearLocalAuthState({ keepRedirectUrl: true });\r\n const token = response;\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 this.setTokenSeconds();\r\n this._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n AuthService.timers.push(this.checkRefreshToken());\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 return setInterval(() => {\r\n if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated()) {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n this.refresh();\r\n }\r\n }\r\n AuthService.seconds--;\r\n }, 1000);\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 refresh() {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\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((res: any) => {\r\n this.handleAccessTokenWithoutLanguage(res.val);\r\n });\r\n }\r\n\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}\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\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.EnvironmentService","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i1.BBSFTranslateService","i1.EnvironmentService","i1.RequestHandlerService","i2","i2.BBSFTranslateService","i3","i4","i5.UtilityService"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SwUpdate } from '@angular/service-worker';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ServiceWorkerHelperService {
|
|
4
|
+
updates: SwUpdate;
|
|
5
|
+
private swRegistration;
|
|
6
|
+
private updateCheckInProgress;
|
|
7
|
+
constructor(updates: SwUpdate);
|
|
8
|
+
checkForUpdates(): void;
|
|
9
|
+
private setupUpdateListeners;
|
|
10
|
+
private startSmartUpdateChecking;
|
|
11
|
+
private performUpdateCheck;
|
|
12
|
+
private initializeServiceWorker;
|
|
13
|
+
private skipWaiting;
|
|
14
|
+
private setupChunkErrorHandler;
|
|
15
|
+
private handleChunkLoadError;
|
|
16
|
+
private clearCacheAndReload;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ServiceWorkerHelperService, never>;
|
|
18
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ServiceWorkerHelperService>;
|
|
19
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bnsights/bbsf-utilities",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/animations": "^19.2.14",
|
|
6
6
|
"@angular/cdk": "^19.2.19",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"lodash": "4.17.21",
|
|
16
16
|
"nanoid": "5.0.4",
|
|
17
|
-
"tslib": "2.6.2"
|
|
17
|
+
"tslib": "2.6.2",
|
|
18
|
+
"@angular/service-worker": "^19.2.15"
|
|
18
19
|
},
|
|
19
20
|
"optionalDependencies": {
|
|
20
21
|
"@auth0/angular-jwt": "5.2.0",
|
|
@@ -43,13 +44,13 @@
|
|
|
43
44
|
"types": "./http/index.d.ts",
|
|
44
45
|
"default": "./fesm2022/bnsights-bbsf-utilities-http.mjs"
|
|
45
46
|
},
|
|
46
|
-
"./ui": {
|
|
47
|
-
"types": "./ui/index.d.ts",
|
|
48
|
-
"default": "./fesm2022/bnsights-bbsf-utilities-ui.mjs"
|
|
49
|
-
},
|
|
50
47
|
"./translate": {
|
|
51
48
|
"types": "./translate/index.d.ts",
|
|
52
49
|
"default": "./fesm2022/bnsights-bbsf-utilities-translate.mjs"
|
|
50
|
+
},
|
|
51
|
+
"./ui": {
|
|
52
|
+
"types": "./ui/index.d.ts",
|
|
53
|
+
"default": "./fesm2022/bnsights-bbsf-utilities-ui.mjs"
|
|
53
54
|
}
|
|
54
55
|
},
|
|
55
56
|
"sideEffects": false
|