import { Lang } from "@/constants/languages"

import { generateTag, generateTags } from "@/utils/generateTag"

import type { Edges } from "@/types/requests/utils/edges"
import type { NodeRefs } from "@/types/requests/utils/refs"
import type { BreadcrumbsRefsSchema } from "@/types/trpc/routers/contentstack/breadcrumbs"

export const affix = "breadcrumbs"

// TODO: Make these editable in CMS?
export const homeBreadcrumbs: {
  [key in keyof typeof Lang]: { href: string; title: string; uid: string }
} = {
  [Lang.da]: {
    href: "/da",
    title: "Hjem",
    uid: "da",
  },
  [Lang.de]: {
    href: "/de",
    title: "Heim",
    uid: "de",
  },
  [Lang.en]: {
    href: "/en",
    title: "Home",
    uid: "en",
  },
  [Lang.fi]: {
    href: "/fi",
    title: "Koti",
    uid: "fi",
  },
  [Lang.no]: {
    href: "/no",
    title: "Hjem",
    uid: "no",
  },
  [Lang.sv]: {
    href: "/sv",
    title: "Hem",
    uid: "sv",
  },
}

export function getConnections(data: BreadcrumbsRefsSchema) {
  const connections: Edges<NodeRefs>[] = []

  if (data.web?.breadcrumbs) {
    connections.push(data.web.breadcrumbs.parentsConnection)
  }

  return connections
}

export function getTags(data: BreadcrumbsRefsSchema, lang: Lang) {
  const connections = getConnections(data)
  const tags = generateTags(lang, connections)
  tags.push(generateTag(lang, data.system.uid, affix))
  return tags
}
