async function requestFestInfo() { // DO NOT USE THIS - USE ROUTE https://boss-info.spfn.net/api/v2/fest-info const response = await fetch("https://account.spfn.net/api/v2/fest-info", { // ROUTE NOT IMPLEMENTED method: "GET" }) if (!response.ok) return; /* { "active", "a-name", "a-hex", "b-name", "b-hex", "start", "end" } */ const data = await response.json() return data; } window.onload = async function() { // Verify Fest Information let data = localStorage.getItem("fest-info"); if (data) { // Fest data previously stored const end = new Date(data["end"] + "Z") const now = new Date() if (end < now) { // Fest is over - Remove and check for new fest localStorage.removeItem("fest-info"); data = await requestFestInfo(); if (data) { localStorage.setItem("fest-info", data); } } else { // Fest is either Upcoming or Active - Update active state const start = new Date(data["start"] + "Z"); const active = start > now && end < now; if (data["active"] != active) { data["active"] = active; localStorage.setItem("fest-data", data); } } } else { // No saved data - Check for any data = await requestFestInfo(); if (data) { localStorage.setItem("fest-info", data); } } if (data) { // Active or Upcoming Fest Found document.getElementById("splatfest-notfound").style.display = "none"; let festTitle = `${data["a-name"]} vs. ${data["b-name"]}`; document.getElementById("splatfest-title").innerHTML = festTitle; let start = new Date(data["start"] + "Z"); let startStr = `Starts: ${start.toLocaleString()}`; document.getElementById("splatfest-starts").innerHTML = startStr; let end = new Date(data["end"] + "Z"); let endStr = `Ends: ${end.toLocaleString()}`; document.getElementById("splatfest-ends").innerHTML = endStr; let now = new Date(); if (start > now && end < now) { // Fest is Active console.log("Active fest found!") } else { // Fest is Upcoming console.log("Upcoming fest found!") } } else { // No fest document.getElementById("splatfest-info").style.display = "none"; console.log("No fests currently planned or active") } }