/** * @copyright 2026 NHCarrigan * @license Naomi's Public License * @author Naomi Carrigan */ import { Injectable, inject } from '@angular/core'; import { Observable } from 'rxjs'; import type { LeaderboardResponse, SuggestionsLeaderboard, LikesLeaderboard, CommentsLeaderboard, OverallLeaderboard, } from '@library/shared-types'; import { ApiService } from './api.service'; @Injectable({ providedIn: 'root' }) export class LeaderboardService { private apiService = inject(ApiService); /** * Get all leaderboards at once. */ getAllLeaderboards(limit = 25): Observable { return this.apiService.get(`/leaderboard?limit=${limit}`); } /** * Get top users by suggestions. */ getTopSuggestions(limit = 25): Observable { return this.apiService.get(`/leaderboard/suggestions?limit=${limit}`); } /** * Get top users by likes. */ getTopLikes(limit = 25): Observable { return this.apiService.get(`/leaderboard/likes?limit=${limit}`); } /** * Get top users by comments. */ getTopComments(limit = 25): Observable { return this.apiService.get(`/leaderboard/comments?limit=${limit}`); } /** * Get overall leaderboard. */ getOverallLeaderboard(limit = 25): Observable { return this.apiService.get(`/leaderboard/overall?limit=${limit}`); } }