import {useEffect, useState} from 'react';
import {addonManager} from '../api/addonManager';
import {MetaDetail, MetaPreview} from '../api/addonTypes';

export function useMeta(type: string, id: string) {
  const [meta, setMeta] = useState<MetaDetail | null>(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    setLoading(true);
    setError(null);
    addonManager
      .getMetaFromFirst(type as any, id)
      .then(m => {
        setMeta(m);
        setLoading(false);
      })
      .catch(e => {
        setError(String(e));
        setLoading(false);
      });
  }, [type, id]);

  return {meta, loading, error};
}

export function useCatalog(addonId: string, type: string, catalogId: string) {
  const [items, setItems] = useState<MetaPreview[]>([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    addonManager
      .getCatalog(addonId, type as any, catalogId)
      .then(setItems)
      .catch(() => setItems([]))
      .finally(() => setLoading(false));
  }, [addonId, type, catalogId]);

  return {items, loading};
}
