rpg-cards-ng/src/storage.ts

47 lines
950 B
TypeScript

const KEY = 'rpg-cards-ng'
export default class StorageHandler {
private cache: StoredStuff = {
decks: [],
defaults: {
color: '#3C1C00'
}
}
constructor () {
if (localStorage.getItem(KEY) === undefined) this.persist()
const stored = localStorage.getItem(KEY)
if (stored !== null) this.cache = JSON.parse(stored)
}
get decks (): Deck[] {
return this.cache.decks
}
set decks (decks: Deck[]) {
this.cache.decks = decks
this.persist()
}
saveDeck (newDeck: Deck) {
const decks = this.cache.decks
const index = decks.findIndex(deck => deck.id === newDeck.id)
if (index >= 0) decks[index] = newDeck
else decks.push(newDeck)
this.persist()
}
findDeck (id: string): Deck | null {
for (const deck of this.cache.decks) {
if (deck.id === id) return deck
}
return null
}
persist () {
localStorage.setItem(KEY, JSON.stringify(this.cache))
}
}