ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
76 lines • 11.2 kB
JavaScript
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { combineLatest, Observable, of } from 'rxjs';
import { catchError, map, share } from 'rxjs/operators';
import { AppConfig } from '../../config/app-config';
import { Codes } from '../../util/codes';
import { OTranslateService } from './o-translate.service';
export class OTranslateHttpLoader extends TranslateHttpLoader {
constructor(httpClient, prefix = OTranslateService.ASSETS_PATH, suffix = OTranslateService.ASSETS_EXTENSION, injector) {
super(httpClient, prefix, suffix);
this.injector = injector;
this.appConfig = this.injector.get(AppConfig);
this.httpClient = httpClient;
}
getAssetsPath() {
return this.prefix;
}
getAssetsExtension() {
return this.suffix;
}
getLocalTranslation(lang) {
let innerObserver;
const dataObservable = new Observable(observer => innerObserver = observer).pipe(share());
super.getTranslation(lang)
.subscribe((res) => {
innerObserver.next(res);
innerObserver.complete();
}, error => {
innerObserver.next(undefined);
}, () => innerObserver.complete());
return dataObservable;
}
getTranslation(lang) {
const translationOrigins = [];
translationOrigins.push(this.getLocalTranslation(lang));
if (this.appConfig.useRemoteBundle()) {
translationOrigins.push(this.getRemoteBundle(lang));
}
let innerObserver;
const dataObservable = new Observable(observer => innerObserver = observer).pipe(share());
combineLatest(translationOrigins).subscribe((res) => {
const staticBundle = res[0] || {};
const remoteBundle = res[1] || {};
const allBundles = Object.assign(staticBundle, remoteBundle);
innerObserver.next(allBundles);
});
return dataObservable;
}
getRemoteBundle(lang) {
const bundleEndpoint = this.appConfig.getBundleEndpoint();
if (!bundleEndpoint) {
return of([]);
}
const url = bundleEndpoint + '?lang=' + lang;
return this.httpClient.get(url).pipe(map((resp) => {
if (resp.code === Codes.ONTIMIZE_SUCCESSFUL_CODE) {
return this.parseBundleResponse(resp.data);
}
return resp;
}), catchError(err => {
console.log('Remote Bundle service is not available', err);
return of([]);
}));
}
parseBundleResponse(data) {
const result = {};
if (data) {
data.forEach((item) => {
result[item[OTranslateHttpLoader.BUNDLE_KEY]] = item[OTranslateHttpLoader.BUNDLE_VALUE];
});
}
return result;
}
}
OTranslateHttpLoader.BUNDLE_KEY = 'key';
OTranslateHttpLoader.BUNDLE_VALUE = 'value';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmFuc2xhdGUtaHR0cC1sb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLWh0dHAtbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFRM0QsWUFDRSxVQUFzQixFQUN0QixTQUFpQixpQkFBaUIsQ0FBQyxXQUFXLEVBQzlDLFNBQWlCLGlCQUFpQixDQUFDLGdCQUFnQixFQUN6QyxRQUFrQjtRQUU1QixLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUZ4QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxN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bUIsQ0FBQyxJQUFXO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxRixDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7QUF6Rk0sK0JBQVUsR0FBRyxLQUFLLENBQUM7QUFDbkIsaUNBQVksR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZUh0dHBMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9odHRwLWxvYWRlcic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi9vLXRyYW5zbGF0ZS5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIE9UcmFuc2xhdGVIdHRwTG9hZGVyIGV4dGVuZHMgVHJhbnNsYXRlSHR0cExvYWRlciB7XG5cbiAgc3RhdGljIEJVTkRMRV9LRVkgPSAna2V5JztcbiAgc3RhdGljIEJVTkRMRV9WQUxVRSA9ICd2YWx1ZSc7XG5cbiAgcHJvdGVjdGVkIGFwcENvbmZpZzogQXBwQ29uZmlnO1xuICBwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIHByZWZpeDogc3RyaW5nID0gT1RyYW5zbGF0ZVNlcnZpY2UuQVNTRVRTX1BBVEgsXG4gICAgc3VmZml4OiBzdHJpbmcgPSBPVHJhbnNsYXRlU2VydmljZS5BU1NFVFNfRVhURU5TSU9OLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIoaHR0cENsaWVudCwgcHJlZml4LCBzdWZmaXgpO1xuICAgIHRoaXMuYXBwQ29uZmlnID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwQ29uZmlnKTtcbiAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xuICB9XG5cbiAgZ2V0QXNzZXRzUGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByZWZpeDtcbiAgfVxuXG4gIGdldEFzc2V0c0V4dGVuc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN1ZmZpeDtcbiAgfVxuXG4gIGdldExvY2FsVHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgaW5uZXJPYnNlcnZlcjogYW55O1xuICAgIGNvbnN0IGRhdGFPYnNlcnZhYmxlID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4gaW5uZXJPYnNlcnZlciA9IG9ic2VydmVyKS5waXBlKHNoYXJlKCkpO1xuICAgIHN1cGVyLmdldFRyYW5zbGF0aW9uKGxhbmcpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaW5uZXJPYnNlcnZlci5uZXh0KHJlcyk7XG4gICAgICAgIGlubmVyT2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgaW5uZXJPYnNlcnZlci5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICB9LFxuICAgICAgICAoKSA9PiBpbm5lck9ic2VydmVyLmNvbXBsZXRlKCkpO1xuICAgIHJldHVybiBkYXRhT2JzZXJ2YWJsZTtcbiAgfVxuXG4gIGdldFRyYW5zbGF0aW9uKGxhbmc6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25PcmlnaW5zOiBhbnlbXSA9IFtdO1xuXG4gICAgdHJhbnNsYXRpb25PcmlnaW5zLnB1c2godGhpcy5nZXRMb2NhbFRyYW5zbGF0aW9uKGxhbmcpKTtcblxuICAgIGlmICh0aGlzLmFwcENvbmZpZy51c2VSZW1vdGVCdW5kbGUoKSkge1xuICAgICAgdHJhbnNsYXRpb25PcmlnaW5zLnB1c2godGhpcy5nZXRSZW1vdGVCdW5kbGUobGFuZykpO1xuICAgIH1cblxuICAgIGxldCBpbm5lck9ic2VydmVyOiBhbnk7XG4gICAgY29uc3QgZGF0YU9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiBpbm5lck9ic2VydmVyID0gb2JzZXJ2ZXIpLnBpcGUoc2hhcmUoKSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KHRyYW5zbGF0aW9uT3JpZ2lucykuc3Vic2NyaWJlKChyZXM6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCBzdGF0aWNCdW5kbGUgPSByZXNbMF0gfHwge307XG4gICAgICBjb25zdCByZW1vdGVCdW5kbGUgPSByZXNbMV0gfHwge307XG4gICAgICBjb25zdCBhbGxCdW5kbGVzID0gT2JqZWN0LmFzc2lnbihzdGF0aWNCdW5kbGUsIHJlbW90ZUJ1bmRsZSk7XG4gICAgICBpbm5lck9ic2VydmVyLm5leHQoYWxsQnVuZGxlcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGFPYnNlcnZhYmxlO1xuICB9XG5cbiAgZ2V0UmVtb3RlQnVuZGxlKGxhbmc6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYnVuZGxlRW5kcG9pbnQgPSB0aGlzLmFwcENvbmZpZy5nZXRCdW5kbGVFbmRwb2ludCgpO1xuICAgIGlmICghYnVuZGxlRW5kcG9pbnQpIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IGJ1bmRsZUVuZHBvaW50ICsgJz9sYW5nPScgKyBsYW5nO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsKS5waXBlKFxuICAgICAgbWFwKChyZXNwOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlc3AuY29kZSA9PT0gQ29kZXMuT05USU1JWkVfU1VDQ0VTU0ZVTF9DT0RFKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VCdW5kbGVSZXNwb25zZShyZXNwLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNwO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdSZW1vdGUgQnVuZGxlIHNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZScsIGVycik7XG4gICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VCdW5kbGVSZXNwb25zZShkYXRhOiBhbnlbXSk6IGFueSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICByZXN1bHRbaXRlbVtPVHJhbnNsYXRlSHR0cExvYWRlci5CVU5ETEVfS0VZXV0gPSBpdGVtW09UcmFuc2xhdGVIdHRwTG9hZGVyLkJVTkRMRV9WQUxVRV07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG59XG4iXX0=