Merge branch 'master' into feature/tracking

This commit is contained in:
Linus Flood
2024-11-25 10:14:12 +01:00
181 changed files with 3840 additions and 1723 deletions

View File

@@ -1,59 +1,5 @@
import { serverClient } from "@/lib/trpc/server"
export async function generateMetadata() {
const metaData = await serverClient().contentstack.metaData.get()
if (!metaData) {
return {
title: "",
description: "",
openGraph: {
images: [],
},
}
}
const title = metaData?.breadcrumbsTitle ?? metaData?.title ?? ""
const description = metaData?.description ?? ""
const images =
metaData?.imageConnection?.edges?.map((edge) => ({
url: edge.node.url,
})) || []
return {
title,
description,
openGraph: {
images,
},
}
}
export async function generateMetadataAccountPage() {
const metaData = await serverClient().contentstack.accountPage.metadata.get()
if (!metaData) {
return {
title: "",
description: "",
openGraph: {
images: [],
},
}
}
const title = metaData?.breadcrumbsTitle ?? metaData?.title ?? ""
const description = metaData?.description ?? ""
const images =
metaData?.imageConnection?.edges?.map((edge) => ({
url: edge.node.url,
})) || []
return {
title,
description,
openGraph: {
images,
},
}
return await serverClient().contentstack.metadata.get()
}

27
utils/jsonSchemas.ts Normal file
View File

@@ -0,0 +1,27 @@
import { env } from "@/env/server"
import type { BreadcrumbList, ListItem, WithContext } from "schema-dts"
import type { Breadcrumbs } from "@/types/trpc/routers/contentstack/breadcrumbs"
export function generateBreadcrumbsSchema(breadcrumbs: Breadcrumbs) {
const itemListElement: ListItem[] = breadcrumbs.map((item, index) => ({
"@type": "ListItem",
position: index + 1,
name: item.title,
// Only include "item" if "href" exists; otherwise, omit it
...(item.href ? { item: `${env.PUBLIC_URL}${item.href}` } : {}),
}))
const jsonLd: WithContext<BreadcrumbList> = {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement,
}
return {
key: "breadcrumbs",
type: "application/ld+json",
jsonLd,
}
}

19
utils/merge.ts Normal file
View File

@@ -0,0 +1,19 @@
import merge from "deepmerge"
export function arrayMerge(
target: any[],
source: any[],
options: merge.ArrayMergeOptions
) {
const destination = target.slice()
source.forEach((item, index) => {
if (typeof destination[index] === "undefined") {
destination[index] = options.cloneUnlessOtherwiseSpecified(item, options)
} else if (options?.isMergeableObject(item)) {
destination[index] = merge(target[index], item, options)
} else if (target.indexOf(item) === -1) {
destination.push(item)
}
})
return destination
}

11
utils/safeTry.ts Normal file
View File

@@ -0,0 +1,11 @@
export type SafeTryResult<T> = Promise<
[T, undefined] | [undefined, Error | unknown]
>
export async function safeTry<T>(func: Promise<T>): SafeTryResult<T> {
try {
return [await func, undefined]
} catch (err) {
return [undefined, err]
}
}