(function() {
/**
* @typedef {Object} Help4.tracking.connector.EnableNow.Params
* @property {string} url
*/
/**
* @augments Help4.jscore.ControlBase
* @param {string} url
* @param {string} xcsrfId
*/
Help4.tracking.connector.EnableNow = class extends Help4.jscore.ControlBase {
/**
* @override
* @param {Help4.tracking.Tracking.Connector} params
*/
constructor(params) {
const {TYPES: T} = Help4.jscore.ControlBase;
super(params, {
params: {
url: {type: T.string_null, readonly: true},
xcsrfId: {type: T.string, init: Help4.createId(), readonly: true}
}
});
const {url} = params;
const hostUrl = typeof url === 'string'
? url.replace(/\/(pub|wa)\/.*$/, '')
: null;
hostUrl && Help4.ajax.Ajax.setXCSRF({id: this.xcsrfId, url: hostUrl + '/self'});
}
/**
* @param {Help4.tracking.Tracking.Data} data
* @returns {Promise<*>}
*/
track(data) {
const {url, xcsrfId} = this;
if (!url) return Help4.Promise.resolve();
data.context.app = 'WA';
return Help4.ajax.Ajax({
url: `${url}/.record`,
method: 'POST',
data,
saml: true,
xcsrf: xcsrfId,
promise: true
});
}
}
})();