@@ -46,11 +47,9 @@ export default function SidebarContentWrapper({
{heading}
- {!filterFromUrl ? (
-
- {preamble}
-
- ) : null}
+
+ {preamble}
+
{children}
diff --git a/apps/scandic-web/components/ContentType/DestinationPage/utils.ts b/apps/scandic-web/components/ContentType/DestinationPage/utils.ts
index da1f3e117..4e82acdef 100644
--- a/apps/scandic-web/components/ContentType/DestinationPage/utils.ts
+++ b/apps/scandic-web/components/ContentType/DestinationPage/utils.ts
@@ -1,81 +1,41 @@
-import type {
- CategorizedHotelFilters,
- HotelFilter,
-} from "@scandic-hotels/trpc/types/hotel"
+import type { DestinationFilter } from "@scandic-hotels/trpc/types/destinationsData"
import type { IntlShape } from "react-intl"
-export function getCityHeadingText(
+export function getHeadingText(
intl: IntlShape,
location: string,
- allFilters: CategorizedHotelFilters,
- filterFromUrl: HotelFilter | null
+ pageType: "country" | "city",
+ activeSeoFilter: DestinationFilter | null
) {
- if (filterFromUrl) {
- const facilityFilter = allFilters.facilityFilters.find(
- (f) => f.id === filterFromUrl.id
- )
- const surroudingsFilter = allFilters.surroundingsFilters.find(
- (f) => f.id === filterFromUrl.id
- )
+ const defaultHeading =
+ pageType === "country"
+ ? intl.formatMessage(
+ {
+ defaultMessage: "Destinations in {location}",
+ },
+ { location }
+ )
+ : intl.formatMessage(
+ {
+ defaultMessage: "Hotels in {location}",
+ },
+ { location }
+ )
- if (facilityFilter) {
- return intl.formatMessage(
- {
- defaultMessage: "Hotels with {filter} in {location}",
- },
- { location, filter: facilityFilter.name }
- )
- } else if (surroudingsFilter) {
- return intl.formatMessage(
- {
- defaultMessage: "Hotels near {filter} in {location}",
- },
- { location, filter: surroudingsFilter.name }
- )
- }
+ if (activeSeoFilter?.heading) {
+ return activeSeoFilter.heading
}
- return intl.formatMessage(
- {
- defaultMessage: "Hotels in {location}",
- },
- { location }
- )
+
+ return defaultHeading
}
-export function getCountryHeadingText(
- intl: IntlShape,
- location: string,
- allFilters: CategorizedHotelFilters,
- filterFromUrl: HotelFilter | null
+export function getPreambleText(
+ defaultPreamble: string,
+ activeSeoFilter: DestinationFilter | null
) {
- if (filterFromUrl) {
- const facilityFilter = allFilters.facilityFilters.find(
- (f) => f.id === filterFromUrl.id
- )
- const surroudingsFilter = allFilters.surroundingsFilters.find(
- (f) => f.id === filterFromUrl.id
- )
-
- if (facilityFilter) {
- return intl.formatMessage(
- {
- defaultMessage: "Destinations with {filter} in {location}",
- },
- { location, filter: facilityFilter.name }
- )
- } else if (surroudingsFilter) {
- return intl.formatMessage(
- {
- defaultMessage: "Destinations near {filter} in {location}",
- },
- { location, filter: surroudingsFilter.name }
- )
- }
+ if (activeSeoFilter) {
+ return activeSeoFilter.preamble || null
}
- return intl.formatMessage(
- {
- defaultMessage: "Destinations in {location}",
- },
- { location }
- )
+
+ return defaultPreamble
}
diff --git a/apps/scandic-web/stores/destination-data/helper.ts b/apps/scandic-web/stores/destination-data/helper.ts
index 16bb98c34..a332b1621 100644
--- a/apps/scandic-web/stores/destination-data/helper.ts
+++ b/apps/scandic-web/stores/destination-data/helper.ts
@@ -6,6 +6,7 @@ import {
} from "@scandic-hotels/trpc/types/hotel"
import type { DestinationCityListItem } from "@scandic-hotels/trpc/types/destinationCityPage"
+import type { DestinationFilter } from "@scandic-hotels/trpc/types/destinationsData"
const HOTEL_SORTING_STRATEGIES: Partial<
Record<
@@ -85,3 +86,13 @@ export function getBasePathNameWithoutFilters(
return pathname
}
+
+export function getActiveDestinationFilter(
+ filterFromUrl: HotelFilter | null,
+ allSeoFilters: DestinationFilter[]
+) {
+ if (!filterFromUrl) {
+ return null
+ }
+ return allSeoFilters.find((f) => f.filter.id === filterFromUrl.id) || null
+}
diff --git a/apps/scandic-web/stores/destination-data/index.ts b/apps/scandic-web/stores/destination-data/index.ts
index f48824ca8..06f1d18ef 100644
--- a/apps/scandic-web/stores/destination-data/index.ts
+++ b/apps/scandic-web/stores/destination-data/index.ts
@@ -12,6 +12,7 @@ import {
} from "@/utils/tracking/destinationPage"
import {
+ getActiveDestinationFilter,
getBasePathNameWithoutFilters,
getFilteredCities,
getFilteredHotels,
@@ -19,6 +20,7 @@ import {
isValidSortOption,
} from "./helper"
+import type { DestinationFilter } from "@scandic-hotels/trpc/types/destinationsData"
import type { HotelFilter } from "@scandic-hotels/trpc/types/hotel"
import type {
@@ -38,9 +40,11 @@ export function createDestinationDataStore({
const defaultSort =
sortItems.find((s) => s.isDefault)?.value ?? sortItems[0].value
const allFilters = mergeHotelFiltersAndSeoFilters(hotelFilters, seoFilters)
+ const allSeoFilters = Object.values(seoFilters).flat()
const allFlattenedFilters = Object.values(allFilters).flat