Files
wp-multisite-waas/assets/js/cookie-helpers.js
2024-11-30 18:24:12 -07:00

102 lines
1.8 KiB
JavaScript

/**
* Create a new cookie.
*
* @param {string} name The cookie name.
* @param {*} value The cookie value.
* @param {number} days The expiration, in days.
* @return {void}
*/
window.wu_create_cookie = function(name, value, days) {
let expires;
if (days) {
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = '; expires=' + date.toGMTString();
} else {
expires = '';
} // end if;
document.cookie = name + '=' + value + expires + '; path=/';
};
/**
* Reads from a cookie.
*
* @param {string} name The cookie name
* @return {*} The cookie value
*/
window.wu_read_cookie = function(name) {
const nameEQ = name + '=';
const ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1, c.length);
} // end while;
if (c.indexOf(nameEQ) === 0) {
return c.substring(nameEQ.length, c.length);
} // end if;
} // end for;
return null;
};
/**
* Erase a cookie.
*
* @param {string} name The cookie name.
*/
window.wu_erase_cookie = function(name) {
window.wu_create_cookie(name, '', -1);
};
/**
* Listens to a particular cookie to catch a change in value.
*
* @param {string} name The cookie name.
* @param {Function} callback The callback to call when a change is detected.
*/
window.wu_listen_to_cookie_change = function(name, callback) {
let cookie_value = window.wu_read_cookie(name);
setInterval(function() {
const new_cookie_value = window.wu_read_cookie(name);
if (new_cookie_value !== cookie_value) {
// update registry so we dont get triggered again
cookie_value = new_cookie_value;
callback(cookie_value);
} // end if;
}, 100);
};