/*
 * 공통코드 조회 훅 — 코드그룹의 코드 목록을 로드(드롭다운 등 공용). Phase B §5B 공통 레이어.
 */
import { useEffect, useState } from 'react';
import { commonApi, type CodeDto } from '@/api/common';

export function useCommonCodes(grpCode: string): {
  codes: CodeDto[];
  loading: boolean;
  error: string | null;
} {
  const [codes, setCodes] = useState<CodeDto[]>([]);
  const [loading, setLoading] = useState<boolean>(true);
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    let alive = true;
    setLoading(true);
    setError(null);
    commonApi
      .codes(grpCode)
      .then((rows) => {
        if (alive) setCodes(rows);
      })
      .catch((e: Error) => {
        if (alive) setError(e.message);
      })
      .finally(() => {
        if (alive) setLoading(false);
      });
    return () => {
      alive = false;
    };
  }, [grpCode]);

  return { codes, loading, error };
}
