Cleaned up non-Alpine.js persistence code

This commit is contained in:
2024-11-24 16:45:23 +01:00
parent bbfa172e7a
commit f52ae3cb8f
2 changed files with 6 additions and 72 deletions

View File

@@ -92,7 +92,10 @@ document.addEventListener('alpine:init', () => {
this.winTime = new Date(); this.winTime = new Date();
this.resultGameID = '🧩 Puzzel #' + this.gameID; this.resultGameID = '🧩 Puzzel #' + this.gameID;
this.resultGuesses = '🤔 '+ this.nrGuesses + ' gokken'; this.resultGuesses = '🤔 '+ this.nrGuesses + ' gokken';
this.resultTimeTaken = '⏱️ ' + getFormattedTime(this.winTime - this.startTime); let winTimeDate = new Date(this.winTime);
let startTimeDate = new Date(this.startTime);
// this.resultTimeTaken = '⏱️ ' + getFormattedTime(this.winTime - this.startTime);
this.resultTimeTaken = '⏱️ ' + getFormattedTime(winTimeDate - startTimeDate);
} }
}, },
setEmptyGameState() { setEmptyGameState() {
@@ -114,77 +117,9 @@ document.addEventListener('alpine:init', () => {
this.getGameID(); this.getGameID();
}, },
// # Local Storage Persistence // # Local Storage Persistence
storeGameState() {
// localStorage.setItem(this.savedGameKey, JSON.stringify({
// startTime,
// winTime,
// gaveUpTime,
// guessesBefore,
// }));
},
getStoredGameState() {
if (!this.isLocalStorageAvailable) return undefined;
const savedGameJson = localStorage.getItem(this.savedGameKey);
try {
return savedGameJson && JSON.parse(savedGameJson);
} catch (e) {
localStorage.removeItem(this.savedGameKey);
}
return undefined;
},
loadGameState() {
const savedGame = this.getStoredGameState();
if (!savedGame || !savedGame.gameID || (savedGame.gameID !== this.gameID)) {
this.setEmptyGameState();
return;
}
if (!savedGame || !savedGame.startTime) {
this.setEmptyGameState();
return;
}
const startTime = new Date(savedGame.startTime);
if (!isPlayDateToday(app.playDate)) {
this.setEmptyGameState();
return;
}
const savedGameForToday = getDOY(startTime) === getDOY(now());
if (!savedGameForToday) {
this.resetSavedGames();
this.setEmptyGameState();
return;
}
const {
winTime,
guessesBefore,
guessesAfter,
guessValue,
} = savedGame;
const gaveUpTime = null; // to be implemented
this.startTime = startTime;
this.winTime = (winTime && new Date(winTime)) || null;
this.guessesBefore = guessesBefore || [];
this.guessesAfter = guessesAfter || [];
if (gaveUpTime || this.winTime) {
this.guessValue = guessValue;
}
},
resetSavedGames() { resetSavedGames() {
localStorage.removeItem(this.savedGameKey); localStorage.removeItem(this.savedGameKey);
}, },
testLocalStorage() {
// stolen from https://stackoverflow.com/questions/16427636/check-if-localstorage-is-available
const test = 'test';
try {
localStorage.setItem(test, test);
localStorage.removeItem(test);
this.isLocalStorageAvailable = true;
} catch (e) {
this.isLocalStorageAvailable = false;
}
console.log('Local storage is available? ' + this.isLocalStorageAvailable);
},
// # Countdown timer // # Countdown timer
getFormattedTime(milliseconds) { getFormattedTime(milliseconds) {
if (!Number.isInteger(milliseconds)) { if (!Number.isInteger(milliseconds)) {
@@ -311,5 +246,4 @@ go();
document.addEventListener('alpine:initialized', () => { document.addEventListener('alpine:initialized', () => {
/* On AlpineJS completely loaded, do all this */ /* On AlpineJS completely loaded, do all this */
Alpine.store('alfagok').getGameID(); Alpine.store('alfagok').getGameID();
Alpine.store('alfagok').testLocalStorage();
}) })

View File

@@ -47,7 +47,7 @@
<p><b x-text="$store.alfagok.resultGameID"></b></p> <p><b x-text="$store.alfagok.resultGameID"></b></p>
<p x-text="$store.alfagok.resultGuesses"></p> <p x-text="$store.alfagok.resultGuesses"></p>
<p x-text="$store.alfagok.resultTimeTaken"></p> <p x-text="$store.alfagok.resultTimeTaken"></p>
<p>🔗 <span style="color:var(--blue)">alfagok.diginaut.net</span></p> <p>🔗 <span class="link">alfagok.diginaut.net</span></p>
</div> </div>
</div> </div>
<div id="copyresults"></div> <div id="copyresults"></div>