Merged in fix/BOOK-438-breadcrumbs-seo-filter (pull request #3103)

feat(BOOK-438): add breadcrumbs on seofilter pages

* feat(BOOK-438): add breadcrumbs on seofilter pages

* feat(BOOK-438): remove unused function


Approved-by: Hrishikesh Vaipurkar
This commit is contained in:
Bianca Widstam
2025-11-07 13:58:09 +00:00
parent 5770dcdd9c
commit e08d24cc75
3 changed files with 15 additions and 9 deletions

View File

@@ -29,7 +29,7 @@ import DestinationPageSidePeek from "../Sidepeek"
import StaticMap from "../StaticMap"
import TopImages from "../TopImages"
import DestinationTracking from "../Tracking"
import { isValidSeoFilter } from "../utils"
import { getActiveSeoFilter } from "../utils"
import CityMap from "./CityMap"
import DestinationCityPageSkeleton from "./DestinationCityPageSkeleton"
@@ -66,7 +66,9 @@ export default async function DestinationCityPage({
seo_filters,
} = destinationCityPage
if (!isValidSeoFilter(seo_filters, filterFromUrl)) {
const activeSeoFilter = getActiveSeoFilter(seo_filters, filterFromUrl)
if (filterFromUrl && !activeSeoFilter) {
const updatedPathname = pathname.replace(`/${filterFromUrl}`, "")
return redirect(`${updatedPathname}${isMapView ? "?view=map" : ""}`)
}
@@ -120,7 +122,7 @@ export default async function DestinationCityPage({
<div className={styles.pageContainer}>
<div className={styles.header}>
<Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs />
<Breadcrumbs subpageTitle={activeSeoFilter?.filter.name} />
</Suspense>
{images?.length ? (
<TopImages images={images} destinationName={city.name} />

View File

@@ -30,7 +30,7 @@ import DestinationPageSidePeek from "../Sidepeek"
import StaticMap from "../StaticMap"
import TopImages from "../TopImages"
import DestinationTracking from "../Tracking"
import { isValidSeoFilter } from "../utils"
import { getActiveSeoFilter } from "../utils"
import CountryMap from "./CountryMap"
import DestinationCountryPageSkeleton from "./DestinationCountryPageSkeleton"
@@ -67,7 +67,9 @@ export default async function DestinationCountryPage({
seo_filters,
} = destinationCountryPage
if (!isValidSeoFilter(seo_filters, filterFromUrl)) {
const activeSeoFilter = getActiveSeoFilter(seo_filters, filterFromUrl)
if (filterFromUrl && !activeSeoFilter) {
const updatedPathname = pathname.replace(`/${filterFromUrl}`, "")
return redirect(`${updatedPathname}${isMapView ? "?view=map" : ""}`)
}
@@ -132,7 +134,7 @@ export default async function DestinationCountryPage({
<div className={styles.pageContainer}>
<div className={styles.header}>
<Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs />
<Breadcrumbs subpageTitle={activeSeoFilter?.filter.name} />
</Suspense>
{images?.length ? (
<TopImages

View File

@@ -45,13 +45,15 @@ export function getPreambleText(
return defaultPreamble
}
export function isValidSeoFilter(
export function getActiveSeoFilter(
seoFilters: DestinationFilters,
filterFromUrl?: string
) {
const flattenedSeoFilters = Object.values(seoFilters).flat()
if (!filterFromUrl || !flattenedSeoFilters.length) {
return true
return null
}
return flattenedSeoFilters.some((f) => f.filter.slug === filterFromUrl)
return (
flattenedSeoFilters.find((f) => f.filter.slug === filterFromUrl) || null
)
}