Files
NowChess-Frontend/src/app/services/game-history.service.ts
T
2026-05-14 23:54:26 +00:00

40 lines
930 B
TypeScript

import { Injectable } from '@angular/core';
const STORAGE_KEY = 'nowchess.games';
const MAX_ENTRIES = 50;
interface GameEntry {
id: string;
addedAt: number;
}
@Injectable({ providedIn: 'root' })
export class GameHistoryService {
recordGame(gameId: string): void {
const entries = this.load().filter((e) => e.id !== gameId);
entries.unshift({ id: gameId, addedAt: Date.now() });
this.save(entries.slice(0, MAX_ENTRIES));
}
getGameIds(): string[] {
return this.load().map((e) => e.id);
}
removeGame(gameId: string): void {
this.save(this.load().filter((e) => e.id !== gameId));
}
private load(): GameEntry[] {
try {
const raw = localStorage.getItem(STORAGE_KEY);
return raw ? (JSON.parse(raw) as GameEntry[]) : [];
} catch {
return [];
}
}
private save(entries: GameEntry[]): void {
localStorage.setItem(STORAGE_KEY, JSON.stringify(entries));
}
}