import {addonManager} from './addonManager';
import {ContentType, MetaDetail, MetaPreview} from './addonTypes';
import {AddonClient} from './addonClient';

export const CINEMETA_ID = 'com.linvo.cinemeta';
export const CINEMETA_URL = 'https://v3-cinemeta.strem.io/manifest.json';

export async function getCinemetaMeta(
  type: ContentType,
  id: string,
): Promise<MetaDetail | null> {
  return addonManager.getMetaFromFirst(type, id);
}

export async function getCinemetaCatalog(
  type: ContentType,
  catalogId: string,
  extra?: Record<string, string>,
): Promise<MetaPreview[]> {
  const addons = addonManager.getInstalledAddons();
  const cinemeta = addons.find(a => a.manifest.id === CINEMETA_ID);
  if (!cinemeta) return [];

  try {
    const client = new AddonClient(cinemeta.transportUrl, cinemeta.manifest);
    const response = await client.getCatalog(type, catalogId, extra);
    return response.metas || [];
  } catch {
    return [];
  }
}
