diff --git a/projects/angular-sdk/src/angular-sdk.module.ts b/projects/angular-sdk/src/angular-sdk.module.ts index c32ee09..94f51f7 100644 --- a/projects/angular-sdk/src/angular-sdk.module.ts +++ b/projects/angular-sdk/src/angular-sdk.module.ts @@ -2,10 +2,7 @@ import { NgModule } from '@angular/core'; import { FlexLayoutModule } from '@angular/flex-layout'; import { HttpClientModule } from '@angular/common/http'; -import { - CommonModule, - DecimalPipe, -} from '@angular/common'; +import { CommonModule, DecimalPipe, registerLocaleData } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; @@ -36,6 +33,14 @@ import { HopperEventsService } from './services/hopper-events.service'; import { GlobalEventComponent } from './components/global-event.component'; import { LoggerService } from './services/logger.service'; +import localeFr from '@angular/common/locales/fr'; +import localeEn from '@angular/common/locales/en'; +import localeZh from '@angular/common/locales/zh'; + +registerLocaleData(localeFr, 'fr'); +registerLocaleData(localeEn, 'en'); +registerLocaleData(localeZh, 'zh'); + @NgModule({ declarations: [ // Component @@ -43,7 +48,7 @@ import { LoggerService } from './services/logger.service'; GlobalEventComponent, CfarOfferBannerComponent, CfarOfferBannerLargeComponent, - CfarOfferDialogComponent + CfarOfferDialogComponent, ], imports: [ // Angular Module diff --git a/projects/angular-sdk/src/components/cfar-offer-banner/cfar-offer-banner.component.ts b/projects/angular-sdk/src/components/cfar-offer-banner/cfar-offer-banner.component.ts index fd72010..5ef8040 100644 --- a/projects/angular-sdk/src/components/cfar-offer-banner/cfar-offer-banner.component.ts +++ b/projects/angular-sdk/src/components/cfar-offer-banner/cfar-offer-banner.component.ts @@ -137,7 +137,7 @@ export class CfarOfferBannerComponent } }, error: (error) => { - console.error(error); + this._loggerService.error('failed to close dialog', {}, error); }, }); } diff --git a/projects/angular-sdk/src/components/cfar-offer-dialog/cfar-offer-dialog.component.ts b/projects/angular-sdk/src/components/cfar-offer-dialog/cfar-offer-dialog.component.ts index 49a9aaa..05ccf42 100644 --- a/projects/angular-sdk/src/components/cfar-offer-dialog/cfar-offer-dialog.component.ts +++ b/projects/angular-sdk/src/components/cfar-offer-dialog/cfar-offer-dialog.component.ts @@ -246,7 +246,11 @@ export class CfarOfferDialogComponent .subscribe({ next: () => {}, error: (error) => { - console.error(error); + this._loggerService.error( + 'failed to send offer takeover display event', + {}, + error, + ); }, }); } @@ -266,7 +270,7 @@ export class CfarOfferDialogComponent .subscribe({ next: () => {}, error: (error) => { - console.error(error); + this._loggerService.error('failed to send t&c event', {}, error); }, }); } @@ -286,7 +290,11 @@ export class CfarOfferDialogComponent .subscribe({ next: () => {}, error: (error) => { - console.error(error); + this._loggerService.error( + 'failed to send deny purchase event', + {}, + error, + ); }, }); } diff --git a/projects/angular-sdk/src/components/global-event.component.ts b/projects/angular-sdk/src/components/global-event.component.ts index 43eed4d..77b09a6 100644 --- a/projects/angular-sdk/src/components/global-event.component.ts +++ b/projects/angular-sdk/src/components/global-event.component.ts @@ -1,9 +1,6 @@ import { ChangeDetectorRef, Directive } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; -import { - UiSource, - UiVariant, -} from '../apis/hopper-cloud-airline/v1'; +import { UiSource, UiVariant } from '../apis/hopper-cloud-airline/v1'; import { take } from 'rxjs/operators'; import { GlobalComponent } from './global.component'; import { HopperEventsService } from '../services/hopper-events.service'; @@ -78,7 +75,11 @@ export class GlobalEventComponent extends GlobalComponent { } }, error: (error) => { - console.error(error); + this._loggerService.error( + 'failed to send banner display event', + {}, + error, + ); }, }); } @@ -97,7 +98,11 @@ export class GlobalEventComponent extends GlobalComponent { .subscribe({ next: () => {}, error: (error) => { - console.error(error); + this._loggerService.error( + 'failed to send warning message event', + {}, + error, + ); }, }); } @@ -117,7 +122,7 @@ export class GlobalEventComponent extends GlobalComponent { .subscribe({ next: () => {}, error: (error) => { - console.error(error); + this._loggerService.error('failed to send t&c event', {}, error); }, }); } @@ -137,7 +142,11 @@ export class GlobalEventComponent extends GlobalComponent { .subscribe({ next: () => {}, error: (error) => { - console.error(error); + this._loggerService.error( + 'failed to send deny purchase event', + {}, + error, + ); }, }); } diff --git a/projects/angular-sdk/src/components/global.component.ts b/projects/angular-sdk/src/components/global.component.ts index f1e8cb5..3303f04 100644 --- a/projects/angular-sdk/src/components/global.component.ts +++ b/projects/angular-sdk/src/components/global.component.ts @@ -27,7 +27,6 @@ import { Error } from '../apis/hopper-cloud-airline/v1'; import { ErrorSdkModel } from '../models'; import { LoggerService } from '../services/logger.service'; import { ErrorCode } from '../enums/error-code.enum'; -import { registerLocaleData } from '@angular/common'; @Directive({ selector: '[HopperGlobalComponent]', @@ -69,6 +68,7 @@ export class GlobalComponent implements OnChanges { ngOnInit(): void { this._loggerService.setEnv(this.env); + this._loggerService.info('sdk initialized'); } ngOnChanges(changes: SimpleChanges): void { @@ -93,13 +93,6 @@ export class GlobalComponent implements OnChanges { protected _updateLanguage(newLanguage: string): void { // Set language for components this._translateService.use(newLanguage); - - import( - /* webpackExclude: /\.d\.ts$/ */ - /* webpackMode: "lazy-once" */ - /* webpackChunkName: "i18n-extra" */ - `@/../node_modules/@angular/common/locales/${newLanguage}.mjs` - ).then(module => registerLocaleData(module.default)); } protected _getHcAirlinesErrorResponse( @@ -115,7 +108,6 @@ export class GlobalComponent implements OnChanges { mainApiError.code || ErrorCode.RF009, ); } else { - console.error(apiError); return HcAirlinesError.buildDefault(); } } @@ -142,7 +134,8 @@ export class GlobalComponent implements OnChanges { }; } - protected _fakeCfarContractId: string = '1ecf85ab-211f-68b7-9bb3-4b1a314f1a42'; + protected _fakeCfarContractId: string = + '1ecf85ab-211f-68b7-9bb3-4b1a314f1a42'; protected _buildFakePostCfarOffersResponse(): CfarOfferCustomer[] { return [ @@ -374,7 +367,7 @@ export class GlobalComponent implements OnChanges { premium: '10.00', }; } - + // ----------------------------------------------- // Public Methods // ----------------------------------------------- @@ -397,8 +390,9 @@ export class GlobalComponent implements OnChanges { // Errors // ********************* - public handleApiError(error: any, errorEndPoint: string) { + public handleApiError(error: HttpErrorResponse, errorEndPoint: string) { const builtError = this._getHcAirlinesErrorResponse(error); + this._loggerService.error(error.message, {}, error); if (builtError !== null) { this.errorCode = builtError.code; diff --git a/projects/angular-sdk/src/services/logger.service.ts b/projects/angular-sdk/src/services/logger.service.ts index d2d5d4a..00146e8 100644 --- a/projects/angular-sdk/src/services/logger.service.ts +++ b/projects/angular-sdk/src/services/logger.service.ts @@ -1,5 +1,11 @@ import { Injectable } from '@angular/core'; -import { HandlerType, datadogLogs as datadog } from '@datadog/browser-logs'; +import { + HandlerType, + Logger, + datadogLogs as datadog, +} from '@datadog/browser-logs'; + +import packageFile from '../../package.json'; @Injectable() export class LoggerService { @@ -9,12 +15,13 @@ export class LoggerService { constructor() { const _initConfig = { - clientToken: 'pubf78a0a6e00c46c5f03f09a96e79bb939', - site: 'datadoghq.com', + clientToken: 'pubc1227a869b47ba8b221db32fc8caacfc', + site: 'us5.datadoghq.com', service: 'hts-airlines-angular-sdk', forwardErrorsToLogs: true, sessionSampleRate: 100, silentMultipleInit: true, + version: packageFile.version, }; datadog.init(_initConfig); @@ -37,23 +44,24 @@ export class LoggerService { public setEnv(env?: string): void { this._env = env ? env : 'production'; - datadog.setGlobalContext({ env: this._env }); this._context.data.jsonPayload.env = env; this._logger.setContext(this._context); this._logger.setHandler( - this._env === 'production' ? HandlerType.http : HandlerType.console, + this._env === 'production' + ? HandlerType.http + : [HandlerType.http, HandlerType.console], ); } - public info(message: string): void { - this._logger.info(message); + public info(...params: Parameters) { + this._logger.info(...params); } - public warn(message: string): void { - this._logger.warn(message); + public warn(...params: Parameters) { + this._logger.warn(...params); } - public error(message: string): void { - this._logger.error(message); + public error(...params: Parameters): void { + this._logger.error(...params); } }