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:
@@ -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} />
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user