All files / ngx-translate si-translate-ngxt.service-builder.ts

100% Statements 9/9
100% Branches 1/1
100% Functions 1/1
100% Lines 8/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37                                        1x 16x       21x   21x 21x 16x 16x     21x      
/**
 * Copyright (c) Siemens 2016 - 2025
 * SPDX-License-Identifier: MIT
 */
import { Injectable, Injector } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import {
  SiTranslateService,
  SiTranslateServiceBuilder
} from '@siemens/element-translate-ng/translate';
 
import { SiTranslateNgxTService } from './si-translate-ngxt.service';
 
/**
 * Builds {@link SiTranslateNgxTService} for each {@link TranslateService}.
 * The builder will create a new Service if a new {@link TranslateService} is found to support the isolated mode.
 *
 * @internal
 */
@Injectable()
export class SiTranslateNgxTServiceBuilder extends SiTranslateServiceBuilder {
  private serviceCache = new Map<TranslateService, SiTranslateNgxTService>();
 
  buildService(injector: Injector): SiTranslateService {
    // Get instance of NGX Translate via injector instance of the current scope (see isolated mode)
    const ngxTranslateService = injector.get(TranslateService);
 
    let ngxTServiceWrapper = this.serviceCache.get(ngxTranslateService);
    if (!ngxTServiceWrapper) {
      ngxTServiceWrapper = new SiTranslateNgxTService(ngxTranslateService);
      this.serviceCache.set(ngxTranslateService, ngxTServiceWrapper);
    }
 
    return ngxTServiceWrapper;
  }
}