@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_TIME_KEY = 'personalization-time';
export class OccPersonalizationTimeInterceptor {
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.timestamp.toLowerCase();
this.timestamp = (_e = this.winRef.localStorage) === null || _e === void 0 ? void 0 : _e.getItem(PERSONALIZATION_TIME_KEY);
}
else if ((_f = this.winRef.localStorage) === null || _f === void 0 ? void 0 : _f.getItem(PERSONALIZATION_TIME_KEY)) {
this.winRef.localStorage.removeItem(PERSONALIZATION_TIME_KEY);
}
}
}
intercept(request, next) {
if (!this.enabled) {
return next.handle(request);
}
if (this.requestHeader &&
this.timestamp &&
request.url.includes(this.occEndpoints.getBaseUrl())) {
request = request.clone({
setHeaders: {
[this.requestHeader]: this.timestamp,
},
});
}
return next.handle(request).pipe(tap((event) => {
var _a;
if (event instanceof HttpResponse) {
if (this.requestHeader &&
event.headers.keys().includes(this.requestHeader)) {
const receivedTimestamp = event.headers.get(this.requestHeader);
if (this.timestamp !== receivedTimestamp) {
this.timestamp = receivedTimestamp;
if (this.timestamp) {
(_a = this.winRef.localStorage) === null || _a === void 0 ? void 0 : _a.setItem(PERSONALIZATION_TIME_KEY, this.timestamp);
}
}
}
}
}));
}
}
OccPersonalizationTimeInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccPersonalizationTimeInterceptor, deps: [{ token: i1.PersonalizationConfig }, { token: i2.OccEndpointsService }, { token: i2.WindowRef }], target: i0.ɵɵFactoryTarget.Injectable });
OccPersonalizationTimeInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccPersonalizationTimeInterceptor, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OccPersonalizationTimeInterceptor, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.PersonalizationConfig }, { type: i2.OccEndpointsService }, { type: i2.WindowRef }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2NjLXBlcnNvbmFsaXphdGlvbi10aW1lLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZmVhdHVyZS1saWJzL3RyYWNraW5nL3BlcnNvbmFsaXphdGlvbi9yb290L2h0dHAtaW50ZXJjZXB0b3JzL29jYy1wZXJzb25hbGl6YXRpb24tdGltZS5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBS0wsWUFBWSxHQUNiLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBR3JDLE1BQU0sd0JBQXdCLEdBQUcsc0JBQXNCLENBQUM7QUFHeEQsTUFBTSxPQUFPLGlDQUFpQztJQUs1QyxZQUNVLE1BQTZCLEVBQzdCLFlBQWlDLEVBQ2pDLE1BQWlCOztRQUZqQixXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUM3QixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUxuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBT3RCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTztnQkFDVixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxLQUFJLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLDBDQUFFLE9BQU8sQ0FBQSxDQUFDO29CQUNsRSxLQUFLLENBQUM7WUFFUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLDBDQUFFLGNBQWMsQ0FBQSxJQUFJLFNBQVMsRUFBRSxFQUFFO29CQUMvRCxPQUFPLENBQUMsSUFBSSxDQUNWLDBEQUEwRCxDQUMzRCxDQUFDO2lCQUNIO2dCQUNELElBQUksQ0FBQyxhQUFhO29CQUNoQixNQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLDBDQUFFLGNBQWMsMENBQUUsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLDBDQUFFLE9BQU8sQ0FDaEQsd0JBQXdCLENBQ3pCLENBQUM7YUFDSDtpQkFBTSxJQUFJLE1BQUEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLDBDQUFFLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO2dCQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQzthQUMvRDtTQUNGO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FDUCxPQUF5QixFQUN6QixJQUFpQjtRQUVqQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDN0I7UUFFRCxJQUNFLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxTQUFTO1lBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUNwRDtZQUNBLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUN0QixVQUFVLEVBQUU7b0JBQ1YsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVM7aUJBQ3JDO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7WUFDWixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQ2pDLElBQ0UsSUFBSSxDQUFDLGFBQWE7b0JBQ2xCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDakQ7b0JBQ0EsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ2hFLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxpQkFBaUIsRUFBRTt3QkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQzt3QkFDbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFOzRCQUNsQixNQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSwwQ0FBRSxPQUFPLENBQy9CLHdCQUF3QixFQUN4QixJQUFJLENBQUMsU0FBUyxDQUNmLENBQUM7eUJBQ0g7cUJBQ0Y7aUJBQ0Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs4SEF6RVUsaUNBQWlDO2tJQUFqQyxpQ0FBaUMsY0FEcEIsTUFBTTsyRkFDbkIsaUNBQWlDO2tCQUQ3QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEh0dHBFdmVudCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBSZXNwb25zZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPY2NFbmRwb2ludHNTZXJ2aWNlLCBXaW5kb3dSZWYgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUGVyc29uYWxpemF0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL3BlcnNvbmFsaXphdGlvbi1jb25maWcnO1xuXG5jb25zdCBQRVJTT05BTElaQVRJT05fVElNRV9LRVkgPSAncGVyc29uYWxpemF0aW9uLXRpbWUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE9jY1BlcnNvbmFsaXphdGlvblRpbWVJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgdGltZXN0YW1wPzogc3RyaW5nIHwgbnVsbDtcbiAgcHJpdmF0ZSByZXF1ZXN0SGVhZGVyPzogc3RyaW5nO1xuICBwcml2YXRlIGVuYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZzogUGVyc29uYWxpemF0aW9uQ29uZmlnLFxuICAgIHByaXZhdGUgb2NjRW5kcG9pbnRzOiBPY2NFbmRwb2ludHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2luUmVmOiBXaW5kb3dSZWZcbiAgKSB7XG4gICAgaWYgKHRoaXMud2luUmVmLmlzQnJvd3NlcigpKSB7XG4gICAgICB0aGlzLmVuYWJsZWQgPVxuICAgICAgICAodGhpcy53aW5SZWYubG9jYWxTdG9yYWdlICYmIHRoaXMuY29uZmlnLnBlcnNvbmFsaXphdGlvbj8uZW5hYmxlZCkgfHxcbiAgICAgICAgZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLmVuYWJsZWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5wZXJzb25hbGl6YXRpb24/Lmh0dHBIZWFkZXJOYW1lICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFRoZXJlIGlzIG5vIGh0dHBIZWFkZXJOYW1lIGNvbmZpZ3VyZWQgaW4gUGVyc29uYWxpemF0aW9uYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVyID1cbiAgICAgICAgICB0aGlzLmNvbmZpZy5wZXJzb25hbGl6YXRpb24/Lmh0dHBIZWFkZXJOYW1lPy50aW1lc3RhbXAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgdGhpcy50aW1lc3RhbXAgPSB0aGlzLndpblJlZi5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oXG4gICAgICAgICAgUEVSU09OQUxJWkFUSU9OX1RJTUVfS0VZXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMud2luUmVmLmxvY2FsU3RvcmFnZT8uZ2V0SXRlbShQRVJTT05BTElaQVRJT05fVElNRV9LRVkpKSB7XG4gICAgICAgIHRoaXMud2luUmVmLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFBFUlNPTkFMSVpBVElPTl9USU1FX0tFWSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW50ZXJjZXB0KFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICghdGhpcy5lbmFibGVkKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZXF1ZXN0SGVhZGVyICYmXG4gICAgICB0aGlzLnRpbWVzdGFtcCAmJlxuICAgICAgcmVxdWVzdC51cmwuaW5jbHVkZXModGhpcy5vY2NFbmRwb2ludHMuZ2V0QmFzZVVybCgpKVxuICAgICkge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgW3RoaXMucmVxdWVzdEhlYWRlcl06IHRoaXMudGltZXN0YW1wLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXG4gICAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdEhlYWRlciAmJlxuICAgICAgICAgICAgZXZlbnQuaGVhZGVycy5rZXlzKCkuaW5jbHVkZXModGhpcy5yZXF1ZXN0SGVhZGVyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgcmVjZWl2ZWRUaW1lc3RhbXAgPSBldmVudC5oZWFkZXJzLmdldCh0aGlzLnJlcXVlc3RIZWFkZXIpO1xuICAgICAgICAgICAgaWYgKHRoaXMudGltZXN0YW1wICE9PSByZWNlaXZlZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IHJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICBpZiAodGhpcy50aW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLndpblJlZi5sb2NhbFN0b3JhZ2U/LnNldEl0ZW0oXG4gICAgICAgICAgICAgICAgICBQRVJTT05BTElaQVRJT05fVElNRV9LRVksXG4gICAgICAgICAgICAgICAgICB0aGlzLnRpbWVzdGFtcFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19