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));
  }
}
