From 15e2160502754ffe6f3830eb7a6296d364f9bb7d Mon Sep 17 00:00:00 2001 From: Kaloian Venkov Date: Fri, 12 Mar 2021 11:15:45 +0200 Subject: [PATCH] Created card and started dashboard --- apollo-frontend/src/app/userdata.service.ts | 76 +++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 apollo-frontend/src/app/userdata.service.ts diff --git a/apollo-frontend/src/app/userdata.service.ts b/apollo-frontend/src/app/userdata.service.ts new file mode 100644 index 0000000..ac30c45 --- /dev/null +++ b/apollo-frontend/src/app/userdata.service.ts @@ -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, + ) { } +}