PageSourceSearch

https://shop.happyhours.be/didomi/cookie-withdraw.js

js happyhours.be collected 2026-10-08 07:14:28 UTC 3,951 bytes, 112 lines download raw bytes

1// Cookie deletion on consent withdrawal (HHM-3299)
2// https://support.didomi.io/fr/comment-supprimer-les-cookies-du-navigateur
3(function () {
4  var itemsToKeep = ["euconsent-v2", "didomi_token", "didomi_dcs"];
5  // Keep Google Analytics cookies (_ga, _gid, _ga_*) — required for GCM v2 consent signaling
6  var itemsToKeepRegex = /^_ga|^_gid/;
7
8  var getCookieValue = function (cookieName) {
9    var cookie = document.cookie.split(";").filter(function (cookieValue) {
10      return cookieValue.indexOf(cookieName) !== -1;
11    })[0];
12    if (cookie) {
13      return cookie.split("=")[1];
14    }
15  };
16
17  var deleteCookie = function (name, domain, path) {
18    path = path || "/";
19    var cookie = [
20      name + "=",
21      "expires=Thu, 01 Jan 1970 00:00:01 GMT",
22      "path=" + path,
23    ];
24    if (domain) {
25      cookie.push("domain=" + domain);
26    }
27    document.cookie = cookie.join(";");
28  };
29
30  var areAllVendorsAndPurposesDisabled = function () {
31    var data = window.Didomi.getCurrentUserStatus();
32    var excludedIds = [];
33
34    var vendors = data.vendors;
35    var purposes = data.purposes;
36    var vendorIds = Object.keys(vendors);
37    var purposeIds = Object.keys(purposes);
38
39    var vendorsEnabledNumber = vendorIds.filter(function (id) {
40      return vendors[id].enabled && !excludedIds.includes(id);
41    }).length;
42    var vendorsDisabledNumber = vendorIds.filter(function (id) {
43      return !vendors[id].enabled && !excludedIds.includes(id);
44    }).length;
45    var purposesEnabledNumber = purposeIds.filter(function (id) {
46      return purposes[id].enabled;
47    }).length;
48    var purposesDisabledNumber = purposeIds.filter(function (id) {
49      return !purposes[id].enabled;
50    }).length;
51
52    return (
53      vendorsEnabledNumber + purposesEnabledNumber === 0 &&
54      vendorsDisabledNumber + purposesDisabledNumber > 0
55    );
56  };
57
58  var consentEventsCount = 0;
59  var existingConsentString = getCookieValue("euconsent-v2");
60  window.didomiEventListeners = window.didomiEventListeners || [];
61  window.didomiEventListeners.push({
62    event: "consent.changed",
63    listener: function () {
64      var consentUpdate =
65        consentEventsCount > 0 ? true : !!existingConsentString;
66      if (consentUpdate && areAllVendorsAndPurposesDisabled()) {
67        var cookiesToDelete = document.cookie
68          .split(";")
69          .map(function (cookie) {
70            return cookie.split("=")[0].trim();
71          })
72          .filter(function (cookieName) {
73            return (
74              itemsToKeep.indexOf(cookieName) === -1 &&
75              !cookieName.match(itemsToKeepRegex)
76            );
77          });
78
79        cookiesToDelete.forEach(function (cookieToDelete) {
80          var domains = (
81            ".#" + document.location.host.replaceAll(".", "#.#")
82          ).split("#");
83          while (domains.length) {
84            var possibleDomain = domains.join("");
85            deleteCookie(cookieToDelete, possibleDomain);
86            domains.shift();
87          }
88          deleteCookie(cookieToDelete, "");
89        });
90
91        var localStorageItemsToDelete = Object.keys(window.localStorage).filter(
92          function (localStorageItemName) {
93            return (
94              itemsToKeep.indexOf(localStorageItemName) === -1 &&
95              !localStorageItemName.match(itemsToKeepRegex)
96            );
97          },
98        );
99
100        localStorageItemsToDelete.forEach(function (localStorageItemName) {
101          window.localStorage.removeItem(localStorageItemName);
102        });
103
104        window.location.reload();
105      }
106
107      consentEventsCount++;
108    },
109  });
110})();
111!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="feb4fe16-8d4b-509c-b631-3bde72edcef5")}catch(e){}}();
112//# debugId=feb4fe16-8d4b-509c-b631-3bde72edcef5

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.