/**
 * Sons et vidéos rattachés à une entrée d'annuaire (déposés via l'Extranet).
 */

import http from '@/http';

export interface Son {
  asoId: number;
  titre: string | null;
  taille: number;
  ordre: number;
  url: string | null;
}

export interface Video {
  aviId: number;
  titre: string;
  sousTitre: string | null;
  credit: string | null;
  youtubeId: string;
  url: string;
  embedUrl: string;
  ordre: number;
}

async function membres<T>(url: string): Promise<T[]> {
  try {
    const response = await http.get(url);
    const liste: unknown = response.data?.['hydra:member'];

    return Array.isArray(liste) ? (liste as T[]) : [];
  } catch {
    return [];
  }
}

/** Sons de l'entrée dans l'ordre choisi par l'artiste ; vide si l'API ne répond pas. */
export function getSons(aenId: number | string): Promise<Son[]> {
  return membres<Son>(`/annuaire_entrees/${aenId}/sons`);
}

/** Vidéos YouTube de l'entrée dans l'ordre choisi ; vide si l'API ne répond pas. */
export function getVideos(aenId: number | string): Promise<Video[]> {
  return membres<Video>(`/annuaire_entrees/${aenId}/videos`);
}
