// Funzione per creare un cookie con una posizione diversa, e una durata in mesi function createCookie(name, value, expireMonths, domain, path) { var time = new Date() time.setMonth(time.getMonth() + expireMonths) var expireTime = time.toUTCString() document.cookie = name + '=' + value + ';expires=' + expireTime + ';domain=' + domain + ";path=" + path; } // Divido i biscotti, e quando trovo il mio biscotto vado a prenderne il valore const documentBiscuits = document.cookie let biscotti = documentBiscuits.split(";") let biscottoTheme = 0 biscotti.forEach(biscotto => { if (biscotto.includes("matteoc_theme")){ biscotto = biscotto.split("=")[1] if (biscotto == "dark" || biscotto == "light"){ biscottoTheme = biscotto } } }) // Se il biscotto ha un valore adatto, uso quello, oppure vengono visualizzate le preferenze predefinite if (biscottoTheme == "dark"){ console.log("Using black theme from cookie") }else if(biscottoTheme == "light"){ console.log("Using white theme from cookie") }else{ if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) { console.log("Using white theme from user prefs & creating cookie (1 month duration was also updated)") createCookie("matteoc_theme", "light", 1, ".matteoc.cloud", "/") biscottoTheme = "light" }else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { console.log("Using black theme from user prefs & creating cookie (1 month duration was also updated)") createCookie("matteoc_theme", "dark", 1, ".matteoc.cloud", "/") biscottoTheme = "dark" }else{ console.log("Failed to read browser prefs. Creating cookie (1 month duration) and setting theme to black") createCookie("matteoc_theme", "dark", 1, ".matteoc.cloud", "/") biscottoTheme = "dark" } } setTheme(biscottoTheme, false) // una volta deciso il valore, impostiamo il tema // funzione per rilevare il click del bottone e aggiornare il tema themeButton.onclick = buttonSetTheme function buttonSetTheme(){ if (currentTheme == "dark") { setTheme("light", true) }else{ setTheme("dark", true) } }