"use client";
import { useCallback } from "react";
import { useQuery } from "@tanstack/react-query";
import { useAppLanguage } from "@/components/providers/app-language-provider";
import { fetchDashboardDictionary } from "@/features/cdc-gpsf/dashboard/dashboard-translations";

export function useCombinedMatrixLabels() {
  const { language } = useAppLanguage();
  const lang = language === "en" ? "en" : "kh";
  const { data } = useQuery({
    queryKey: ["translations", "cdcgpsf", "issue_matrix_rgc_decision", lang],
    queryFn: ({ signal }) => fetchDashboardDictionary("cdcgpsf", lang, signal, "issue_matrix_rgc_decision"),
    staleTime: 30_000, refetchOnMount: "always", refetchOnWindowFocus: "always",
  });
  const translate = useCallback((key: string, fallback: string) => data?.[key]?.trim() || fallback, [data]);
  function resolve<T extends object>(defaults: T, prefix: string): T {
    return Object.fromEntries(Object.entries(defaults).map(([key, value]) =>
      [key, typeof value === "string" ? translate(prefix + "." + key.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase(), value) : value])) as T;
  }
  return { translate, resolve };
}
