export const ARTICLE_FILTER_LOCALES = ["en", "ar", "tr"] as const
export type ArticleFilterLocale = (typeof ARTICLE_FILTER_LOCALES)[number]

type ArticleLocaleContent = {
  title?: string
  subTitle?: string | null
  author?: string
  content?: string
  tags?: string[]
}

/** True when an article has meaningful content for a locale (admin list language filter). */
export function articleHasLocaleContent(localeData: ArticleLocaleContent): boolean {
  if (typeof localeData.title === "string" && localeData.title.trim()) return true
  if (typeof localeData.subTitle === "string" && localeData.subTitle.trim()) return true
  if (typeof localeData.author === "string" && localeData.author.trim()) return true
  if (typeof localeData.content === "string" && localeData.content.trim()) return true
  if (Array.isArray(localeData.tags) && localeData.tags.length > 0) return true
  return false
}

export function getArticleAvailableLocales(
  translations: Partial<Record<ArticleFilterLocale, ArticleLocaleContent>>
): ArticleFilterLocale[] {
  return ARTICLE_FILTER_LOCALES.filter((locale) => {
    const localeData = translations[locale]
    return localeData ? articleHasLocaleContent(localeData) : false
  })
}
