Merged in fix/adjust-datalayer (pull request #62)

Fix/adjust datalayer

Approved-by: Michael Zetterberg
This commit is contained in:
Arvid Norlin
2024-03-08 14:06:25 +00:00
committed by Michael Zetterberg
5 changed files with 40 additions and 5 deletions

View File

@@ -2,6 +2,7 @@ import { notFound } from "next/navigation"
import { request } from "@/lib/request"
import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql"
import { GetCurrentBlockPageTrackingData } from "@/lib/graphql/Query/CurrentBlockPageTrackingData.graphql"
import ContentPage from "@/components/Current/ContentPage"
import Header from "@/components/Current/Header"
@@ -9,6 +10,7 @@ import Tracking from "@/components/Current/Tracking"
import type { PageArgs, LangParams, UriParams } from "@/types/params"
import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage"
import { TrackingData } from "@/types/requests/trackingData"
export default async function CurrentContentPage({
params,
@@ -26,7 +28,7 @@ export default async function CurrentContentPage({
url: searchParams.uri,
},
{
tags: [`${searchParams.uri}-${params.lang}`]
tags: [`${searchParams.uri}-${params.lang}`],
}
)
@@ -36,11 +38,24 @@ export default async function CurrentContentPage({
console.log("SearchParams URI: ", searchParams.uri)
throw new Error("Not found")
}
// This is currently to be considered a temporary solution to provide the tracking with a few values in english to align with existing reports
const pageDataForTracking = await request<TrackingData>(
GetCurrentBlockPageTrackingData,
{ uid: response.data.all_current_blocks_page.items[0].system.uid },
{
tags: [`${searchParams.uri}-en`],
}
)
const pageData = response.data.all_current_blocks_page.items[0]
const trackingData = {
lang: params.lang,
publishedDate: pageData.system.updated_at,
createdDate: pageData.system.created_at,
pageId: pageData.system.uid,
englishUrl: pageDataForTracking.data?.current_blocks_page.url,
}
return (

View File

@@ -9,9 +9,13 @@ import { usePathname, useSearchParams } from "next/navigation"
import { useEffect, useState } from "react"
function createPageObject(trackingData: TrackingData) {
const englishSegments = trackingData.englishUrl
? trackingData.englishUrl.split("/").filter((seg?: string) => seg)
: null
const [lang, ...segments] = trackingData.pathName
.split("/")
.filter((v: string) => v)
.filter((seg: string) => seg)
function getSiteSections(segments: string[]): SiteSectionObject {
/*
@@ -39,10 +43,12 @@ function createPageObject(trackingData: TrackingData) {
}
return sitesections
}
const sitesections = getSiteSections(segments)
const sitesections = englishSegments
? getSiteSections(englishSegments)
: getSiteSections(segments)
const { host: domain, href: fullurl, origin } = window.location
const page_obj = {
pagename: segments.join("|"),
pagename: englishSegments ? englishSegments.join("|") : segments.join("|"),
pagetype: "contentpage",
pageurl: origin + trackingData.pathName,
fullurl,
@@ -53,7 +59,7 @@ function createPageObject(trackingData: TrackingData) {
querystring: trackingData.queryString || "",
pageid: trackingData.pageId,
// sessionid: "<unique identifier of session>", // base on what?
domainlanguage: lang,
domainlanguage: trackingData.lang ? trackingData.lang : lang,
hotelbrand: "scandic",
siteversion: "new-web",
...sitesections,

View File

@@ -0,0 +1,5 @@
query GetCurrentBlockPageTrackingData($uid: String!) {
current_blocks_page(uid: $uid, locale: "en") {
url
}
}

View File

@@ -1,12 +1,18 @@
import { Lang } from "../lang"
export type TrackingProps = {
pageData: {
pageId: string
createdDate: string
publishedDate: string
englishUrl?: string
lang: Lang
}
}
export type TrackingData = {
lang: Lang
englishUrl?: string
pathName: string
queryString: string
pageId: string

View File

@@ -0,0 +1,3 @@
export type TrackingData = {
current_blocks_page: { url: string; title: string }
}