@igo2/core 1.13.0 → 1.13.1

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.
@@ -2,8 +2,8 @@ import * as i0 from '@angular/core';
2
2
  import { Injectable, NgModule, InjectionToken, APP_INITIALIZER, Injector, Inject, Optional, SkipSelf, EventEmitter } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { HTTP_INTERCEPTORS, HttpClient, HttpErrorResponse, HttpClientModule, HttpResponse } from '@angular/common/http';
5
- import { finalize, catchError, map, tap, debounceTime, startWith } from 'rxjs/operators';
6
- import { BehaviorSubject, throwError, combineLatest, Observable, fromEvent } from 'rxjs';
5
+ import { finalize, catchError, map, debounceTime, first, tap, startWith } from 'rxjs/operators';
6
+ import { BehaviorSubject, throwError, combineLatest, forkJoin, Observable, fromEvent } from 'rxjs';
7
7
  import { uuid, ObjectUtils } from '@igo2/utils';
8
8
  import * as i1 from '@ngx-translate/core';
9
9
  import { TranslateLoader, TranslateModule, MissingTranslationHandler } from '@ngx-translate/core';
@@ -100,8 +100,8 @@ IgoActivityModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
100
100
  }], null, null); })();
101
101
 
102
102
  const version = {
103
- lib: '1.13.0',
104
- releaseDate: 1665780785791
103
+ lib: '1.13.1',
104
+ releaseDate: 1667833050348
105
105
  };
106
106
 
107
107
  class ConfigService {
@@ -337,20 +337,24 @@ var MessageType;
337
337
  MessageType["WARNING"] = "warning";
338
338
  MessageType["INFO"] = "info";
339
339
  MessageType["SUCCESS"] = "success";
340
+ MessageType["SHOW"] = "show";
340
341
  })(MessageType || (MessageType = {}));
341
342
 
342
343
  class LanguageService {
343
344
  constructor(translate) {
344
345
  this.translate = translate;
345
346
  this.language = this.translate.getBrowserLang();
347
+ this.language$ = new BehaviorSubject(undefined);
346
348
  const lang = this.getLanguage();
347
349
  this.translate.setDefaultLang(lang);
350
+ this.language$.next(lang);
348
351
  }
349
352
  getLanguage() {
350
353
  return this.language.match(/en|fr/) ? this.language : 'en';
351
354
  }
352
355
  setLanguage(language) {
353
356
  this.language = language.match(/en|fr/) ? language : 'en';
357
+ this.language$.next(this.language);
354
358
  this.translate.use(this.language);
355
359
  this.translate.reloadLang(this.language);
356
360
  }
@@ -370,7 +374,39 @@ class MessageService {
370
374
  this.configService = configService;
371
375
  this.languageService = languageService;
372
376
  this.messages$ = new BehaviorSubject([]);
377
+ this.activeMessageTranslations = [];
373
378
  this.options = this.configService.getConfig('message') || {};
379
+ this.languageService.language$.pipe(debounceTime(500)).subscribe(r => {
380
+ if (this.toastr.toasts.length === 0) {
381
+ this.activeMessageTranslations = [];
382
+ }
383
+ this.toastr.toasts.map(toast => {
384
+ const activeMessageTranslation = this.activeMessageTranslations.find(amt => amt.id === toast.toastId);
385
+ if (activeMessageTranslation) {
386
+ const translatedTextInterpolateParams = { ...activeMessageTranslation.textInterpolateParams };
387
+ const translatedTitleInterpolateParams = { ...activeMessageTranslation.titleInterpolateParams };
388
+ if (activeMessageTranslation.textInterpolateParams) {
389
+ Object.keys(activeMessageTranslation.textInterpolateParams).map(k => {
390
+ translatedTextInterpolateParams[k] =
391
+ this.languageService.translate.instant(activeMessageTranslation.textInterpolateParams[k]);
392
+ });
393
+ }
394
+ if (activeMessageTranslation.titleInterpolateParams) {
395
+ Object.keys(activeMessageTranslation.titleInterpolateParams).map(k => {
396
+ translatedTitleInterpolateParams[k] =
397
+ this.languageService.translate.instant(activeMessageTranslation.titleInterpolateParams[k]);
398
+ });
399
+ }
400
+ forkJoin([
401
+ this.languageService.translate.get(activeMessageTranslation.textKey, translatedTextInterpolateParams),
402
+ this.languageService.translate.get(activeMessageTranslation.titleKey, translatedTitleInterpolateParams)
403
+ ]).pipe(first()).subscribe((res) => {
404
+ toast.toastRef.componentInstance.message = res[0];
405
+ toast.toastRef.componentInstance.title = res[1];
406
+ });
407
+ }
408
+ });
409
+ });
374
410
  }
375
411
  get toastr() {
376
412
  return this.injector.get(ToastrService);
@@ -380,6 +416,8 @@ class MessageService {
380
416
  return this.error(httpError.error.message, httpError.error.title);
381
417
  }
382
418
  message(message) {
419
+ const messageType = message.type;
420
+ this.toastr.toastrConfig.iconClasses[messageType] = `toast-${messageType}`;
383
421
  this.messages$.next(this.messages$.value.concat([message]));
384
422
  message.options = message.options || {};
385
423
  const currentDate = new Date();
@@ -392,50 +430,93 @@ class MessageService {
392
430
  message.options.to = new Date(Date.parse(message.options.to.replace(/-/g, ' ')));
393
431
  }
394
432
  if (currentDate > message.options.from && currentDate < message.options.to) {
433
+ if (message.showIcon === false) {
434
+ this.toastr.toastrConfig.iconClasses[messageType] = `toast-${messageType} toast-no-icon`;
435
+ }
395
436
  message = this.handleTemplate(message);
396
437
  if (message.text) {
397
438
  let messageShown;
398
439
  switch (message.type) {
399
440
  case MessageType.SUCCESS:
400
- messageShown = this.success(message.text, message.title, message.options);
441
+ messageShown = this.success(message.text, message.title, message.options, message.textInterpolateParams, message.titleInterpolateParams);
401
442
  break;
402
443
  case MessageType.ERROR:
403
- messageShown = this.error(message.text, message.title, message.options);
444
+ messageShown = this.error(message.text, message.title, message.options, message.textInterpolateParams, message.titleInterpolateParams);
404
445
  break;
405
446
  case MessageType.INFO:
406
- messageShown = this.info(message.text, message.title, message.options);
447
+ messageShown = this.info(message.text, message.title, message.options, message.textInterpolateParams, message.titleInterpolateParams);
448
+ break;
449
+ case MessageType.SHOW:
450
+ messageShown = this.show(message.text, message.title, message.options, message.textInterpolateParams, message.titleInterpolateParams);
407
451
  break;
408
452
  case MessageType.ALERT:
409
453
  case MessageType.WARNING:
410
- messageShown = this.alert(message.text, message.title, message.options);
454
+ messageShown = this.alert(message.text, message.title, message.options, message.textInterpolateParams, message.titleInterpolateParams);
411
455
  break;
412
456
  default:
413
- messageShown = this.info(message.text, message.title, message.options);
457
+ messageShown = this.info(message.text, message.title, message.options, message.textInterpolateParams, message.titleInterpolateParams);
414
458
  break;
415
459
  }
416
460
  message.options.id = messageShown.toastId;
417
461
  }
418
462
  }
419
463
  }
420
- success(text, title = 'igo.core.message.success', options = {}) {
421
- const message = this.languageService.translate.instant(text);
422
- const translatedTitle = this.languageService.translate.instant(title);
423
- return this.toastr.success(message, translatedTitle, options);
464
+ success(text, title = 'igo.core.message.success', options = {}, textInterpolateParams, titleInterpolateParams) {
465
+ return this.handleNgxToastr('success', text, title, options, textInterpolateParams, titleInterpolateParams);
466
+ }
467
+ error(text, title = 'igo.core.message.error', options = {}, textInterpolateParams, titleInterpolateParams) {
468
+ return this.handleNgxToastr('error', text, title, options, textInterpolateParams, titleInterpolateParams);
424
469
  }
425
- error(text, title = 'igo.core.message.error', options = {}) {
426
- const message = this.languageService.translate.instant(text);
427
- const translatedTitle = this.languageService.translate.instant(title);
428
- return this.toastr.error(message, translatedTitle, options);
470
+ info(text, title = 'igo.core.message.info', options = {}, textInterpolateParams, titleInterpolateParams) {
471
+ return this.handleNgxToastr('info', text, title, options, textInterpolateParams, titleInterpolateParams);
429
472
  }
430
- info(text, title = 'igo.core.message.info', options = {}) {
431
- const message = this.languageService.translate.instant(text);
432
- const translatedTitle = this.languageService.translate.instant(title);
433
- return this.toastr.info(message, translatedTitle, options);
473
+ alert(text, title = 'igo.core.message.alert', options = {}, textInterpolateParams, titleInterpolateParams) {
474
+ return this.handleNgxToastr('alert', text, title, options, textInterpolateParams, titleInterpolateParams);
434
475
  }
435
- alert(text, title = 'igo.core.message.alert', options = {}) {
436
- const message = this.languageService.translate.instant(text);
437
- const translatedTitle = this.languageService.translate.instant(title);
438
- return this.toastr.warning(message, translatedTitle, options);
476
+ show(text, title = 'igo.core.message.info', options = {}, textInterpolateParams, titleInterpolateParams) {
477
+ return this.handleNgxToastr('show', text, title, options, textInterpolateParams, titleInterpolateParams);
478
+ }
479
+ handleNgxToastr(type, text, title, options = {}, textInterpolateParams, titleInterpolateParams) {
480
+ const translatedTextInterpolateParams = { ...textInterpolateParams };
481
+ const translatedTitlenterpolateParams = { ...titleInterpolateParams };
482
+ if (textInterpolateParams) {
483
+ Object.keys(textInterpolateParams).map(k => {
484
+ translatedTextInterpolateParams[k] =
485
+ this.languageService.translate.instant(textInterpolateParams[k]);
486
+ });
487
+ }
488
+ if (titleInterpolateParams) {
489
+ Object.keys(titleInterpolateParams).map(k => {
490
+ translatedTitlenterpolateParams[k] =
491
+ this.languageService.translate.instant(titleInterpolateParams[k]);
492
+ });
493
+ }
494
+ const message = this.languageService.translate.instant(text, translatedTextInterpolateParams);
495
+ const translatedTitle = this.languageService.translate.instant(title, translatedTitlenterpolateParams);
496
+ let activeToast;
497
+ switch (type) {
498
+ case 'success':
499
+ activeToast = this.toastr.success(message, translatedTitle, options);
500
+ break;
501
+ case 'error':
502
+ activeToast = this.toastr.error(message, translatedTitle, options);
503
+ break;
504
+ case 'show':
505
+ case 'info':
506
+ activeToast = this.toastr.info(message, translatedTitle, options);
507
+ break;
508
+ case 'alert':
509
+ activeToast = this.toastr.warning(message, translatedTitle, options);
510
+ break;
511
+ }
512
+ this.activeMessageTranslations.push({
513
+ id: activeToast.toastId,
514
+ titleKey: title,
515
+ textKey: text,
516
+ textInterpolateParams,
517
+ titleInterpolateParams
518
+ });
519
+ return activeToast;
439
520
  }
440
521
  remove(id) {
441
522
  this.toastr.remove(id);
@@ -476,7 +557,14 @@ class ErrorInterceptor {
476
557
  constructor(injector) {
477
558
  this.injector = injector;
478
559
  }
479
- intercept(req, next) {
560
+ intercept(originalReq, next) {
561
+ const interceptError = originalReq.headers.get('interceptError');
562
+ const req = originalReq.clone({
563
+ headers: originalReq.headers.delete('interceptError')
564
+ });
565
+ if (interceptError === 'false') {
566
+ return next.handle(req);
567
+ }
480
568
  const errorContainer = { httpError: undefined };
481
569
  return next.handle(req).pipe(catchError(error => this.handleError(error, errorContainer)), finalize(() => {
482
570
  this.handleCaughtError(errorContainer);