retro achievement integration
This commit is contained in:
@@ -14,6 +14,43 @@ export interface Platform {
|
||||
iconUrl?: string;
|
||||
}
|
||||
|
||||
export interface RAAchievement {
|
||||
ra_id: number | null;
|
||||
title: string | null;
|
||||
description: string | null;
|
||||
points: number | null;
|
||||
num_awarded: number | null;
|
||||
num_awarded_hardcore: number | null;
|
||||
badge_id: string | null;
|
||||
}
|
||||
|
||||
export interface RomRAMetadata {
|
||||
first_release_date?: number | null;
|
||||
genres?: string[];
|
||||
companies?: string[];
|
||||
achievements: RAAchievement[];
|
||||
}
|
||||
|
||||
export interface EarnedAchievement {
|
||||
id: string;
|
||||
date: string;
|
||||
date_hardcore?: string;
|
||||
}
|
||||
|
||||
export interface RAProgressionResult {
|
||||
rom_ra_id: number | null;
|
||||
max_possible: number | null;
|
||||
num_awarded: number | null;
|
||||
num_awarded_hardcore: number | null;
|
||||
most_recent_awarded_date?: string | null;
|
||||
earned_achievements: EarnedAchievement[];
|
||||
}
|
||||
|
||||
export interface RAProgression {
|
||||
total: number;
|
||||
results: RAProgressionResult[];
|
||||
}
|
||||
|
||||
export interface DetailedGame extends Game {
|
||||
summary?: string;
|
||||
developers?: string[];
|
||||
@@ -35,6 +72,8 @@ export interface DetailedGame extends Game {
|
||||
platformId?: number;
|
||||
videoUrl?: string; // Direct video link
|
||||
youtubeId?: string; // YouTube ID for embed
|
||||
ra_id?: number;
|
||||
merged_ra_metadata?: RomRAMetadata;
|
||||
}
|
||||
|
||||
export interface RommCollection {
|
||||
@@ -51,6 +90,8 @@ export interface UserProfile {
|
||||
username: string;
|
||||
avatarUrl?: string;
|
||||
roleName: string;
|
||||
ra_username?: string | null;
|
||||
ra_progression?: RAProgression | null;
|
||||
}
|
||||
|
||||
// Function to safely extract base URL
|
||||
@@ -341,6 +382,8 @@ export const rommApiClient = {
|
||||
platformId: json.platform_id,
|
||||
videoUrl: getFullImageUrl(json.url_video || json.ss_metadata?.video_url),
|
||||
youtubeId: json.youtube_video_id || json.igdb_metadata?.youtube_video_id || json.launchbox_metadata?.youtube_video_id,
|
||||
ra_id: json.ra_id,
|
||||
merged_ra_metadata: json.merged_ra_metadata,
|
||||
screenshots: Array.from(new Set([
|
||||
...(json.merged_screenshots || []).map((s: string) => getFullImageUrl(s)),
|
||||
...(json.screenshots || []).map((s: any) => s.url ? getFullImageUrl(s.url) || '' : ''),
|
||||
@@ -475,6 +518,8 @@ export const rommApiClient = {
|
||||
username: json.username || 'Unknown',
|
||||
avatarUrl: constructedAvatarUrl,
|
||||
roleName: json.role?.role_name || json.role?.name || String(json.role) || 'User',
|
||||
ra_username: json.ra_username,
|
||||
ra_progression: json.ra_progression,
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user