diff --git a/app.js b/app.js index 8ca6af8..fb17a89 100644 --- a/app.js +++ b/app.js @@ -6,6 +6,9 @@ const express = require("express") const favicon = require("serve-favicon") const morgan = require("morgan") const dayjs = require("dayjs") +const {v4: uuidv4} = require("uuid") + +const version = uuidv4() const driversPath = "./assets/drivers.json" const statsPath = "./assets/stats.json" @@ -99,17 +102,18 @@ async function main() { axios.get("https://ergast.com/api/f1/1950/driverStandings.json?limit=1000").then(async () => { await updateDrivers() dotd() + server() }).catch(() => { console.log("API is unreachable! Not updating drivers...") if (fs.existsSync(driversPath)) { let data = fs.readFileSync(driversPath) drivers = JSON.parse(data) dotd() + server() } else { throw "Ergast API is unreachable and the drivers.json cache has not been built. Please try again when the Ergast API is online." } }) - server() } async function updateDrivers() { @@ -249,7 +253,8 @@ function server() { "permanentNumber": response[2], "age": response[3], "firstYear": response[4], - "wins": response[5] + "wins": response[5], + "version": version }) stats.guesses++ }) diff --git a/assets/js/main.js b/assets/js/main.js index 9c1a435..f55a150 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -197,6 +197,16 @@ async function submit(guess, real) { } let answer = await fetch(`${window.location.href}driver?driver=${obj.firstName + " " + obj.lastName}`) let json = await answer.json() + if (localStorage.version) { + if (localStorage.version !== json.version) { + localStorage.removeItem("guesses") + localStorage.removeItem("version") + location.reload() + } + } + else { + localStorage.version = json.version + } let won = true Object.values(json).forEach(async (answer, index) => { if (answer !== 1) won = false @@ -466,6 +476,7 @@ document.addEventListener('DOMContentLoaded', () => { let expire = new Date(JSON.parse(localStorage.guesses)[0]) if (expire <= d) { localStorage.removeItem("guesses") + localStorage.removeItem("version") } JSON.parse(localStorage.guesses).forEach(async (guess, index) => { if (index > 0) await submit(guess, false) diff --git a/package-lock.json b/package-lock.json index 8426213..8e94823 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "morgan": "^1.10.0", "node-schedule": "^2.1.0", "serve-favicon": "^2.5.0", + "uuid": "^9.0.0", "xml-js": "^1.6.11" } }, @@ -992,6 +993,14 @@ "node": ">= 0.4.0" } }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -1740,6 +1749,11 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" }, + "uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/package.json b/package.json index a2c6dd8..0ff9802 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "morgan": "^1.10.0", "node-schedule": "^2.1.0", "serve-favicon": "^2.5.0", + "uuid": "^9.0.0", "xml-js": "^1.6.11" } }