@spartacus/core
Version:
Spartacus - the core framework
75 lines • 10.4 kB
JavaScript
import { Injectable } from '@angular/core';
import { select } from '@ngrx/store';
import { filter, map, switchMap, take, tap } from 'rxjs/operators';
import { getContextParameterValues } from '../config/context-config-utils';
import { BASE_SITE_CONTEXT_ID } from '../providers/context-ids';
import { SiteContextActions } from '../store/actions/index';
import { SiteContextSelectors } from '../store/selectors/index';
import * as i0 from "@angular/core";
import * as i1 from "@ngrx/store";
import * as i2 from "../config/site-context-config";
export class BaseSiteService {
constructor(store, config) {
this.store = store;
this.config = config;
}
/**
* Represents the current baseSite uid.
*/
getActive() {
return this.store.pipe(select(SiteContextSelectors.getActiveBaseSite), filter((active) => Boolean(active)));
}
/**
* Get all base sites data
*/
getAll() {
return this.store.pipe(select(SiteContextSelectors.getAllBaseSites), tap((sites) => {
if (!sites) {
this.store.dispatch(new SiteContextActions.LoadBaseSites());
}
}), filter((sites) => Boolean(sites)));
}
/**
* Get base site data based on site uid
*/
get(siteUid) {
if (siteUid) {
return this.getAll().pipe(map((sites) => sites.find((site) => site.uid === siteUid)));
}
return this.getActive().pipe(switchMap((activeSiteUid) => this.getAll().pipe(map((sites) => sites.find((site) => site.uid === activeSiteUid)))));
}
setActive(baseSite) {
this.store
.pipe(select(SiteContextSelectors.getActiveBaseSite), take(1))
.subscribe((activeBaseSite) => {
if (baseSite && activeBaseSite !== baseSite) {
this.store.dispatch(new SiteContextActions.SetActiveBaseSite(baseSite));
}
});
}
/**
* Tells whether the value of the base site has been already initialized
*/
isInitialized() {
let valueInitialized = false;
this.getActive()
.subscribe(() => (valueInitialized = true))
.unsubscribe();
return valueInitialized;
}
/**
* Tells whether the given iso code is allowed.
*
* The list of allowed iso codes can be configured in the `context` config of Spartacus.
*/
isValid(value) {
return (!!value &&
getContextParameterValues(this.config, BASE_SITE_CONTEXT_ID).includes(value));
}
}
BaseSiteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: BaseSiteService, deps: [{ token: i1.Store }, { token: i2.SiteContextConfig }], target: i0.ɵɵFactoryTarget.Injectable });
BaseSiteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: BaseSiteService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: BaseSiteService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.SiteContextConfig }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zaXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9zaXRlLWNvbnRleHQvZmFjYWRlL2Jhc2Utc2l0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBS2hFLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ1ksS0FBa0MsRUFDbEMsTUFBeUI7UUFEekIsVUFBSyxHQUFMLEtBQUssQ0FBNkI7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7SUFDbEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxFQUM5QyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsRUFDNUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQzthQUM3RDtRQUNILENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ2xDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsT0FBZ0I7UUFDbEIsSUFBSSxPQUFPLEVBQUU7WUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUMzRCxDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQzFCLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQ2hCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUNqRSxDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLENBQUMsUUFBZ0I7UUFDeEIsSUFBSSxDQUFDLEtBQUs7YUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzdELFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzVCLElBQUksUUFBUSxJQUFJLGNBQWMsS0FBSyxRQUFRLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixJQUFJLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUNuRCxDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxFQUFFO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDMUMsV0FBVyxFQUFFLENBQUM7UUFFakIsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLE9BQU8sQ0FBQyxLQUFhO1FBQzdCLE9BQU8sQ0FDTCxDQUFDLENBQUMsS0FBSztZQUNQLHlCQUF5QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQ25FLEtBQUssQ0FDTixDQUNGLENBQUM7SUFDSixDQUFDOzs0R0F0RlUsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFzZVNpdGUgfSBmcm9tICcuLi8uLi9tb2RlbC9taXNjLm1vZGVsJztcbmltcG9ydCB7IGdldENvbnRleHRQYXJhbWV0ZXJWYWx1ZXMgfSBmcm9tICcuLi9jb25maWcvY29udGV4dC1jb25maWctdXRpbHMnO1xuaW1wb3J0IHsgU2l0ZUNvbnRleHRDb25maWcgfSBmcm9tICcuLi9jb25maWcvc2l0ZS1jb250ZXh0LWNvbmZpZyc7XG5pbXBvcnQgeyBCQVNFX1NJVEVfQ09OVEVYVF9JRCB9IGZyb20gJy4uL3Byb3ZpZGVycy9jb250ZXh0LWlkcyc7XG5pbXBvcnQgeyBTaXRlQ29udGV4dEFjdGlvbnMgfSBmcm9tICcuLi9zdG9yZS9hY3Rpb25zL2luZGV4JztcbmltcG9ydCB7IFNpdGVDb250ZXh0U2VsZWN0b3JzIH0gZnJvbSAnLi4vc3RvcmUvc2VsZWN0b3JzL2luZGV4JztcbmltcG9ydCB7IFN0YXRlV2l0aFNpdGVDb250ZXh0IH0gZnJvbSAnLi4vc3RvcmUvc3RhdGUnO1xuaW1wb3J0IHsgU2l0ZUNvbnRleHQgfSBmcm9tICcuL3NpdGUtY29udGV4dC5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmFzZVNpdGVTZXJ2aWNlIGltcGxlbWVudHMgU2l0ZUNvbnRleHQ8QmFzZVNpdGU+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxTdGF0ZVdpdGhTaXRlQ29udGV4dD4sXG4gICAgcHJvdGVjdGVkIGNvbmZpZzogU2l0ZUNvbnRleHRDb25maWdcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IGJhc2VTaXRlIHVpZC5cbiAgICovXG4gIGdldEFjdGl2ZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICBzZWxlY3QoU2l0ZUNvbnRleHRTZWxlY3RvcnMuZ2V0QWN0aXZlQmFzZVNpdGUpLFxuICAgICAgZmlsdGVyKChhY3RpdmUpID0+IEJvb2xlYW4oYWN0aXZlKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYmFzZSBzaXRlcyBkYXRhXG4gICAqL1xuICBnZXRBbGwoKTogT2JzZXJ2YWJsZTxCYXNlU2l0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUucGlwZShcbiAgICAgIHNlbGVjdChTaXRlQ29udGV4dFNlbGVjdG9ycy5nZXRBbGxCYXNlU2l0ZXMpLFxuICAgICAgdGFwKChzaXRlcykgPT4ge1xuICAgICAgICBpZiAoIXNpdGVzKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgU2l0ZUNvbnRleHRBY3Rpb25zLkxvYWRCYXNlU2l0ZXMoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKChzaXRlcykgPT4gQm9vbGVhbihzaXRlcykpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYmFzZSBzaXRlIGRhdGEgYmFzZWQgb24gc2l0ZSB1aWRcbiAgICovXG4gIGdldChzaXRlVWlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYXNlU2l0ZSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmIChzaXRlVWlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRBbGwoKS5waXBlKFxuICAgICAgICBtYXAoKHNpdGVzKSA9PiBzaXRlcy5maW5kKChzaXRlKSA9PiBzaXRlLnVpZCA9PT0gc2l0ZVVpZCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGFjdGl2ZVNpdGVVaWQpID0+XG4gICAgICAgIHRoaXMuZ2V0QWxsKCkucGlwZShcbiAgICAgICAgICBtYXAoKHNpdGVzKSA9PiBzaXRlcy5maW5kKChzaXRlKSA9PiBzaXRlLnVpZCA9PT0gYWN0aXZlU2l0ZVVpZCkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc2V0QWN0aXZlKGJhc2VTaXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlXG4gICAgICAucGlwZShzZWxlY3QoU2l0ZUNvbnRleHRTZWxlY3RvcnMuZ2V0QWN0aXZlQmFzZVNpdGUpLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoYWN0aXZlQmFzZVNpdGUpID0+IHtcbiAgICAgICAgaWYgKGJhc2VTaXRlICYmIGFjdGl2ZUJhc2VTaXRlICE9PSBiYXNlU2l0ZSkge1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgICBuZXcgU2l0ZUNvbnRleHRBY3Rpb25zLlNldEFjdGl2ZUJhc2VTaXRlKGJhc2VTaXRlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbGxzIHdoZXRoZXIgdGhlIHZhbHVlIG9mIHRoZSBiYXNlIHNpdGUgaGFzIGJlZW4gYWxyZWFkeSBpbml0aWFsaXplZFxuICAgKi9cbiAgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICBsZXQgdmFsdWVJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMuZ2V0QWN0aXZlKClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHZhbHVlSW5pdGlhbGl6ZWQgPSB0cnVlKSlcbiAgICAgIC51bnN1YnNjcmliZSgpO1xuXG4gICAgcmV0dXJuIHZhbHVlSW5pdGlhbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGVsbHMgd2hldGhlciB0aGUgZ2l2ZW4gaXNvIGNvZGUgaXMgYWxsb3dlZC5cbiAgICpcbiAgICogVGhlIGxpc3Qgb2YgYWxsb3dlZCBpc28gY29kZXMgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIGBjb250ZXh0YCBjb25maWcgb2YgU3BhcnRhY3VzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVmFsaWQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIXZhbHVlICYmXG4gICAgICBnZXRDb250ZXh0UGFyYW1ldGVyVmFsdWVzKHRoaXMuY29uZmlnLCBCQVNFX1NJVEVfQ09OVEVYVF9JRCkuaW5jbHVkZXMoXG4gICAgICAgIHZhbHVlXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19