@spartacus/core
Version:
Spartacus - the core framework
44 lines • 5.98 kB
JavaScript
import { Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { LANGUAGE_CONTEXT_ID } from '../providers/context-ids';
import * as i0 from "@angular/core";
import * as i1 from "../../state/services/state-persistence.service";
import * as i2 from "../facade/language.service";
import * as i3 from "../config/site-context-config";
export class LanguageStatePersistenceService {
constructor(statePersistenceService, languageService, config) {
this.statePersistenceService = statePersistenceService;
this.languageService = languageService;
this.config = config;
this.initialized$ = new ReplaySubject(1);
}
/**
* Initializes the synchronization of the active language with the local storage.
*
* @returns Observable that emits and completes when the value is read from the storage.
*/
initSync() {
this.statePersistenceService.syncWithStorage({
key: LANGUAGE_CONTEXT_ID,
state$: this.languageService.getActive(),
onRead: (state) => this.onRead(state),
});
return this.initialized$;
}
onRead(valueFromStorage) {
if (!this.languageService.isInitialized() && valueFromStorage) {
this.languageService.setActive(valueFromStorage);
}
if (!this.initialized$.closed) {
this.initialized$.next();
this.initialized$.complete();
}
}
}
LanguageStatePersistenceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LanguageStatePersistenceService, deps: [{ token: i1.StatePersistenceService }, { token: i2.LanguageService }, { token: i3.SiteContextConfig }], target: i0.ɵɵFactoryTarget.Injectable });
LanguageStatePersistenceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LanguageStatePersistenceService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: LanguageStatePersistenceService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.StatePersistenceService }, { type: i2.LanguageService }, { type: i3.SiteContextConfig }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3NpdGUtY29udGV4dC9zZXJ2aWNlcy9sYW5ndWFnZS1zdGF0ZS1wZXJzaXN0ZW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFHL0QsTUFBTSxPQUFPLCtCQUErQjtJQUMxQyxZQUNZLHVCQUFnRCxFQUNoRCxlQUFnQyxFQUNoQyxNQUF5QjtRQUZ6Qiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUczQixpQkFBWSxHQUFHLElBQUksYUFBYSxDQUFVLENBQUMsQ0FBQyxDQUFDO0lBRnBELENBQUM7SUFJSjs7OztPQUlHO0lBQ0ksUUFBUTtRQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLENBQUM7WUFDM0MsR0FBRyxFQUFFLG1CQUFtQjtZQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUU7WUFDeEMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUN0QyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVTLE1BQU0sQ0FBQyxnQkFBd0I7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLElBQUksZ0JBQWdCLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNsRDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDOzs0SEFoQ1UsK0JBQStCO2dJQUEvQiwrQkFBK0IsY0FEbEIsTUFBTTsyRkFDbkIsK0JBQStCO2tCQUQzQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RhdGUvc2VydmljZXMvc3RhdGUtcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTaXRlQ29udGV4dENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9zaXRlLWNvbnRleHQtY29uZmlnJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uL2ZhY2FkZS9sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IExBTkdVQUdFX0NPTlRFWFRfSUQgfSBmcm9tICcuLi9wcm92aWRlcnMvY29udGV4dC1pZHMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExhbmd1YWdlU3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2U6IFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnOiBTaXRlQ29udGV4dENvbmZpZ1xuICApIHt9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVkJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHVua25vd24+KDEpO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgc3luY2hyb25pemF0aW9uIG9mIHRoZSBhY3RpdmUgbGFuZ3VhZ2Ugd2l0aCB0aGUgbG9jYWwgc3RvcmFnZS5cbiAgICpcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGFuZCBjb21wbGV0ZXMgd2hlbiB0aGUgdmFsdWUgaXMgcmVhZCBmcm9tIHRoZSBzdG9yYWdlLlxuICAgKi9cbiAgcHVibGljIGluaXRTeW5jKCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHRoaXMuc3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2Uuc3luY1dpdGhTdG9yYWdlKHtcbiAgICAgIGtleTogTEFOR1VBR0VfQ09OVEVYVF9JRCxcbiAgICAgIHN0YXRlJDogdGhpcy5sYW5ndWFnZVNlcnZpY2UuZ2V0QWN0aXZlKCksXG4gICAgICBvblJlYWQ6IChzdGF0ZSkgPT4gdGhpcy5vblJlYWQoc3RhdGUpLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVkJDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblJlYWQodmFsdWVGcm9tU3RvcmFnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxhbmd1YWdlU2VydmljZS5pc0luaXRpYWxpemVkKCkgJiYgdmFsdWVGcm9tU3RvcmFnZSkge1xuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2Uuc2V0QWN0aXZlKHZhbHVlRnJvbVN0b3JhZ2UpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pbml0aWFsaXplZCQuY2xvc2VkKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVkJC5uZXh0KCk7XG4gICAgICB0aGlzLmluaXRpYWxpemVkJC5jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxufVxuIl19