(function() {
/**
* @augments Help4.service.StorageService.StorageInterface
*/
Help4.service.StorageService.CookieStorage = class extends Help4.service.StorageService.StorageInterface {
/**
* @override
* @constructor
*/
constructor() {
const {STORAGE_LEVEL: {cookie}} = Help4.service.StorageService;
super({
params: {
available: {init: true},
storageLevel: {init: cookie}
},
statics: {
_isReady: {init: true}
}
});
}
/**
* @override
* @param {string} key
* @returns {?string}
*/
get(key) {
key += '=';
const len = key.length;
const all = document.cookie.split(';');
for (let cookie of all) {
cookie = cookie.trim();
if (cookie.startsWith(key)) {
return decodeURIComponent(cookie.substring(len));
}
}
return undefined;
}
/**
* @param {string} key
* @param {string} value
* @param {number} [days = undefined]
* @returns {true}
*/
set(key, value, days = undefined) {
let params = '; name=sap_help4; path=/; ';
if (days !== null) {
days = Number(days);
if (days === -1) {
params += 'expires=Thu, 01-Jan-70 00:00:01 GMT; ';
} else {
if (isNaN(days)) days = 365;
const day = 1000 * 3600 * 24;
const d = new Date();
d.setTime(d.getTime() + days * day);
params += `expires=${d.toUTCString()}; `;
}
}
document.cookie = Help4.removeXSSCode(key + '=' + encodeURIComponent(value) + params);
return true;
}
/**
* @override
* @param {string} key
* @returns {true}
*/
del(key) {
return this.set(key, '', -1);
}
}
})();