/** * @copyright 2026 NHCarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import { Injectable, inject } from '@angular/core'; import { AchievementDefinition, AchievementProgress, UserAchievementSummary, } from '@library/shared-types'; import { Observable } from 'rxjs'; import { ApiService } from './api.service'; @Injectable({ providedIn: 'root', }) export class AchievementService { private readonly api = inject(ApiService); /** * Get all achievement definitions. */ getAchievementDefinitions(): Observable { return this.api.get('/achievements/definitions'); } /** * Get a specific achievement definition by key. */ getAchievementDefinition(key: string): Observable { return this.api.get(`/achievements/definitions/${key}`); } /** * Get current user's achievement summary. */ getCurrentUserSummary(): Observable { return this.api.get('/achievements/summary'); } /** * Get current user's achievement progress. */ getCurrentUserProgress(): Observable { return this.api.get('/achievements/progress'); } /** * Get another user's achievement summary. */ getUserSummary(userId: string): Observable { return this.api.get(`/achievements/users/${userId}/summary`); } /** * Get another user's achievement progress. */ getUserProgress(userId: string): Observable { return this.api.get(`/achievements/users/${userId}/progress`); } }