mirror of
git://f0xx.org/ac/ac-platform-web
synced 2026-07-29 03:38:33 +03:00
initial
This commit is contained in:
79
assets/js/cookie_consent.js
Normal file
79
assets/js/cookie_consent.js
Normal file
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* Cookie consent banner — stores choice in localStorage (ac_cookie_consent).
|
||||
* Values: all | necessary | reject
|
||||
*/
|
||||
(function (global) {
|
||||
'use strict';
|
||||
|
||||
var STORAGE_KEY = 'ac_cookie_consent';
|
||||
var banner = null;
|
||||
|
||||
function getChoice() {
|
||||
try {
|
||||
var v = localStorage.getItem(STORAGE_KEY);
|
||||
if (v === 'all' || v === 'necessary' || v === 'reject') {
|
||||
return v;
|
||||
}
|
||||
} catch (e) { /* ignore */ }
|
||||
return null;
|
||||
}
|
||||
|
||||
function setChoice(value) {
|
||||
try {
|
||||
localStorage.setItem(STORAGE_KEY, value);
|
||||
} catch (e) { /* ignore */ }
|
||||
global.dispatchEvent(new CustomEvent('ac-cookie-consent', { detail: { choice: value } }));
|
||||
hideBanner();
|
||||
}
|
||||
|
||||
function allowsAnalytics() {
|
||||
return getChoice() === 'all';
|
||||
}
|
||||
|
||||
function allowsPreferenceCookies() {
|
||||
var c = getChoice();
|
||||
return c === 'all' || c === 'necessary';
|
||||
}
|
||||
|
||||
function hideBanner() {
|
||||
if (banner) {
|
||||
banner.hidden = true;
|
||||
}
|
||||
}
|
||||
|
||||
function ensureBanner() {
|
||||
if (banner || getChoice()) {
|
||||
return;
|
||||
}
|
||||
banner = document.getElementById('cookie-consent-banner');
|
||||
if (!banner) {
|
||||
return;
|
||||
}
|
||||
banner.hidden = false;
|
||||
var allBtn = document.getElementById('cookie-consent-all');
|
||||
var necBtn = document.getElementById('cookie-consent-necessary');
|
||||
var rejBtn = document.getElementById('cookie-consent-reject');
|
||||
if (allBtn) {
|
||||
allBtn.addEventListener('click', function () { setChoice('all'); });
|
||||
}
|
||||
if (necBtn) {
|
||||
necBtn.addEventListener('click', function () { setChoice('necessary'); });
|
||||
}
|
||||
if (rejBtn) {
|
||||
rejBtn.addEventListener('click', function () { setChoice('reject'); });
|
||||
}
|
||||
}
|
||||
|
||||
global.AndroidCastCookieConsent = {
|
||||
getChoice: getChoice,
|
||||
allowsAnalytics: allowsAnalytics,
|
||||
allowsPreferenceCookies: allowsPreferenceCookies,
|
||||
setChoice: setChoice
|
||||
};
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', ensureBanner);
|
||||
} else {
|
||||
ensureBanner();
|
||||
}
|
||||
})(typeof window !== 'undefined' ? window : this);
|
||||
Reference in New Issue
Block a user