Files
kupshop/web/common/static/wpj/wpj.storage.js
2025-08-02 16:30:27 +02:00

141 lines
4.2 KiB
JavaScript

wpj.storage = {
getValue: function(key) {
try {
return localStorage.getItem(key);
} catch (e) {
return null;
}
},
setValue: function(key, value) {
try {
return localStorage.setItem(key, value);
} catch (e) {
return false;
}
},
cookies: {
getItem: function(sKey) {
if (!sKey) {
return null;
}
return (
decodeURIComponent(
document.cookie.replace(
new RegExp(
'(?:(?:^|.*;)\\s*' +
encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') +
'\\s*\\=\\s*([^;]*).*$)|^.*$'
),
'$1'
)
) || null
);
},
setItem: function(sKey, sValue, vEnd, sPath, sDomain) {
if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) {
return false;
}
var sExpires = '';
if (vEnd) {
switch (vEnd.constructor) {
case Number:
sExpires = vEnd === Infinity ? '; expires=Fri, 31 Dec 9999 23:59:59 GMT' : '; max-age=' + vEnd;
break;
case String:
sExpires = '; expires=' + vEnd;
break;
case Date:
sExpires = '; expires=' + vEnd.toUTCString();
break;
}
}
document.cookie =
encodeURIComponent(sKey) +
'=' +
encodeURIComponent(sValue) +
sExpires +
(sDomain ? '; domain=' + sDomain : '') +
'; path=' + (sPath ? sPath : '/') +
'; secure; samesite=lax';
return true;
},
removeItem: function(sKey, sPath, sDomain) {
if (!this.hasItem(sKey)) {
return false;
}
document.cookie =
encodeURIComponent(sKey) +
'=; expires=Thu, 01 Jan 1970 00:00:00 GMT' +
(sDomain ? '; domain=' + sDomain : '') +
(sPath ? '; path=' + sPath : '');
return true;
},
hasItem: function(sKey) {
if (!sKey) {
return false;
}
return new RegExp('(?:^|;\\s*)' + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=').test(
document.cookie
);
},
keys: function() {
var aKeys = document.cookie
.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, '')
.split(/\s*(?:\=[^;]*)?;\s*/);
for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) {
aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);
}
return aKeys;
}
},
consents: {
consents: {},
getConsent: function(consentName) {
if (!consentName) {
return null;
}
this.getConsents();
if (this.consents[consentName]) {
return this.consents[consentName]
}
return false;
},
getConsents: function() {
var consents = decodeURIComponent(
document.cookie.replace(
new RegExp(
'(?:(?:^|.*;)\\s*' +
encodeURIComponent('cookie-bar').replace(/[\-\.\+\*]/g, '\\$&') +
'\\s*\\=\\s*([^;]*).*$)|^.*$'
),
'$1'
)
).split(',');
if (!(consents instanceof Array)){
consents = [];
}
return this.consents = {
ad_storage: consents.includes('ad_storage') ? 'granted' : 'denied',
personalization_storage: consents.includes('personalization_and_functionality_storage') ? 'granted' : 'denied',
functionality_storage: 'granted',
analytics_storage: consents.includes('analytics_storage') ? 'granted' : 'denied',
}
},
isEnabled: function(consentName) {
if (!window.wpj.cookie_bar_send) {
return true;
}
return this.getConsent(consentName) === 'granted';
}
}
};