@spartacus/core
Version:
Spartacus - the core framework
56 lines • 7.54 kB
JavaScript
import { Injectable } from '@angular/core';
import { switchMap, tap } from 'rxjs/operators';
import { getContextParameterDefault } from '../config/context-config-utils';
import { CURRENCY_CONTEXT_ID } from '../providers';
import * as i0 from "@angular/core";
import * as i1 from "../facade";
import * as i2 from "./currency-state-persistence.service";
import * as i3 from "../../config";
export class CurrencyInitializer {
constructor(currencyService, currencyStatePersistenceService, configInit) {
this.currencyService = currencyService;
this.currencyStatePersistenceService = currencyStatePersistenceService;
this.configInit = configInit;
}
/**
* Initializes the value of the active currency.
*/
initialize() {
this.subscription = this.configInit
.getStable('context')
.pipe(
// TODO(#12351): <--- plug here explicitly SiteContextRoutesHandler
switchMap(() => this.currencyStatePersistenceService.initSync()), switchMap(() => this.setFallbackValue()))
.subscribe();
}
/**
* On subscription to the returned observable:
*
* Sets the default value taken from config, unless the active currency has been already initialized.
*/
setFallbackValue() {
return this.configInit
.getStable('context')
.pipe(tap((config) => this.setDefaultFromConfig(config)));
}
/**
* Sets the active currency value based on the default value from the config,
* unless the active currency has been already initialized.
*/
setDefaultFromConfig(config) {
if (!this.currencyService.isInitialized()) {
this.currencyService.setActive(getContextParameterDefault(config, CURRENCY_CONTEXT_ID));
}
}
ngOnDestroy() {
var _a;
(_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
}
}
CurrencyInitializer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CurrencyInitializer, deps: [{ token: i1.CurrencyService }, { token: i2.CurrencyStatePersistenceService }, { token: i3.ConfigInitializerService }], target: i0.ɵɵFactoryTarget.Injectable });
CurrencyInitializer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CurrencyInitializer, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CurrencyInitializer, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.CurrencyService }, { type: i2.CurrencyStatePersistenceService }, { type: i3.ConfigInitializerService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3ktaW5pdGlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9zaXRlLWNvbnRleHQvc2VydmljZXMvY3VycmVuY3ktaW5pdGlhbGl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFJbkQsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUNZLGVBQWdDLEVBQ2hDLCtCQUFnRSxFQUNoRSxVQUFvQztRQUZwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0NBQStCLEdBQS9CLCtCQUErQixDQUFpQztRQUNoRSxlQUFVLEdBQVYsVUFBVSxDQUEwQjtJQUM3QyxDQUFDO0lBRUo7O09BRUc7SUFDSCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVTthQUNoQyxTQUFTLENBQUMsU0FBUyxDQUFDO2FBQ3BCLElBQUk7UUFDSCxtRUFBbUU7UUFDbkUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUNoRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FDekM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGdCQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLFNBQVMsQ0FBQyxTQUFTLENBQUM7YUFDcEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE1BQXlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN0RSxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNPLG9CQUFvQixDQUFDLE1BQXlCO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUM1QiwwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FDeEQsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELFdBQVc7O1FBQ1QsTUFBQSxJQUFJLENBQUMsWUFBWSwwQ0FBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOztnSEFsRFUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FETixNQUFNOzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlnSW5pdGlhbGl6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IGdldENvbnRleHRQYXJhbWV0ZXJEZWZhdWx0IH0gZnJvbSAnLi4vY29uZmlnL2NvbnRleHQtY29uZmlnLXV0aWxzJztcbmltcG9ydCB7IFNpdGVDb250ZXh0Q29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3NpdGUtY29udGV4dC1jb25maWcnO1xuaW1wb3J0IHsgQ3VycmVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZmFjYWRlJztcbmltcG9ydCB7IENVUlJFTkNZX0NPTlRFWFRfSUQgfSBmcm9tICcuLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgQ3VycmVuY3lTdGF0ZVBlcnNpc3RlbmNlU2VydmljZSB9IGZyb20gJy4vY3VycmVuY3ktc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lJbml0aWFsaXplciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY3VycmVuY3lTZXJ2aWNlOiBDdXJyZW5jeVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGN1cnJlbmN5U3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2U6IEN1cnJlbmN5U3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ0luaXQ6IENvbmZpZ0luaXRpYWxpemVyU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSB2YWx1ZSBvZiB0aGUgYWN0aXZlIGN1cnJlbmN5LlxuICAgKi9cbiAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29uZmlnSW5pdFxuICAgICAgLmdldFN0YWJsZSgnY29udGV4dCcpXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gVE9ETygjMTIzNTEpOiA8LS0tIHBsdWcgaGVyZSBleHBsaWNpdGx5IFNpdGVDb250ZXh0Um91dGVzSGFuZGxlclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5jdXJyZW5jeVN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlLmluaXRTeW5jKCkpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zZXRGYWxsYmFja1ZhbHVlKCkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogT24gc3Vic2NyaXB0aW9uIHRvIHRoZSByZXR1cm5lZCBvYnNlcnZhYmxlOlxuICAgKlxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IHZhbHVlIHRha2VuIGZyb20gY29uZmlnLCB1bmxlc3MgdGhlIGFjdGl2ZSBjdXJyZW5jeSBoYXMgYmVlbiBhbHJlYWR5IGluaXRpYWxpemVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldEZhbGxiYWNrVmFsdWUoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnSW5pdFxuICAgICAgLmdldFN0YWJsZSgnY29udGV4dCcpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjb25maWc6IFNpdGVDb250ZXh0Q29uZmlnKSA9PiB0aGlzLnNldERlZmF1bHRGcm9tQ29uZmlnKGNvbmZpZykpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSBjdXJyZW5jeSB2YWx1ZSBiYXNlZCBvbiB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBjb25maWcsXG4gICAqIHVubGVzcyB0aGUgYWN0aXZlIGN1cnJlbmN5IGhhcyBiZWVuIGFscmVhZHkgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0RGVmYXVsdEZyb21Db25maWcoY29uZmlnOiBTaXRlQ29udGV4dENvbmZpZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jdXJyZW5jeVNlcnZpY2UuaXNJbml0aWFsaXplZCgpKSB7XG4gICAgICB0aGlzLmN1cnJlbmN5U2VydmljZS5zZXRBY3RpdmUoXG4gICAgICAgIGdldENvbnRleHRQYXJhbWV0ZXJEZWZhdWx0KGNvbmZpZywgQ1VSUkVOQ1lfQ09OVEVYVF9JRClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==