@spartacus/tracking
Version:
Spartacus tracking and personalization library
68 lines • 10.6 kB
JavaScript
import { HttpResponse, } from '@angular/common/http';
import { Injectable, isDevMode } from '@angular/core';
import { tap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "../config/personalization-config";
import * as i2 from "@spartacus/core";
const PERSONALIZATION_ID_KEY = 'personalization-id';
export class OccPersonalizationIdInterceptor {
constructor(config, occEndpoints, winRef) {
var _a, _b, _c, _d, _e, _f;
this.config = config;
this.occEndpoints = occEndpoints;
this.winRef = winRef;
this.enabled = false;
if (this.winRef.isBrowser()) {
this.enabled =
(this.winRef.localStorage && ((_a = this.config.personalization) === null || _a === void 0 ? void 0 : _a.enabled)) ||
false;
if (this.enabled) {
if (!((_b = this.config.personalization) === null || _b === void 0 ? void 0 : _b.httpHeaderName) && isDevMode()) {
console.warn(`There is no httpHeaderName configured in Personalization`);
}
this.requestHeader =
(_d = (_c = this.config.personalization) === null || _c === void 0 ? void 0 : _c.httpHeaderName) === null || _d === void 0 ? void 0 : _d.id.toLowerCase();
this.personalizationId = (_e = this.winRef.localStorage) === null || _e === void 0 ? void 0 : _e.getItem(PERSONALIZATION_ID_KEY);
}
else if ((_f = this.winRef.localStorage) === null || _f === void 0 ? void 0 : _f.getItem(PERSONALIZATION_ID_KEY)) {
this.winRef.localStorage.removeItem(PERSONALIZATION_ID_KEY);
}
}
}
intercept(request, next) {
if (!this.enabled) {
return next.handle(request);
}
if (this.requestHeader &&
this.personalizationId &&
request.url.includes(this.occEndpoints.getBaseUrl())) {
request = request.clone({
setHeaders: {
[this.requestHeader]: this.personalizationId,
},
});
}
return next.handle(request).pipe(tap((event) => {
var _a;
if (event instanceof HttpResponse) {
if (this.requestHeader &&
event.headers.keys().includes(this.requestHeader)) {
const receivedId = event.headers.get(this.requestHeader);
if (this.personalizationId !== receivedId) {
this.personalizationId = receivedId;
if (this.personalizationId) {
(_a = this.winRef.localStorage) === null || _a === void 0 ? void 0 : _a.setItem(PERSONALIZATION_ID_KEY, this.personalizationId);
}
}
}
}
}));
}
}
OccPersonalizationIdInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccPersonalizationIdInterceptor, deps: [{ token: i1.PersonalizationConfig }, { token: i2.OccEndpointsService }, { token: i2.WindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
OccPersonalizationIdInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccPersonalizationIdInterceptor, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccPersonalizationIdInterceptor, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.PersonalizationConfig }, { type: i2.OccEndpointsService }, { type: i2.WindowRef }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NjLXBlcnNvbmFsaXphdGlvbi1pZC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2ZlYXR1cmUtbGlicy90cmFja2luZy9wZXJzb25hbGl6YXRpb24vcm9vdC9odHRwLWludGVyY2VwdG9ycy9vY2MtcGVyc29uYWxpemF0aW9uLWlkLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCxZQUFZLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHckMsTUFBTSxzQkFBc0IsR0FBRyxvQkFBb0IsQ0FBQztBQUdwRCxNQUFNLE9BQU8sK0JBQStCO0lBSzFDLFlBQ1UsTUFBNkIsRUFDN0IsWUFBaUMsRUFDakMsTUFBaUI7O1FBRmpCLFdBQU0sR0FBTixNQUFNLENBQXVCO1FBQzdCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBTG5CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFPdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxPQUFPO2dCQUNWLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUksTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsMENBQUUsT0FBTyxDQUFBLENBQUM7b0JBQ2xFLEtBQUssQ0FBQztZQUVSLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsMENBQUUsY0FBYyxDQUFBLElBQUksU0FBUyxFQUFFLEVBQUU7b0JBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQ1YsMERBQTBELENBQzNELENBQUM7aUJBQ0g7Z0JBQ0QsSUFBSSxDQUFDLGFBQWE7b0JBQ2hCLE1BQUEsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsMENBQUUsY0FBYywwQ0FBRSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSwwQ0FBRSxPQUFPLENBQ3hELHNCQUFzQixDQUN2QixDQUFDO2FBQ0g7aUJBQU0sSUFBSSxNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSwwQ0FBRSxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRTtnQkFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDN0Q7U0FDRjtJQUNILENBQUM7SUFFRCxTQUFTLENBQ1AsT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFDRSxJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsaUJBQWlCO1lBQ3RCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUMsRUFDcEQ7WUFDQSxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7aUJBQzdDO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7WUFDWixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQ2pDLElBQ0UsSUFBSSxDQUFDLGFBQWE7b0JBQ2xCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDakQ7b0JBQ0EsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsS0FBSyxVQUFVLEVBQUU7d0JBQ3pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQUM7d0JBQ3BDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFOzRCQUMxQixNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSwwQ0FBRSxPQUFPLENBQy9CLHNCQUFzQixFQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7eUJBQ0g7cUJBQ0Y7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs0SEF6RVUsK0JBQStCO2dJQUEvQiwrQkFBK0IsY0FEbEIsTUFBTTsyRkFDbkIsK0JBQStCO2tCQUQzQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBFdmVudCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBSZXNwb25zZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPY2NFbmRwb2ludHNTZXJ2aWNlLCBXaW5kb3dSZWYgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVyc29uYWxpemF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3BlcnNvbmFsaXphdGlvbi1jb25maWcnO1xuXG5jb25zdCBQRVJTT05BTElaQVRJT05fSURfS0VZID0gJ3BlcnNvbmFsaXphdGlvbi1pZCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgT2NjUGVyc29uYWxpemF0aW9uSWRJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgcGVyc29uYWxpemF0aW9uSWQ/OiBzdHJpbmcgfCBudWxsO1xuICBwcml2YXRlIHJlcXVlc3RIZWFkZXI/OiBzdHJpbmc7XG4gIHByaXZhdGUgZW5hYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29uZmlnOiBQZXJzb25hbGl6YXRpb25Db25maWcsXG4gICAgcHJpdmF0ZSBvY2NFbmRwb2ludHM6IE9jY0VuZHBvaW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aW5SZWY6IFdpbmRvd1JlZlxuICApIHtcbiAgICBpZiAodGhpcy53aW5SZWYuaXNCcm93c2VyKCkpIHtcbiAgICAgIHRoaXMuZW5hYmxlZCA9XG4gICAgICAgICh0aGlzLndpblJlZi5sb2NhbFN0b3JhZ2UgJiYgdGhpcy5jb25maWcucGVyc29uYWxpemF0aW9uPy5lbmFibGVkKSB8fFxuICAgICAgICBmYWxzZTtcblxuICAgICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLnBlcnNvbmFsaXphdGlvbj8uaHR0cEhlYWRlck5hbWUgJiYgaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBgVGhlcmUgaXMgbm8gaHR0cEhlYWRlck5hbWUgY29uZmlndXJlZCBpbiBQZXJzb25hbGl6YXRpb25gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlcXVlc3RIZWFkZXIgPVxuICAgICAgICAgIHRoaXMuY29uZmlnLnBlcnNvbmFsaXphdGlvbj8uaHR0cEhlYWRlck5hbWU/LmlkLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHRoaXMucGVyc29uYWxpemF0aW9uSWQgPSB0aGlzLndpblJlZi5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oXG4gICAgICAgICAgUEVSU09OQUxJWkFUSU9OX0lEX0tFWVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLndpblJlZi5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oUEVSU09OQUxJWkFUSU9OX0lEX0tFWSkpIHtcbiAgICAgICAgdGhpcy53aW5SZWYubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oUEVSU09OQUxJWkFUSU9OX0lEX0tFWSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW50ZXJjZXB0KFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICghdGhpcy5lbmFibGVkKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVyICYmXG4gICAgICB0aGlzLnBlcnNvbmFsaXphdGlvbklkICYmXG4gICAgICByZXF1ZXN0LnVybC5pbmNsdWRlcyh0aGlzLm9jY0VuZHBvaW50cy5nZXRCYXNlVXJsKCkpXG4gICAgKSB7XG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgICBbdGhpcy5yZXF1ZXN0SGVhZGVyXTogdGhpcy5wZXJzb25hbGl6YXRpb25JZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RIZWFkZXIgJiZcbiAgICAgICAgICAgIGV2ZW50LmhlYWRlcnMua2V5cygpLmluY2x1ZGVzKHRoaXMucmVxdWVzdEhlYWRlcilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVkSWQgPSBldmVudC5oZWFkZXJzLmdldCh0aGlzLnJlcXVlc3RIZWFkZXIpO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVyc29uYWxpemF0aW9uSWQgIT09IHJlY2VpdmVkSWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5wZXJzb25hbGl6YXRpb25JZCA9IHJlY2VpdmVkSWQ7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnBlcnNvbmFsaXphdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5SZWYubG9jYWxTdG9yYWdlPy5zZXRJdGVtKFxuICAgICAgICAgICAgICAgICAgUEVSU09OQUxJWkFUSU9OX0lEX0tFWSxcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVyc29uYWxpemF0aW9uSWRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==