32 lines
987 B
TypeScript
32 lines
987 B
TypeScript
import { removeMultipleSlashes } from "@/utils/url"
|
|
|
|
import { InternalExternalLink, InternalExternalLinkData } from "./output"
|
|
|
|
export function makeLinkObjectFromInternalExternalLink(
|
|
data: InternalExternalLinkData | undefined
|
|
): InternalExternalLink | null {
|
|
if (!data) {
|
|
return null
|
|
}
|
|
|
|
const linkConnectionNode =
|
|
data.page_link.linkConnection.edges[0]?.node || null
|
|
const isExternalLink = data.is_external_link && data.external_link.href
|
|
const isOriginalLink = linkConnectionNode?.web?.original_url
|
|
const externalLink = data.external_link
|
|
const href = isExternalLink
|
|
? externalLink.href
|
|
: linkConnectionNode?.web?.original_url ||
|
|
removeMultipleSlashes(
|
|
`/${linkConnectionNode.system.locale}/${linkConnectionNode.url}`
|
|
)
|
|
const title = isExternalLink ? externalLink.title : data.page_link.link_title
|
|
|
|
return {
|
|
openInNewTab: data.open_in_new_tab,
|
|
title,
|
|
href,
|
|
isExternal: !!(isExternalLink || isOriginalLink),
|
|
}
|
|
}
|