import { PROFILE_PAGE_LABELS } from './profile-page-labels';

export type SharedProfilePage = keyof typeof PROFILE_PAGE_LABELS;
export type SharedProfileText<P extends SharedProfilePage> = {
  [K in keyof typeof PROFILE_PAGE_LABELS[P]]: string;
};

export function profileLabelKey(key: string) {
  return key.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
}

export function resolveSharedProfileLabels<P extends SharedProfilePage>(
  page: P,
  language: string,
  dictionary: Record<string, string>,
): SharedProfileText<P> {
  return Object.fromEntries(Object.entries(PROFILE_PAGE_LABELS[page]).map(([key, defaults]) => {
    const translated = dictionary[profileLabelKey(key)];
    return [key, typeof translated === 'string' && translated.trim()
      ? translated : defaults[language === 'en' ? 0 : 1]];
  })) as SharedProfileText<P>;
}
