Created card and started dashboard
This commit is contained in:
parent
b1946813a6
commit
15e2160502
76
apollo-frontend/src/app/userdata.service.ts
Normal file
76
apollo-frontend/src/app/userdata.service.ts
Normal file
@ -0,0 +1,76 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Card, DbService } from './db.service';
|
||||
|
||||
export enum Medal {
|
||||
None,
|
||||
Bronze,
|
||||
Silfer,
|
||||
Gold,
|
||||
}
|
||||
export interface MinigameUserdata {
|
||||
played: boolean;
|
||||
medal: Medal;
|
||||
}
|
||||
export interface MinigameUserdataWithId extends MinigameUserdata {
|
||||
cardId: string;
|
||||
}
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class UserdataService {
|
||||
getMinigameUserdata(id: string): MinigameUserdata | undefined {
|
||||
if (!localStorage['minigame-' + id]) {
|
||||
const a = {
|
||||
played: false,
|
||||
medal: Medal.None,
|
||||
cardId: id,
|
||||
};
|
||||
|
||||
localStorage['minigame-' + id] = JSON.stringify(a);
|
||||
return a;
|
||||
}
|
||||
return localStorage['minigame-' + id] as MinigameUserdata | undefined;
|
||||
}
|
||||
getAllMinigameUserdata(): MinigameUserdata[] {
|
||||
const minigames: MinigameUserdata[] = [];
|
||||
|
||||
for (const key in localStorage) {
|
||||
if (Object.prototype.hasOwnProperty.call(localStorage, key)) {
|
||||
const minigameUserdata = JSON.parse(localStorage[key]);
|
||||
if (key.startsWith('minigame-')) minigames.push(minigameUserdata);
|
||||
}
|
||||
}
|
||||
|
||||
return minigames;
|
||||
}
|
||||
|
||||
getOwnedCardIds(): string[] {
|
||||
const cardsRaw = localStorage.cards;
|
||||
if (cardsRaw) return JSON.parse(cardsRaw);
|
||||
else {
|
||||
localStorage.cards = [];
|
||||
return [];
|
||||
}
|
||||
}
|
||||
getOwnedCards(): Card[] {
|
||||
return this.getOwnedCardIds().map(v => this.db.getCard(v));
|
||||
}
|
||||
|
||||
saveMinigameUserdata(id: string, userdata: MinigameUserdata): void {
|
||||
const saved = {...userdata, cardId: id};
|
||||
|
||||
localStorage['minigame-' + id] = saved;
|
||||
}
|
||||
addCard(id: string): void {
|
||||
let saved = this.getOwnedCardIds();
|
||||
if (saved.includes(id)) throw new Error("Can't add a card that already exists!");
|
||||
saved = [...saved, id];
|
||||
|
||||
localStorage.cards = saved;
|
||||
}
|
||||
|
||||
constructor(
|
||||
private db: DbService,
|
||||
) { }
|
||||
}
|
Loading…
Reference in New Issue
Block a user