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

View File

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

View File

@@ -45,13 +45,15 @@ export function getPreambleText(
return defaultPreamble return defaultPreamble
} }
export function isValidSeoFilter( export function getActiveSeoFilter(
seoFilters: DestinationFilters, seoFilters: DestinationFilters,
filterFromUrl?: string filterFromUrl?: string
) { ) {
const flattenedSeoFilters = Object.values(seoFilters).flat() const flattenedSeoFilters = Object.values(seoFilters).flat()
if (!filterFromUrl || !flattenedSeoFilters.length) { 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
)
} }