iPuzzle/js/state/StorageManager.js

31 lines
729 B
JavaScript

/* global PuzzleState */
class StorageManager {
static _key(roomCode) {
return `ipuzzle_${roomCode}`;
}
static save(state) {
try {
localStorage.setItem(StorageManager._key(state.roomCode), JSON.stringify(state.serialize()));
} catch (e) {
console.warn('iPuzzle: localStorage save failed', e);
}
}
static load(roomCode) {
try {
const raw = localStorage.getItem(StorageManager._key(roomCode));
if (!raw) return null;
return PuzzleState.deserialize(JSON.parse(raw));
} catch (e) {
console.warn('iPuzzle: localStorage load failed', e);
return null;
}
}
static remove(roomCode) {
localStorage.removeItem(StorageManager._key(roomCode));
}
}